过滤器实现sessiontimeout
在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;}}?