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>