ajax提交session超时跳转页面使用全局的方法来处理

在过滤器中写入如下方法:

  

复制代码 代码如下:

  public void doFilter(ServletRequest request, ServletResponse response,

  FilterChain chain) throws IOException, ServletException {

  HttpServletRequest httprequest = (HttpServletRequest) request;

  HttpServletResponse httpresponse = (HttpServletResponse) response;

  String url = httprequest.getRequestURL().toString();

  if (httprequest.getSession()== null) {

  if (httprequest.getHeader("x-requested-with") != null

  && httprequest.getHeader("x-requested-with").equals(

  "XMLHttpRequest")) { // ajax请求

  httpresponse.setHeader("sessionstatus", "timeout");

  } else {

  httpresponse.sendRedirect("/test/index.jsp");

  return;

  }

  } else {

  chain.doFilter(request, response);

  }

  }

  这样,如果session超时,而且是ajax请求,就会在响应头里,sessionstatus有一个timeout;

  再用一个全局的方法来处理,session超时要跳转的页面。

  jquery 可以用$.ajaxSetup 方法,ext也有类似的方法:

  

复制代码 代码如下:

  //全局的ajax访问,处理ajax清求时sesion超时

  $.ajaxSetup({

  contentType : "application/x-www-form-urlencoded;charset=utf-8",

  complete : function(XMLHttpRequest, textStatus) {

  var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus"); // 通过XMLHttpRequest取得响应头,sessionstatus,

  if (sessionstatus == "timeout") {

  // 如果超时就处理 ,指定要跳转的页面

  window.location.replace("/test/index.jsp");

  }

  }

  });