Listener(监听器)

发布于:2025-07-17 ⋅ 阅读:(19) ⋅ 点赞:(0)

Listener 介绍

观察者设计模式

在介绍 Listener(监听器)之前,需要先了解观察者设计模式,因为所有的监听器都是观察者设计模式的体现。

那么什么是观察者设计模式呢?

它是事件驱动的一种体现形式。就好比在做什么事情的时候被人盯着,当做了某件事时,就会触发事件。

观察者模式通常由以下三部分组成:

  1. 事件源:触发事件的对象。

  2. 事件:触发的动作,里面封装了事件源。

  3. 监听器:当事件源触发事件时,要做的事情。一般是一个接口,由使用者来实现。(此处还涉及一种设计模式的思想:策略模式)

下图描述了观察者设计模式组成:

image

Listener 介绍

在程序当中我们可以对以下情况进行监听:对象的创建销毁、域对象中属性的变化、会话相关内容。

Servlet 规范中共计 8 个监听器,监听器都是以接口形式提供的,具体功能需要我们自己来完成。

Listener 配置方式

Listender 有两种配置方法:

  1. 注解方式
    @WebListener

  2. web.xml 配置方式

    <!-- 配置监听器 -->
    <listener>
        <listener-class>com.listener.ServletContextListenerDemo</listener-class>
    </listener>

    <listener>
        <listener-class>com.listener.ServletContextAttributeListenerDemo</listener-class>
    </listener>

Servlet 规范中的 8 个监听器

  • 监听对象的

    1. ServletContextListener
    2. HttpSessionListener
    3. ServletRequestListener
  • 监听域中属性变化的

    1. ServletContextAttributeListener
    2. HttpSessionAttributeListener
    3. ServletRequestAttributeListener
  • 会话相关的感知型

    1. HttpSessionBindingListener
    2. HttpSessionActivationListener

监听对象的监听器

1)ServletContextListener

用于监听 ServletContext 对象的创建和销毁。

核心方法:

返回值 方法名 作用
void contextlnitialized(ServletContextEvent sce) 对象创建时执行该方法
void contextDestroyed(ServletContextEvent sce) 对象销毁时执行该方法

ServletContextEvent 参数:代表事件对象

  • 事件对象中封装了事件源,也就是 ServletContext
  • 直正的事件指的是创建或销毁 ServletContext 对象的操作

2)HttpSessionListener

用于监听 HttpSession 对象的创建和销毁核心方法。

核心方法:

返回值 方法名 作用
void sessionCreated(HttpSessionEventse) 对象创建时执行该方法
void sessionDestroyed(HttpSessionEvent se 对象销毁时执行该方法

HttpSessionEvent 参数:代表事件对象

  • 事件对象中封装了事件源,也就是 HttpSession
  • 真正的事件指的是创建或销毁 HttpSession 对象的操作

3)ServletRequestListener

用于监听 ServletRequest 对象的创建和销毁核心方法。

核心方法:

返回值 方法名 作用
void requestinitialized(ServletRequestEvent sre) 对象创建时执行该方法

网站公告

今日签到

点亮在社区的每一天
去签到