牛骨文教育服务平台(让学习变的简单)
博文笔记

页面自动刷新,导致session不能自动销毁

创建时间:2016-10-28 投稿人: 浏览次数:1956

由于页面不断向后台发送请求,session不会自动销毁
解决办法
JSP页面:

//手动设置session失效
    //定义计时器
     var monitorCount = 0;

     //绑定body的onclick处理函数
     document.body.onclick = function()
     {
       if(typeof bodyOnClickFunction == "function")
       {
         bodyOnClickFunction();
       }
     }

     //body的单击处理函数
     function bodyOnClickFunction()
     {
       resetTimeoutCount();
     }

     //重置计数器为0
     function resetTimeoutCount()
     {
       monitorCount = 0
     }

     var timeOutFunction = "sessionTimeOutMonitor()";

     function sessionTimeOutMonitor()
     {
       var sessionTimeCount = document.getElementById("sessionTimeCount").value / 60;

       if(monitorCount < sessionTimeCount)
       {
         monitorCount++;
         setTimeout(sessionTimeOutMonitor,60 * 1000);
       }
       else
       {
         //调用ajax或者dwr调用使后台的session失效
           $.ajax({
                url:"session",
                data:"&ac=3&status=0",
                type:"post",
                dataType: "xml", 
                cache:false, 
                timeout: 200000,
                contentType:"application/x-www-form-urlencoded; charset=utf-8",
                error: function(){

                },
                success:function(xml){      

                     location.reload();
                }
            });
       }   
     }

后台的servlet方法


        //获取请求方法
        String action = request.getParameter("ac");
        int method = TypeConvUtil.parseInt(action, 0);
        //根据方法进行对应操作
        switch (method){
            case 3:
                destroy(request, response);
                break;
            default :
                break;
        }

servlet中destroy方法

//自定义获取session的方法
Session session = new com.yx.web.servlet.Session(request);
//自定义方法清空session并使其无效
        session.clear();
        session.invalidate();

设置body的onload时间

<body onload="sessionTimeOutMonitor();">
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。