首页 > 开发 > AJAX > 正文

重写 ajax 实现 session 超时跳转到登录页面实例代码

2024-09-01 08:30:41
字体:
来源:转载
供稿:网友

问题:使用window.location.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 超时跳转到登录页面实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表