Listener(监听器)
Listener 介绍
观察者设计模式
在介绍 Listener(监听器)之前,需要先了解观察者设计模式,因为所有的监听器都是观察者设计模式的体现。
那么什么是观察者设计模式呢?
它是事件驱动
的一种体现形式。就好比在做什么事情的时候被人盯着,当做了某件事时,就会触发事件。
观察者模式通常由以下三部分组成:
-
事件源
:触发事件的对象。 -
事件
:触发的动作,里面封装了事件源。 -
监听器
:当事件源触发事件时,要做的事情。一般是一个接口,由使用者来实现。(此处还涉及一种设计模式的思想:策略模式)
下图描述了观察者设计模式组成:
Listener 介绍
在程序当中我们可以对以下情况进行监听:对象的创建销毁、域对象中属性的变化、会话相关内容。
Servlet 规范中共计 8 个监听器,监听器都是以接口形式提供的,具体功能需要我们自己来完成。
Listener 配置方式
Listender 有两种配置方法:
-
注解方式
@WebListener
-
web.xml 配置方式
<!-- 配置监听器 --><listener><listener-class>com.listener.ServletContextListenerDemo</listener-class></listener><listener><listener-class>com.listener.ServletContextAttributeListenerDemo</listener-class></listener>
Servlet 规范中的 8 个监听器
-
监听对象的
- ServletContextListener
- HttpSessionListener
- ServletRequestListener
-
监听域中属性变化的
- ServletContextAttributeListener
- HttpSessionAttributeListener
- ServletRequestAttributeListener
-
会话相关的感知型
- HttpSessionBindingListener
- 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) | 对象创建时执行该方法 |