ajaxを書き直してセッションタイムアウトを実現して登録ページのインスタンスコードにジャンプします。


問題:window.locations.hrefを使ってページをジャンプする場合、バックエンドはフィルタ一つでsessionがタイムアウトした場合、ログインページにリダイレクトできます。しかし、ajaxを使いますか?ajaxを使って実行すると302エラーが発生し、ページがジャンプできません。以下はこの問題に対して私の前後のコードを貼り付けます。
1、sessionフィルタ

import java.io.IOException;
<p style="text-align: center"><img alt=""import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
<p style="text-align: center"><img alt=""public class SessionFilter implements Filter {
<p style="text-align: center"><img alt="" public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)
   throws IOException, ServletException {
  HttpServletRequest request = (HttpServletRequest) req;
  HttpServletResponse response = (HttpServletResponse) res;
<p style="text-align: center"><img alt=""  String requestUri = request.getRequestURI();
<p style="text-align: center"><img alt=""  if (requestUri.indexOf("/login.html") > 0 || requestUri.indexOf("/system/login") > 0) {
   return ;
  }
<p style="text-align: center"><img alt=""  HttpSession session = request.getSession(false);
<p style="text-align: center"><img alt=""  if (session == null) {
   //    session  ,      。
   response.sendRedirect(request.getContextPath() + "/login.html");
   return ;
  }
  try {
   filterChain.doFilter(request, response);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return ;
 }
}
2、web.xml追加構成:

<filter>
  <filter-name>sessionFilter</filter-name>
  <filter-class>com.manager.filter.SessionFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>sessionFilter</filter-name>
  <url-pattern>/manager/*</url-pattern>
</filter-mapping>
*3、書き換えajax
このコードはindexページに置いてあります。

jQuery(function($){
   var _ajax=$.ajax;
   $.ajax=function(opt){
    var _success = opt && opt.success || function(a, b){};
    var _opt = $.extend(opt, {
     success:function(data, textStatus){
      _success(data, textStatus); 
     },
     error:function(XMLHttpRequest, textStatus, errorThrown){
      //alert(XMLHttpRequest.responseText);
      //        ,          ,         lovnx     ,           
      var reData = XMLHttpRequest.responseText + "";
      if(reData.indexOf('lovnx') != -1) {
       window.location.href="/manager/login.html" rel="external nofollow" ;
       return;
      }
     }
    });
    return _ajax(_opt);
   };
  });
4、ログインページにコードを追加する

<input type="hidden" value="lovnx">
上记は小编が绍介した书き直しajaxがsessionタイムアウトを达成して登录ページの実例コードにジャンプするので、皆さんに役に立つことを望んでいます。ここでも私たちのサイトを応援してくれてありがとうございます。