Servlet 监听器(Listener)是 Java Web 中用来监听 Web 应用生命周期和对象状态变化的组件,比如应用启动/销毁、Session 创建/销毁、Request 创建/销毁等。
下面从 是什么 → 有哪些 → 怎么用 → 示例 一步步说明。
监听器用于监听特定事件的发生,当事件发生时自动执行代码,无需手动调用。
常见监听对象:
| 监听器 | 监听对象 | 方法 |
|---|---|---|
| ServletContextListener | 应用启动/销毁 | contextInitialized / contextDestroyed |
| HttpSessionListener | Session 创建/销毁 | sessionCreated / sessionDestroyed |
| ServletRequestListener | Request 创建/销毁 | requestInitialized / requestDestroyed |
| 监听器 | 监听对象 |
|---|---|
| ServletContextAttributeListener | application 属性 |
| HttpSessionAttributeListener | session 属性 |
| ServletRequestAttributeListener | request 属性 |
@WebListener
public class MyContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Web 应用启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Web 应用销毁");
}
}
✅ 不需要额外配置
public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session 创建");
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session 销毁");
}
}
web.xml:
<listener>
<listener-class>com.example.MySessionListener</listener-class>
</listener>
@WebListener
public class OnlineUserListener implements HttpSessionListener {
private static int count = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
count++;
se.getSession().getServletContext()
.setAttribute("onlineCount", count);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
count--;
se.getSession().getServletContext()
.setAttribute("onlineCount", count);
}
}
@WebListener
public class InitListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("appName", "MyWeb");
}
}
应用启动
→ ServletContextListener
→ Request / Session 创建时对应监听器
应用关闭
→ 反向销毁
✅ Servlet 监听器用于解耦事件处理
✅ 常用于:初始化、统计、日志、监控
✅ 推荐用 @WebListener
如果你愿意,我也可以:
你想看哪一种?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。