我在清理活动中面临一个问题。当我从我的应用程序注销时,我能够执行clean活动以及session.invalidate()。但是当我关闭浏览器选项卡或关闭浏览器时,我无法进行清洁活动。我已经为此阅读了很多内容,但我找不到任何合适的解决方案。我已经尝试过使用window.onunload()但它在我的情况下不起作用。因为即使我点击后退按钮或任何其他活动也会生成它。它有什么解决方案吗?如果没有,那么在Chrome,Mozilla和IE中是否有任何基础工作?
答案 0 :(得分:0)
只要现有会话失效,servlet容器就会调用sessionDestroyed()方法。
public class SessionListener implements HttpSessionListener
{
public void sessionCreated(HttpSessionEvent se) {}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
//clean up code
}
}
<listener>
<description>Session Listener</description>
<listener-class>com.demo.SessionExpiryListener</listener-class>
</listener>
response.setHeader("pragma","no-cache");//HTTP 1.1
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.addDateHeader("Expires", -1);
response.setDateHeader("max-age", 0);
//response.setIntHeader ("Expires", -1);
//prevents caching at the proxy server
response.addHeader("cache-Control", "private");
<script type = "text/javascript" >
function disableBackButton()
{
window.history.forward();
}
setTimeout("disableBackButton()", 0);
</script>
< body onunload="disableBackButton()" onload="disableBackButton()" >