JavaWeb三大组件之监听器

本文详细介绍了JavaWeb中的Listener监听器,重点讲解了ServletContextListener,它如何监听ServletContext对象的生命周期并提供相关回调。通过实现`ServletContextListener`接口和配置web.xml,展示了如何在Tomcat中实现ServletContext的创建与销毁通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是Listener监听器

  • Listener监听器是JavaWeb的三大组件,JavaWeb的三大组件分别为Servlet程序、Filter过滤器、Listener监听器
  • Listener它是JavaEE的规范,就是接口
  • 监听器的作用是,监听某种事物的变化,然后听你刚刚回调函数,反馈给客户去做一些相应的处理

二、ServletContextListener监听器

  • ServletContextListener 它可以监听 ServletContext 对象的创建和销毁。
  • ServletContext 对象在 web 工程启动的时候创建,在 web 工程停止的时候销毁
  • 监听到创建和销毁之后都会分别调用 ServletContextListener 监听器的方法反馈。

1. 俩个方法分别为

public class MyServletListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

2.如何使用 ServletContextListener 监听器监听 ServletContext 对象

  • 编写一个类去实现 ServletContextListener
  • 实现其两个回调方法
public class MyServletListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("ServletContext对象创建了");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext对象销毁了");
    }
}
  • 到 web.xml 中去配置监听器
<listener>
        <listener-class>com.github.Listener.MyServletListener</listener-class>
    </listener>
  • 运行tomcat
    在这里插入图片描述
    启动tomcat,会执行 contextInitialized方法,关闭会执行contextDestroyed
### Java Web 开发中的组件及其功能和作用 在Java Web开发中,通常所说的“组件”指的是Servlet、Filter和Listener。这些组件共同构成了Java Servlet规范的核心部分,用于处理Web应用程序的各种需求。 #### 1. **Servlet** - **定义**: Servlet是一个运行在服务器端的小程序,主要用于接收客户端请求并生成动态响应[^2]。 - **功能**: - 处理HTTP请求并将结果返回给客户端。 - 提供了一种标准的方式来扩展Web服务器的功能。 - **生命周期**: - 初始化 (`init()` 方法):当Servlet第一次被加载时调用。 - 请求处理 (`service()` 方法):每当有新的请求到达时调用。 - 销毁 (`destroy()` 方法):当Servlet不再需要时调用。 - **应用场景**: - 动态页面生成。 - 数据交互与业务逻辑处理。 ```java public class ExampleServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>Hello from Servlet!</h1>"); } } ``` --- #### 2. **Filter (过滤器)** - **定义**: Filter是一种拦截器技术,可以对进入的HTTP请求或离开的HTTP响应进行预处理或后处理[^3]。 - **功能**: - 修改请求数据或响应数据。 - 实现统一的日志记录、权限验证等功能。 - **工作机制**: - 配置在`web.xml`文件中,指定其拦截的URL模式。 - 按照链式结构依次执行多个Filter。 - **典型用途**: - 用户认证/授权。 - 日志记录。 - 编码转换。 ```java @WebFilter("/example/*") public class LoggingFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Logging before processing..."); chain.doFilter(request, response); // 继续传递请求 System.out.println("Logging after processing..."); } public void init(FilterConfig config) {} public void destroy() {} } ``` --- #### 3. **Listener (监听器)** - **定义**: Listener是一组事件驱动接口,允许开发者监控特定的应用程序生命周期事件。 - **功能**: - 监听ServletContext、HttpSession和ServletRequest的创建与销毁过程。 - 执行相应的初始化或清理操作。 - **常见类型**: - `ServletContextListener`: 应用启动和关闭时触发。 - `HttpSessionListener`: 会话创建和失效时触发。 - `ServletRequestListener`: 请求开始和结束时触发。 - **使用场景**: - 加载全局资源(如数据库连接池)。 - 记录在线用户数量。 ```java @WebListener public class AppStartupListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("Application started!"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("Application stopped!"); } } ``` --- ### 总结 - **Servlet**: 主要负责接收请求和发送响应,是Java Web应用的核心处理器。 - **Filter**: 专注于对请求和响应的数据流进行加工或控制,增强系统的灵活性。 - **Listener**: 通过捕获各种生命周期事件,提供更细粒度的状态管理能力。 这者相辅相成,共同支撑起Java Web应用的基础架构。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值