温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

servlet监听器怎么用

发布时间:2026-10-10 08:00:50 来源:亿速云 阅读:108 作者:小樊 栏目:编程语言

Servlet 监听器(Listener)是 Java Web 中用来监听 Web 应用生命周期和对象状态变化的组件,比如应用启动/销毁、Session 创建/销毁、Request 创建/销毁等。

下面从 是什么 → 有哪些 → 怎么用 → 示例 一步步说明。


一、Servlet 监听器是什么?

监听器用于监听特定事件的发生,当事件发生时自动执行代码,无需手动调用。

常见监听对象:

  • ServletContext(应用)
  • HttpSession(会话)
  • ServletRequest(请求)

二、常用监听器分类

1️⃣ 生命周期监听器

监听器 监听对象 方法
ServletContextListener 应用启动/销毁 contextInitialized / contextDestroyed
HttpSessionListener Session 创建/销毁 sessionCreated / sessionDestroyed
ServletRequestListener Request 创建/销毁 requestInitialized / requestDestroyed

2️⃣ 属性变化监听器

监听器 监听对象
ServletContextAttributeListener application 属性
HttpSessionAttributeListener session 属性
ServletRequestAttributeListener request 属性

三、如何使用(三步)

方式一:注解方式(推荐,Servlet 3.0+)

@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 应用销毁");
    }
}

✅ 不需要额外配置


方式二:web.xml 配置方式

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>

四、常见使用场景示例

1️⃣ 统计在线人数(Session 监听)

@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);
    }
}

2️⃣ 应用启动时初始化数据

@WebListener
public class InitListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent sce) {
        sce.getServletContext().setAttribute("appName", "MyWeb");
    }
}

五、监听器执行顺序

应用启动
 → ServletContextListener
 → Request / Session 创建时对应监听器
应用关闭
 → 反向销毁

六、小结

✅ Servlet 监听器用于解耦事件处理
✅ 常用于:初始化、统计、日志、监控
✅ 推荐用 @WebListener

如果你愿意,我也可以:

  • 给你一个 完整 Demo 项目结构
  • 结合 Spring / Spring Boot 讲监听器
  • 对比 Filter / Listener / Interceptor

你想看哪一种?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手