package com.web.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CheckLoginFilter implements Filter{
protected FilterConfig filterConfig = null;
private String redirectURL = null;
private List<String> notCheckURLList = new ArrayList<String>();
public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String userId=null;
//检查用户cookie
Cookie cookies[] = request.getCookies();
Cookie sCookie = null;
String svalue = null;
String sname = null;
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
sCookie = cookies[i];
svalue = sCookie.getValue();
sname = sCookie.getName();
if (sname.equals("usermsg")) {
userId = svalue;
}
}
}
//检查失败
if ((!checkRequestURIIntNotFilterList(request))&& userId==null) {
response.sendRedirect(redirectURL);
return;
}
request.getSession().removeAttribute("user_id");
request.getSession().setAttribute("user_id", userId);
filterChain.doFilter(servletRequest, servletResponse);
}
private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
return notCheckURLList.contains(uri);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
redirectURL = filterConfig.getInitParameter("redirectURL");
String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
if (notCheckURLListStr != null) {
StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
notCheckURLList.clear();
while (st.hasMoreTokens()) {
notCheckURLList.add(st.nextToken());
}
}
}
public void destroy() {
}
}
web.xml 配置
<filter>
<filter-name>checklogin</filter-name>
<filter-class>com.web.util.CheckLoginFilter</filter-class>
<init-param>
<param-name>redirectURL</param-name>
<param-value>../error.jsp</param-value>
</init-param>
<init-param>
<param-name>notCheckURLList</param-name>
<param-value>/jsp/register.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>checklogin</filter-name>
<url-pattern>/jsp/a/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>checklogin</filter-name>
<url-pattern>/jsp/b/*</url-pattern>
</filter-mapping>
1078

被折叠的 条评论
为什么被折叠?



