一、Listener概述
● Web程序开发中,可以对对象的创建和销毁、域对象中属性的变化、会话相关内容进行监听
● Servlet中提供八个监听器,都是以接口的形式提供,具体功能需要自行完善
● 相关概念:
1. 事件:触发的动作
2. 事件源:产生事件的对象
3. 事件监听器:监听发生在事件源上的事件
4. 事件处理器:监听器的成员方法,事件发生时会触发该方法
二、监听对象的创建和销毁的监听器
ServletContextListener接口:
1、用于监听ServletContext对象的创建与销毁
2、核心方法:
方法 | 说明 |
void contextInitialized(ServletContextEvent sce) | ServletContext对象创建时执行 |
void contextDestroyed(ServletContextEvent sce) | ServletContext对象销毁时执行 |
HttpSessionListen
1、用于监听HttpSession对象的创建与销毁
2、核心方法:
方法 | 说明 |
void sessionCreated(HttpSessionEvent se) | HttpSession对象创建时执行 |
void sessionDestroy(HttpSessionEvent se) | HttpSession对象销毁时执行 |
ServletRequestListener接口:
1、用于监听ServletRequest对象的创建与销毁
2、核心方法:
方法 | 说明 |
void requestInitialized(ServletRequestEvent sre) | ServletRequest对象创建时执行 |
void requestDestroyed(ServletRequestEvent sre) | ServletRequest对象销毁时执行 |
三、监听域对象属性变化的监听器
ServletContextAttributeListener接口:
1、用于监听ServletContext中属性的变化
2、核心方法:
方法 | 说明 |
void attributeAdded(ServletContextAttributeEvent scae) | 域中添加属性时执行 |
void attributeRemoved(ServletContextAttributeEvent scae) | 域中移除属性时执行 |
void attributeReplaced(ServletContextAttributeEvent scae) | 域中替换属性时执行 |
HttpSessionAttributeListener接口:
1、用于监听HttpSession中属性的变化
2、核心方法:
方法 | 说明 |
void attributeAdded(HttpSessionBindingEvent se) | 域中添加属性时执行 |
void attributeRemoved(HttpSessionBindingEvent se) | 域中移除属性时执行 |
void attributeReplaced(HttpSessionBindingEvent se) | 域中替换属性时执行 |
ServletRequestAttributeListener接口:
1. 用于监听ServletRequest中属性的变化
2. 核心方法:
方法 | 说明 |
void attributeAdded(ServletRequestAttributeEvent srae) | 域中添加属性时执行 |
void attributeRemoved(ServletRequestAttributeEvent srae) | 域中移除属性时执行 |
void attributeReplaced(ServletRequestAttributeEvent srae) | 域中替换属性时执行 |
四、监听会话相关的感知型监听器
HttpSessionBindingListener接口:
1、用于监听JavaBean对象绑定到HttpSession对像和从HttpSession对象解绑的事件
2、核心方法:
方法 | 说明 |
void valueBound(HttpSessionBindingEvent event) | 数据绑定(添加)到会话域时执 行 |
void valueUnbound(HttpSessionBindingEvent event) |
数据从会话域解绑(移除)时执 行 |
HttpSessionActivationListener接口:
1、用于监听HttpSession中对象活化(恢复到内存)和钝化(持久化到硬盘)的过程
2、核心方法:
方法 | 说明 |
void sessionWillPassivate(HttpSessionEvent se) | 会话域中数据钝化时执行 |
void sessionDidActivate(HttpSessionEvent se) | 会话域中数据活化时执行 |
五、监听器实现
步骤:
1、将监听器绑定到事件源,也就是注册监听器
2、监听器监听到事件发生时,将事件对象作为参数传给相关的成员方法
3、成员方法可以根据事件对象获取事件源,然后进行处理
注册监听器的方式有两种,一种是通过web.xml文件,一种是通过注解的方式:
1、通过web.xml注册
<!--<listener-class>标签中写的是监听器的实现类的全限定名类名--> <listener> <listener- class>com.liaoxiangqian.listener.MyListener</listener-class> </listener>
2、通过注解注册
//在监听器实现类上方使用该注解进行注册 @WebListener