ajax调用session过期,解决方案

1:把html标签换成 <!DOCTYPE html>

2:网页中引入js

 /**
 * 设置未来(全局)的AJAX请求默认选项
 * 主要设置了AJAX请求遇到Session过期的情况
 */
$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
complete:function(XMLHttpRequest,textStatus){
//通过XMLHttpRequest取得响应头,sessionstatus 
var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); 
var basePath = XMLHttpRequest.getResponseHeader('basePath');
if(sessionstatus=="timeout"){
//这里怎么处理在你,这里跳转的登录页面
        var top = getTopWinow();
        var yes = confirm('由于您长时间没有操作, 与服务器会话已过期, 请重新登录!');
        if (yes){top.location.href =basePath;}
    
}
}
});

/**
 * 在页面中任何嵌套层次的窗口中获取顶层窗口
 * @return 当前页面的顶层窗口对象
 */
function getTopWinow(){
    var p = window;
    while(p != p.parent){
        p = p.parent;
    }
    return p;

}

3:后台过滤器代码


    
    //如果是ajax提交. 过期了就整个框架返回.
String headerX = httpRequest.getHeader("X-Requested-With");    
if(headerX != null  && headerX.equalsIgnoreCase("XMLHttpRequest")){
httpResponse.setHeader("sessionstatus", "timeout");  
httpResponse.setHeader("basePath", basePath);  
  return;
}else{//浏览器访问的验证返回
httpResponse.sendRedirect(basePath);//返回到过期页面.里面有JS进行返回登陆页面
return;
}




 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值