EASYUI 中session 超时跳出Tabs

近期一个项目用到了easyUI,在使用过程中,遇到了一些个人觉得值得记录的注意点,片段化,在此记录谨供个人自由回忆,不保证质量!

copy自http://blog.163.com/xueling1231989@126/blog/static/102640807201412710184983/

*
在easyui中,会遇到session超时而当前tabs无法跳转到登陆页面。我在这里使用了filter,先判断session是否过期,然后根据request中的request.getHeader(“x-requested-with”)属性来判断是否ajax请求,然后针对easyui的ajax请求来设置返回信息,然后修改ajaxsetup,最后获取顶层窗口跳转。

1.使用filter,在过滤器doFilter方法中添加:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{

................其他处理..................

/**
* easyui session超时处理
*/
if (request.getHeader("x-requested-with")!=null&&request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest"))
{
    response.setHeader("sessionstatus", "timeout");//在响应头设置session状态 
    response.getWriter().print("timeout"); //打印一个返回值,没这一行,在tabs页中无法跳出(导航栏能跳出),具体原因不明
    return ;
}

2.新建一个common.js文件,添加如下2个function


$.ajaxSetup({ 
    error: function (XMLHttpRequest, textStatus, errorThrown){
            if(XMLHttpRequest.status==403){
                alert('您没有权限访问此资源或进行此操作');
                return false;
            }
        },  
     complete:function(XMLHttpRequest,textStatus){   
        var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus, 
            if(sessionstatus=='timeout'){   
                  //如果超时就处理 ,指定要跳转的页面  
                 var top = getTopWinow(); //获取当前页面的顶层窗口对象
                 alert('登录超时, 请重新登录.'); 
                 top.location.href="/index.jsp"; //跳转到登陆页面,可以修改为自己需要跳转的页面
             }   
     }   
});


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值