在web.xml中配置:
<filter>
<filter-name>Check Session Timeout</filter-name>
<filter-class>com.utils.filter.SessionTimeoutFilter</filter-class>
<init-param>
<param-name>loginPage</param-name>
<param-value>login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Check Session Timeout</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Check Session Timeout</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Check Session Timeout</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
过滤器类:
public class SessionTimeoutFilter implements Filter{
public String loginPage = null;
public void init(FilterConfig config) throws ServletException {
loginPage=config.getInitParameter("loginPage");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
res.addHeader("P3P", "CP=CAO PSA OUR");
HttpSession session = req.getSession(false);
boolean flag = false;
String targetURL = req.getRequestURI();
if (session != null && session.getAttribute("username_phone") != null) {
flag = true;
}else if(targetURL.endsWith(loginPage)) {
flag = true;
}else {
String BasePath = null;
if (req.getContextPath().equals("")){
BasePath = req.getScheme() + "://" + req.getServerName()
+ ":" + req.getServerPort() + "/login.jsp";
}
else{
BasePath = req.getScheme() + "://" + req.getServerName()
+ ":" + req.getServerPort() + req.getContextPath()
+ "/login.jsp";
}
res.sendRedirect(BasePath);
return;
}
if (!flag) {
/*java.io.PrintWriter writer = res.getWriter();
writer.print("<script language=\"javascript\">");
writer.print("if(window.parent==null){");
writer.print("window.open(\"" + req.getContextPath() + "/login.jsp"
+ "\");");
writer.print("}else{");
writer.print("window.parent.top.location.href=\""
+ req.getContextPath() + "/login.jsp" + "\";}");
writer.print("</script>");
writer.flush();*/
return;
} else {
chain.doFilter(request, response);
}
}
public void destroy() {
this.loginPage=null;
}
}