由于页面不断向后台发送请求,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();">