关键点:’springmvc拦截器‘
需求
我们用jquery ajax 请求 后台 用spring 拦截session 过期
1. 过期则跳转指定页面 怎么弄呀
2.session的时候 ajax 有时候也会走error 方法 这个怎么写好呢
我们先了解一下一些必要的信息。ajax 请求和普通的 http 请求是不一样的,Ajax请求是XMLHTTPRequest对象发起的,而http请求是浏览器发起的。
二者不同地方体现在HTTP请求的头信息中。
AJAX请求头中带有X-Requested-With信息,其值为XMLHttpRequest。而普通请求是没有的。
在拦截器中进行配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
Oper oper = (Oper)request.getSession().getAttribute(Const.SESSION_LOGIN_ADMIN_USER);
String requestCTX = urlPathHelper.getContextPath(request);
System.out.println(requestCTX);
String requestUri = request.getRequestURI();
String contextPath = request.getContextPath();
String url = requestUri.substring(contextPath.length());
logger.debug("======拦截器配置成功======");
logger.debug("======拦截来自:"+requestUri+"的请求=======");
logger.debug("======拦截的页面路径是:==:"+url+"=======");
if(oper == null){
if (request.getHeader("x-requested-with") != null
&&
request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
response.setHeader("sessionstatus", "timeout");
return false;
}
}
return super.preHandle(request, response, handler);
}
|
判断,如果session过期的话,进行上述设置
然后再前端页面主js文件中进行统一设置,
有了配置文件,也有了拦截器,在拦截器中已经设置了返回的信息,而这些信息会被 JavaScript 获取到。
$.ajaxSetup方法是来设置AJAX请求默认选项的,
我们可以认为是全局的选项设置,因此可以将这段代码提到外部js文件中,在需要的页面
test test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| $.ajaxSetup({
type: 'POST',
contentType:"application/x-www-form-urlencoded;charset=utf-8",
complete: function(xhr,status) {
var sessionStatus = xhr.getResponseHeader('sessionstatus');
if(sessionStatus == 'timeout') {
alert("登录超时,请重新登录!");
window.location.href = '/admin/login/out.do';
}
}
});
function getTopWinow(){
var p = window;
while(p != p.parent){
p = p.parent;
}
return p;
}
|
本章完
原文链接: https://hzways.gitee.io/p/b935b55.html
版权声明: 转载请注明出处.