读书人

过滤器兑现sessiontimeout

发布时间: 2012-11-11 10:07:57 作者: rapoo

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

?

读书人网 >编程

热点推荐