我想在清除会话时调用java方法吗?

时间:2016-02-23 14:22:01

标签: java session httpsession

如果浏览器缓存被清除,则当前会话将被闲置并且将创建新会话。但是根据我未使用会话时的情况,我想调用java方法。

我的目标是清除浏览器缓存后,旧会话保持未使用状态,并且在我想要调用方法之前创建新会话。

有没有办法这样做或者我的思维方式有问题请纠正我。

与会话对象被销毁之前如何调用方法不同?这个问题,因为在超时之后会话被破坏但是对于我的情况,会话不会被任何应用服务器破坏。由于浏览器清除缓存,会话仍未使用。

1 个答案:

答案 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