zoukankan      html  css  js  c++  java
  • ajax异步请求,session失效处理

    后台拦截器代码:

    // 判断是否是AJAX请求
    if (isAjaxRequest(request)) {
        log.info("AjaxRequest请求");
        ActionContext ac = arg0.getInvocationContext();
        HttpServletResponse response = (HttpServletResponse)ac.get(StrutsStatics.HTTP_RESPONSE);
        response.setHeader("sessionstatus", "timeout");//返回前台的标志
        //response.sendError(518, "session timeout.");//5**,表示服务器错误
        return null;
    }
    
    
    
    /**
    * 判断是否是ajax请求
    * @param request
    * @return
    */
    private boolean isAjaxRequest(HttpServletRequest request) {
        String header = request.getHeader("X-Requested-With");
        if (header != null && "XMLHttpRequest".equals(header)) {
            return true;
        } else {
             return false;
        }
    }
    
            
    

      

    /**

    * =============js代码===================================
    * 设置未来(全局)的AJAX请求默认选项
    * 主要设置了AJAX请求遇到Session过期的情况
    */

    var flag = true;//防止重复点击
    var domain = document.domain;
    var ip = /^(d+).(d+).(d+).(d+)$/;
    var path = (ip.test(domain))?("http://"+domain+":8081/WSS"):("http://"+document.domain);
    console.log(path);
    $.ajaxSetup({
        type: 'POST',
        complete: function(xhr,status) {
            var sessionStatus = xhr.getResponseHeader('sessionstatus');
            if(sessionStatus == 'timeout' && flag ) {
                flag = false;
                var top = getTopWinow();
                $.TipsBox.Alert("由于您长时间没有操作, session已过期, 请重新登录","error","",function(){
                    //成功回调
                    flag = true;
                    top.location.href = path+"/sys/login.htm";
                });
            }
        }
    });
    /**
    * 在页面中任何嵌套层次的窗口中获取顶层窗口
    * @return 当前页面的顶层窗口对象
    */
    function getTopWinow(){
        var p = window;
        while(p != p.parent){
            p = p.parent;
        }
        return p;
    }
    
                        
    

      

    *****************************************************************
    $.ajaxSetup详解,参数另见 ‘$.ajax’







       
  • 相关阅读:
    Spring Bean前置后置处理器的使用
    js用正则表达式查找中文
    wpf文字模糊
    Monster Audio 使用教程 (五) 添加区域效果器
    关于数据库锁的一些注意事项
    Monster Audio 使用教程(四)Wifi 远程遥控
    Monster Audio 使用教程(三)多音轨录音、播放
    Monster Audio 使用教程(二)效果参数的保存
    Monster Audio 使用教程(一)入门教程 + 常见问题
    wpf中实现快捷键
  • 原文地址:https://www.cnblogs.com/yingsong/p/5045365.html
Copyright © 2011-2022 走看看