Java 监听器Listener简单理解

本文介绍Servlet监听器的基本概念,重点讲解ServletContext监听器的使用方法,包括如何通过实现接口创建监听器,以及如何在web.xml中配置监听器。此外,还介绍了ServletContextEvent事件对象及其方法。

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

目录

Listener概述

ServletContext监听器入门

监听器事件对象 ServletContextEvent


Listener概述

监听器Listener 是监听某个组件变化的对象.

  • 事件源是固定的,主要是request, session, servletcontext域对象
  • 监听的是域对象变化
    • 对象的创建和销毁, 域对象中存储的数据变化
  • 第⼀个维度划分:
    • 监听的域对象request, session, servletcontext
域对象监听器
requestServletRequestListener
sessionHttpSessionListener
servletcontextServletContextListener
  • 第⼆个维度划分:
    • 监听的域对象的状态

ServletContext监听器入门

⽤于监听 servletcontext域对象, 对象的创建和销毁, 域对象中存储的数据变化

实现步骤

  • 创建类实现监听器接⼝ ServletContextListener
  • 重写抽象⽅法 注解⽅式
  • 配置 Listener
@WebListener
public class MyServletContextListener implements ServletContextListener {
     @Override
     /**
     * ServletContext对象,被创建,调⽤
     */
    public void contextInitialized(ServletContextEvent servletContextEvent) {
         System.out.println("ServletContext域对象创建");
     }
     @Override
     /**
     * ServletContext对象,被销毁前调⽤
     */
     public void contextDestroyed(ServletContextEvent servletContextEvent) {
         System.out.println("ServletContext域对象销毁");
     }
}

web.xml配置⽅式 Listener

<listener>
 <listener-class>com.wensong.listener.MyServletContextListener</listenerclass>
</listener>

监听器事件对象 ServletContextEvent

ServletContextEvent: 是ServletContext域对象的事件对象, 此对象由tomcat引擎创建ServletContext

⽅法:

  • Object getSource() 获取到被监听的事件源
  • ServletContext getServletContext() 获取到被监听的事件源

⼩结:

  • 两个⽅法 除了返回值外,功能实现是⼀致的, 设计⽬的为了通⽤性
  • 其他的监听器事件对象(HttpSessionEvent, ServletRequestEvent), 都有共同的⽅法 getSource()
@WebListener
public class MyServletContextListener implements ServletContextListener {
     @Override
     /**
     * ServletContext对象,被创建,调⽤
     */
     public void contextInitialized(ServletContextEvent servletContextEvent) {
         System.out.println("ServletContext域对象创建");
         ServletContext context = (ServletContext)servletContextEvent.getSource();
         System.out.println(context);
         ServletContext servletContext = servletContextEvent.getServletContext();
         System.out.println(servletContext);
     }
     @Override
     /**
     * ServletContext对象,被销毁前调⽤
     */
     public void contextDestroyed(ServletContextEvent servletContextEvent) {
         System.out.println("ServletContext域对象销毁");
     }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值