来源
XMLHttpRequest
http://www.w3school.com.cn/xmldom/dom_http.asp
AJAX的全局默认设置
https://blog.csdn.net/pursuer211/article/details/44936827
“拿来的代码”
https://blog.csdn.net/u010722643/article/details/43057031
前端代码
//AJAX的全局默认设置~
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded;charset=utf-8",
complete: function(XMLHttpRequest,status){
//XMLHttpRequest.readyState
// HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,这个属性的值从 0 开始,
// 当这个值增加到 4,则表示收到完整的 HTTP 响应。
//XMLHttpRequest.status 404,500,不解释了
//XMLHttpRequest.getResponseHeader 划重点!!
// 是根据key从后台拦截器那里添加到Header的数据
if (XMLHttpRequest.readyState == 4 &&
(XMLHttpRequest.status!=200||XMLHttpRequest.getResponseHeader("status")=="loginOut")){
alert('登录失效,请重新登录');
//这里是跳转至登录页面
//因为拦截器已经得知Session过期了
//所以全局刷新是会跳转到登录页面的
top.location.reload();
}
}
});
Java代码
//response.sendRedirect(request.getContextPath() + "/login");
//ajax不刷新全局页面,就给他一个特定字符告诉前端,
//你丫session过期了,去给老子刷新全局页面
response.setHeader("status","loginOut");
request.getRequestDispatcher("/login").forward(request, response);