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’







       
  • 相关阅读:
    内网其他服务器节点连接Mysql数据库很慢的解决方案
    MongoDB分片技术原理和高可用集群配置方案
    Hive事务原理和Datax同步事务表问题解决
    Mysql使用存储过程创建测试数据
    Hive的原生部署方式
    ByteArray的操作总结(复制、打印、位运算)
    句柄
    C# 使用指针将不同值类型赋值到字节数组中
    对象、字节流转换
    ASP.NET Core学习日志1
  • 原文地址:https://www.cnblogs.com/yingsong/p/5045365.html
Copyright © 2011-2022 走看看