首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使会话无效

问使会话无效
EN

Stack Overflow用户
提问于 2011-01-17 20:38:49
回答 3查看 4.7K关注 0票数 4

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-17 20:41:58

处理这种情况是不可能的。

有一些浏览器提供此设置作为其首选,但您不能通过编程来处理此设置。

最大:

一旦连接关闭,你就可以从页面(可能是标题)进行轮询,就像gmail中的gtalk一样,清除该会话。

票数 3
EN

Stack Overflow用户

发布于 2011-01-17 20:46:18

  1. 为什么要这样做,您已经在服务器中配置了,会话应该保持空闲30分钟,之后它将在服务器中过期。
  2. 如果您想要这样做,请使用以下javascript或jquery(更适合跨浏览器),当浏览关闭事件发生时,通过在jsp (request.getSession(false).setMaxInactiveInteral(0);)中运行以下代码发送ajax请求以使会话无效

从javascript

  • 中,您可以实现服务器推送ajax轮询,例如,假设会话将在2秒后过期,向客户端发送服务器端请求以使cookie无效,也可以在服务器中使会话无效。

if ( (getcurrentTime() - session.getCreationTime()) > 2000 ){}

  1. 在呈现页面时,获取maxinactiveinterval,然后将值设置为JavaScript变量,然后使用setInterval函数,将inactiveinterval值传递给function,一旦超时发生,您可以将cookie设置为过期。
票数 1
EN

Stack Overflow用户

发布于 2011-01-17 20:39:52

不,我不相信你可以这样做,因为浏览器中没有钩子可以让它在关闭时发送断开连接通知(某种形式),我也不认为有服务器端机制来询问最近的会话来测试它们的连接状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4713234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档