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

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

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

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

避免使用手动代码。

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

  10  

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

 if(session!=null) { session.invalidate(); } 

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

 session.setMaxInactiveInterval(15*60); //in seconds 

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

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

您需要设置会话超时,即当前Session对象失效的时间。

这可以通过在web.xml中设置超时来完成,如:

  20  

或以编程方式调用Session对象

 session.setMaxInactiveInterval(valueInSeconds); 

请密切关注web.xml中设置的会话超时时间以分钟为单位,并以编程方式 – 以秒为单位。

没有办法亲密关闭用户关闭浏览器的服务器。 这就是为什么会话具有可配置的时间跨度。 如果你想这样做,那么尝试创建一个onclose javascript事件,并从那里做一个ajax调用来接近服务器附近的会话。 在服务器中,您可以从此调用中获取会话ID作为参数并将其终止。

我没试过。 不要认为这样做是对的。

问题:如果用户关闭浏览器,如何自动结束会话?
答: 设置最大非活动时间间隔时间值小于0。

例:

 HttpSession session = request.getSession(); session.setMaxInactiveInterval(-1); session.setAttribute("User", au); response.sendRedirect("doLogin.jsp"); 

您可以从Web配置文件中执行此操作。 这是一个样本

       

timeout属性将指定超时时间。