求助DWR与Session交互但不更新Session生命周期的问题!!!!
经理要我做个系统超时的提醒,当系统操作员长时间未进行任何操作时(设置的是20分钟),需要系统自动弹出一个对话框提示“系统已经超时,您需要重新登录!”,然后跳转到登录界面。
session是在服务端的,客户端不和服务端交互是不可能知道是否已经超时的,于是本人通过在公共JSP页面使用JS定时器每10秒钟转到DWR去验证,在DWR中获取Session去验证Session是否已经超时被invalidate了,但是每次只要DWR只要验证(产生了一次交互)一次就会刷新一次Session的生命周期,这么一来Session的生命周期永远都是10秒钟,Session永远都不会超时了,如何解决这个问题呢?
一下是JS中的代码:
setInterval("check();",10000);//定时10秒调用DWR查看session是否过期
function check(){
onlineCheckDwr.onlineCheck(function(obj){
if(obj){
alert('长时间不操作,系统将强制退出!');
window.top.location.href='<%=basePath %>login.jsp';
}
});
}
DWR代码如下:
public class onlineCheckDwr {
@SuppressWarnings("deprecation")
public boolean onlineCheck(){
WebContext ctx = WebContextFactory.get();
String tlrno = User.getTlrno(ctx.getHttpServletRequest());
if(StringUtils.isNotBlank(tlrno)){
return false;
}else{
return true;
}
}
}