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;
}




 

猜你喜欢

转载自blog.csdn.net/dinghuan2011/article/details/80401946