HttpSessionListener简介说明
下文笔者讲述HttpSessionlistener简介说明,如下所示
例
HttpSessionListener简介
`HttpSessionListener`是Java Web应用中用于监听HTTP会话(HttpSession)生命周期事件 监听器接口 它属于Servlet规范一部分 适用于需要在用户会话创建或销毁时执行特定逻辑的场景
HttpSessionListener作用
`HttpSessionListener`的功能: -统计在线用户数 -记录用户登录/登出时间 -清理会话资源 -触发会话级别的初始化或销毁操作
HttpSessionListener核心方法
方法 | 调用时机 | 说明 |
`sessionCreated(HttpSessionEvent se)` | 当一个新`HttpSession`被创建时调用 | 可用于初始化会话数据 |
`sessionDestroyed(HttpSessionEvent se)` | 当`HttpSession`被销毁(超时或主动失效)时调用 | 可用于清理资源或更新用户状态 |
统计当前在线用户数
public class OnlineUserCounterListener implements HttpSessionListener { private static int activeSessions = 0; @Override public void sessionCreated(HttpSessionEvent se) { activeSessions++; System.out.println("新会话创建,当前在线人数:" + activeSessions); se.getSession().getServletContext().setAttribute("onlineUsers", activeSessions); } @Override public void sessionDestroyed(HttpSessionEvent se) { activeSessions--; System.out.println("会话销毁,当前在线人数:" + activeSessions); se.getSession().getServletContext().setAttribute("onlineUsers", activeSessions); } }
web.xml注册监听器
<listener> <listener-class>com.example.OnlineUserCounterListener</listener-class> </listener>
与其它监听器对比
监听器类型 | 接口名 | 监听对象 | 典型用途 |
`HttpSessionListener` | `javax.servlet.http.HttpSessionListener` | `HttpSession` | 会话创建/销毁处理 |
`ServletContextListener` | `javax.servlet.ServletContextListener` | `ServletContext` | 应用启动/关闭处理 |
`ServletRequestListener` | `javax.servlet.ServletRequestListener` | `ServletRequest` | 请求开始/结束处理 |
HttpSessionListener注意事项
注意点 | 说明 |
线程安全 | 多个用户并发访问时 共享变量需注意线程安全(如使用`AtomicInteger`) |
会话超时 | 默认会话超时时间为30分钟, 可在`web.xml`中配置 |
不可中断 | 不能阻止会话的创建或销毁 |
单例性 | 所有`HttpSessionListener` 实现类由容器管理为单例 |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。