在java web应用程序中,如何在会话超时后自动退出服务器



我有一个要求简单的小型web应用程序,我的应用程序中有一个servlet和几个JSP页面。当我们向servlet发出请求时,它在服务器上启动会话,会话超时1分钟,然后显示一个JSP页面。在服务器会话超时后,我想在浏览器中自动显示注销JSP页面,我们如何实现这一点。

添加到Jhash

  1. 你必须在应用程序的每个jsp上都有一个定时器javascript函数(你可以把它保存在一个。js文件中并包含它)
  2. 你在服务器上的会话可以是大约30分钟,你的javascript定时器可以在2到5分钟左右,因为即使一个缓存的html页面显示,它会在2分钟内发现情况
  3. 希望您没有依赖于此来保护应用程序。在让用户使用应用程序之前,您仍然应该在服务器端检查用户会话是否有效(javascript应该只是为了方便)
编辑:

在JS中猜测超时,然后导航用户退出的例子:

var lastActiveTimeMs = new Date().getTime(); //This is set to current time on page load
var SESSION_TIMEOUT_MILLIS = 35*60*1000; //35 mins in milliseconds
var CHECK_TIME_MILLIS = 60*1000; //1 mins in milliseconds
setTimeout(fnCheckTimeout, CHECK_TIME_MILLIS); //Check the timeout once in a minute
function fnCheckTimeout(){
  var curMs = new Date().getTime();
  if( (curMs-lastActiveTimeMs)>SESSION_TIMEOUT_MILLIS ){
    window.location.href = 'signout.html';
  }
}
//Keep updating lastActiveTime every time you do an Ajax call. 
//Because server will keep extending the session for every page load or ajax call from client

为此您需要在jsp页面中使用javascript。例如,如果您的会话超时是2分钟在服务器上,在JSP页面中,您还需要使用javascript创建一个定时器与相同的时间,javascript定时器超时发生后,您只需要使用相同的javascript代码刷新页面。所以当你刷新页面时,会话超时已经发生在服务器上,所以你可以检查服务器上的会话,如果会话过期重定向控制到你想要的页面。

最新更新