我想在消费者关闭浏览器窗口时清除HttpSession。我不知道该如何做,请有经验的人帮助我。
谢谢 & 问候 Chakri
我想在消费者关闭浏览器窗口时清除HttpSession。我不知道该如何做,请有经验的人帮助我。
谢谢 & 问候 Chakri
session.invalidate()
。可以用稍微不同的方式进行归档。
使用称为“window.onbeforeunload”的JavaScript事件
例如 window.onbeforeunload=mylogic_function(); function mylogic_function() { window.location.href = "指向使会话失效的servlet路径"; }
试试这个..希望能起作用
编辑:
尝试阅读此页面上的答案。
"HTTP不是一种连续对话协议,客户端连接到服务器并异步交换信息直到客户端断开连接。相反,每个HTTP客户端请求就像登录一样,执行一个操作,然后退出。这个请求/响应循环重复,直到客户端停止发送请求。在任何时候,服务器都不允许向客户端发送响应,除非它是针对特定实际请求的响应,并且每个请求只允许一个响应。因此,您不能让服务器向客户端发布“超时”页面。最接近的方法是在客户端发出请求时(如果有的话)用“您已超时”的响应页面进行响应。人们想做的另一件常见的事情是通知服务器客户端关闭了浏览器、窗口或选项卡。对于处理这种情况,万维网没有定义协议。如果用户关闭了服务器窗口/选项卡,则客户端不会通知服务器。由于没有持续的会话要中断(请记住,连接只持续足够长的时间,以便服务器接受请求并返回响应),因此服务器将无法知道客户端离开的方式。"总结:
你做不到
可能的解决方法:
你只需要依赖于会话超时。超时可能随时发生,而且你甚至不知道用户在它发生时是否正在查看你的页面。很可能他们此时正在观看小猫咪的视频。
session.invalidate();
。或者,如果您想要移除特定的会话,请使用 session.removeAttribute("<sessionName>");
。