1 public class LoginFilter implements Filter { 2 private String sessionKey = "userid"; 3 public void init(FilterConfig filterConfig) throws ServletException { 4 String key = filterConfig.getInitParameter("sessionKey"); 5 sessionKey = key == null ? sessionKey : key; 6 } 7 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) 8 throws IOException, ServletException { 9 HttpServletRequest req = (HttpServletRequest) request; 10 HttpServletResponse rep = (HttpServletResponse) response; 11 HttpSession session = req.getSession(); 12 req.setCharacterEncoding("utf-8"); 13 rep.setContentType("text/html;charset=utf-8");String currentURL = req.getRequestURI(); 14 String contextPath = req.getContextPath(); 15 if (null == session || null == session.getAttribute(sessionKey) 16 || "".equals((String) session.getAttribute(sessionKey))) { 17 // 如果判断是 AJAX 请求,直接设置为session超时 18 if (req.getHeader("x-requested-with") != null 19 && req.getHeader("x-requested-with").equals("XMLHttpRequest")) { 20 System.out.println("用户已失效"); 21 rep.setHeader("sessionstatus", "timeout"); 22 } else { 23 rep.sendRedirect(contextPath); 24 } 25 } else { 26 filterChain.doFilter(request, response); 27 } 28 } 29 public void destroy() { 30 } 31 }
1 $.ajaxSetup({ 2 contentType:"application/x-www-form-urlencoded;charset=utf-8", 3 complete:function(XMLHttpRequest,textStatus){ 4 var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus, 5 if(sessionstatus=="timeout"){ //如果超时就处理 ,指定要跳转的页面 6 7 window.location.replace("${path}/common/login.do"); 8 9 } 10 11 } 12 13 } 14 15 });
1 <filter> 2 <filter-name>LoginFilter</filter-name> 3 <filter-class>com.wonders.common.filter.LoginFilter</filter-class> 4 </filter> 5 6 <filter-mapping> 7 <filter-name>LoginFilter</filter-name> 8 <url-pattern>*.do</url-pattern> 9 </filter-mapping>
浙公网安备 33010602011771号