如果浏览器缓存被清除,则当前会话将被闲置并且将创建新会话。但是根据我未使用会话时的情况,我想调用java方法。
我的目标是清除浏览器缓存后,旧会话保持未使用状态,并且在我想要调用方法之前创建新会话。
有没有办法这样做或者我的思维方式有问题请纠正我。
与会话对象被销毁之前如何调用方法不同?这个问题,因为在超时之后会话被破坏但是对于我的情况,会话不会被任何应用服务器破坏。由于浏览器清除缓存,会话仍未使用。
答案 0 :(得分:0)
在Java中,我们通常使用Listener来执行此操作,在本例中为javax.servlet.http.HttpSessionListener来检查sessionDestroyed和sessionCreated的事件:
package com.mkyong;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCounterListener implements HttpSessionListener {
private static int totalActiveSessions;
public static int getTotalActiveSession(){
return totalActiveSessions;
}
@Override
public void sessionCreated(HttpSessionEvent arg0) {
totalActiveSessions++;
System.out.println("sessionCreated - add one session into counter");
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
totalActiveSessions--;
System.out.println("sessionDestroyed - deduct one session from counter");
}
}
创建类后,需要在 web.xml 中添加监听器类:
<web-app ...>
<listener>
<listener-class>com.mkyong.SessionCounterListener</listener-class>
</listener>
</web-app>
所有这些都引用了我从这里得到的解释:Mkyong - A simple HttpSessionListener example