使会话无效

我有一个基于jsp servlet的应用程序,会话时间超过30分钟,我想在一个人有意或无意地关闭浏览器窗口时使会话无效(操作系统关闭/关闭经理/关机)

我可以检查一下并使会话无效吗?

无法处理此方案。

有些浏览器提供此设置作为他们的首选项,但您无法以此方式处理此设置。

最大值:

只要连接关闭该会话,您就可以从gmail中的gtalk(可能是标题)进行民意调查。

  1. 为什么要这样做,你已经在服务器中配置了会话应该保持空闲30分钟,之后它将在服务器中到期。

  2. 如果你想这样做,请使用以下javascript或jquery(更适合跨浏览器),当浏览关闭事件发生时,通过在jsp中运行以下代码发送ajax请求以使会话无效( request.getSession(false).setMaxInactiveInteral(0);

    来自javascript

      (or) jQuery(window).bind("beforeunload", function(){ // Do ajax request and dont wait for the response. }); 
  3. 您可以实现服务器推送ajax轮询,例如,认为会话将​​在另外2秒内到期,向客户端发送服务器端请求以使cookie无效,并且在服务器中也可以使会话无效。

 if ( (getcurrentTime() - session.getCreationTime()) > 2000 ) { } 
  1. 在呈现页面时,获取maxinactiveinterval,然后将值设置为JavaScript变量,然后使用setInterval函数,将inactiveinterval值传递给function,一旦超时发生,您可以将cookie设置为expal。

不,我不相信你能做到这一点,因为浏览器中没有可用的钩子让它在关闭时发送断开通知(某种类型)并且我认为没有服务器端机制来询问最近几次测试他们的连接状态。

如果您使用的是tomcat 5.0 / 5.5 / 6.0容器,则tomcat会话管理器生成的用于跟踪会话的cookie(JSESSIONID)是一个每会话cookie(仅限浏览器内存的cookie)而不是持久性cookie(写入磁盘)。 这是因为会话管理器执行(硬编码)setMaxAge(-1),因此生成的HTTP响应包含: Set-Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; Path=/ Set-Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; Path=/并且没有Expire= date

因此,当浏览器关闭时(所有浏览器窗口,或仅包含cookie的窗口,取决于variuos浏览器实现),cookie和会话都将丢失。 [*]

这与无关,这是一个设置,告诉tomcat 服务器端会话管理器在空闲时间超过指定的时间到期。

[*]它们仍然会在服务器端的磁盘上持久存在,直到会话超时到期,但是没有激活它们的cookie的请求。