java web 过滤器 这个是我 SpirngMVC 配置的过滤器
配置 web.xml
<!-- 添加Login 过滤器 -->
<filter >
<filter-name >loginFilter</ filter-name>
<filter-class >yc.base.LoginFilter</ filter-class>
<init-param >
<span style="white-space:pre"> </span><!--配置需要建议的 Session -->
<param-name> checkSessionKey</param-name >
<param-value>currentUser</param-value >
</init-param>
<init-param >
<!--配置不需要过滤的 URL--->
<param-name> notCheckURLList</param-name >
<param-value> /access/login</param-value >
</init-param >
</filter >
<filter-mapping>
<filter-name> loginFilter</filter-name >
<url-pattern> /*</ url-pattern>
</filter-mapping>
LoginFilter 类
/**
* @author Administrator
* @version 1.0
* @see 登陆的过滤器
* */
public class LoginFilter implements Filter {
private List<String> notCheckURLList = new ArrayList<String>();
private String sessionKey = null;
private List<String> sessionKeyList = new ArrayList<String>();
protected FilterConfig filterConfig = null;
@Override
public void destroy() {
notCheckURLList.clear();
sessionKeyList.clear();
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
if (sessionKey == null) {
filterChain.doFilter(request, response);
return;
}
String url=request.getRequestURI();
if(!checkRequestURIIntNotFilterList(request)){
if(!isSessionUser(session)){
//response.sendError(403);
//写你的过滤提示
}
}else{
//不过滤执行URI
filterChain.doFilter(servletRequest, servletResponse);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = filterConfig;
//for url
String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
//for notCheckURLList
if (notCheckURLListStr != null) {
StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
notCheckURLList.clear();
while (st.hasMoreTokens()) {
notCheckURLList.add(st.nextToken());
}
}
//for sessionKey
sessionKey = filterConfig.getInitParameter("checkSessionKey");
if (sessionKey != null) {
StringTokenizer stt = new StringTokenizer(sessionKey, ";");
sessionKeyList.clear();
while (stt.hasMoreTokens()) {
sessionKeyList.add(stt.nextToken());
}
}
}
/*
* 验证不需要过滤的url
* 返回 boolean 类型
* */
private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
for(String urlOne : notCheckURLList){
if(uri.equalsIgnoreCase(urlOne)){
return true;
}
}
return false;
}
/*
* 校验session中是否含有当前登陆的user
* */
private boolean isSessionUser(HttpSession session) {
for(String keyOne: sessionKeyList){
if(null != keyOne && session.getAttribute(keyOne) != null){
return true;
}
}
return false;
}
}
这是我的第一篇文章我以后会坚持写下去的