如果用户关闭浏览器,如何自动结束会话

4 java session jsp servlets

我需要在用户处于非活动状态一段时间后自动结束会话,比如10分钟.我们有一个方法

HttpSession session=request.getSession();
session.setAttribute("User", au);
session.setAttribute("name", firstname);
response.sendRedirect("doLogin.jsp");
session.setMaxInterval();
Run Code Online (Sandbox Code Playgroud)

但即使用户活动了10分钟,这也将结束会话.如何在用户关闭浏览器时结束会话?

Sur*_*tta 13

避免使用手动代码.

只是在 web.xml //this will applied for whole application

<session-config>
<session-timeout>10</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

检测浏览器关闭事件并调用invalidate方法

if(session!=null) { 
session.invalidate();   
}   
Run Code Online (Sandbox Code Playgroud)


Apu*_*urv 6

您可以在ServletContextListener中将会话超时设置如下:

session.setMaxInactiveInterval(15*60); //in seconds
Run Code Online (Sandbox Code Playgroud)

这将为您提供以下优势:您可以从任何外部属性文件/数据库读取会话超时,并在不更改代码的情况下更改会话超时.

您可以使用该unload事件并将注销请求发送到服务器.或者继续向服务器发送定期请求,通知用户仍处于活动状态.

  • 如何在浏览器关闭时关闭会话 (2认同)