Java如何捕获会话创建和删除事件?

Servlet规范定义了一个HttpSessionListener接口,如果我们想监听会话创建和删除事件,可以实现该接口。

package org.nhooo.example.servlet;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.Date;

public class MySessionListener implements HttpSessionListener {

    // 通知已创建新会话
    public void sessionCreated(HttpSessionEvent event) {
        HttpSession session = event.getSession();

        System.out.println("New session created  : " + session.getId());
        System.out.println("Session creation time: " + new Date(session.getCreationTime()));
    }

    // 通知会话无效
    public void sessionDestroyed(HttpSessionEvent event) {
        HttpSession session = event.getSession();

        System.out.println("Session destroyed  : " + session.getId());
    }
}

要使侦听器正常工作,您需要在web.xml文件中进行配置。下面是我们的侦听器的配置示例。

<listener>
    <listener-class>org.nhooo.example.servlet.MySessionListener</listener-class>
</listener>