ajax请求中session失效的问题

ajax请求的主体不是浏览器,而是XHRHttpRequest,所以不能通过在后台服务器直接发起重定向的方式解决,而是先判断如果是ajax请求,就用一个json绑定相关信息(或者将信息设置到header里面(Spring-MVC),但是struct2未能实现),然后在jsp页面端通过一个统一的方法来处理所有的ajax请求,如果找到了有关session失效的信息,就通过jquery主动发起重定向。
//判断如果session失效,并且是ajax请求,那么绑定sessionout到json上。
if(session.getAttribute(Constants.CURRENT_USER)==null){
if (isAjax((HttpServletRequest)request)) {
JSONObject jsonObj = new JSONObject();
jsonObj.put(“sessionout”, “sessionout”);
response.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);
try {
response.getWriter().write(jsonObj.toString());
} catch (IOException e) {
throw new RuntimeException(e.getMessage(),e);
}
//找一个公用的js,比如easyUI.js,把下面这段代码写上去,对ajax请求做全局判断,判断session是否失效,如果失效(即找到sessionout字段),就完成重定向操作。
(function (){ (function (){ .ajaxSetup({
complete : function(obj) {//此处的obj指的是XHRHttpRequest,打桩输出之后可以发现json是放在responseText里面
obj=eval(“(“+obj.responseText+”)”);//把json字符串转换成json对象
if (obj.sessionout == “sessionout”) {
window.location=”/zero2”;
}
}
});
});

参考文章:https://blog.csdn.net/xiaoshuji/article/details/50606680

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值