监听器介绍
观察者设计模式:所有的监听器都是基于观察者设计模式的!
三个组成部分
事件源:触发事件的对象
事件:触发的动作,封装了事件源
监听器:当事件源触发事件后,可以完成功能
监听器介绍
在程序当中,我们可以对:对象的创造销毁,域对象中属性的变化,会话相关内容进行监听。
Servlet规范中共计8个监听器,监听器都是以接口形式提供,具体功能需要我们自己来完成。
监听对象的监听器
ServletContextListener:用于监听ServletContext对象的创建和销毁
核心方法
返回值 | 方法名 | 作用 |
void | contextInitialized(ServletContextEvent sce) | 对象创建时执行该方法 |
void | contextDestroyed(ServletContextEvent sce) | 对象销毁时执行该方法 |
参数:ServletContextEvent代表事件对象
事件对象中封装了事件源,也就是ServletContext
真正的事件指的是创建或销毁ServletContext对象的操作
HttpSessionLinstener:用于监听HttpSession对象的创建和销毁
返回值 | 方法名 | 作用 |
void | sessionCreated(HttpSessionEvent se) | 对象创建时执行该方法 |
void |
sessionDestroyed(HttpSessionEvent se) |
对象销毁时执行该方法 |
参数:HttpSessionEvent代表事件对象
事件对象中封装了事件源,也就是HttpSession
真正的事件指的是创建或销毁HttpSession对象的操作
ServletRequestListener:用于监听ServletRequest对象的创建和销毁
返回值 | 方法名 | 作用 |
void | requestInitialized(ServletRequestEvent sre) | 对象创建时执行该方法 |
void |
requestDestroyed(ServletRequestEvent sre) |
对象销毁时执行该方法 |
参数:ServletRequestEvent代表事件对象
事件对象中封装了事件源,也就是HttpSession
真正的事件指的是创建或销毁HttpSession对象的操作
监听域对象属性变化的监听器
ServletContextAttributeListener:用于监听ServletContext应用域中属性的变化
核心方法
返回值 | 方法名 | 作用 |
void | attributeAdded(ServletContextAttributeEvent scae) | 域中添加属性时执行该方法 |
void | attributeRemoved(ServletContextAttributeEvent scae) | 域中移除属性时执行该方法 |
void | attributeReplaced(ServletContextAttributeEvent scae) | 域中替换属性时执行该方法 |
参数ServletContextAttributeEvent代表事件对象
事件对象中封装了事件源,也就是ServletContext
真正的事件指的是添加,移除,替换应用域中属性的操作
HttpSessionAttributeListener:用于监听HttpSession会话域中属性的变化
返回值 | 方法名 | 作用 |
void | attributeAdded(HttpSessionBindingEvent se) | 域中添加属性时执行该方法 |
void | attributeRemoved(HttpSessionBindingEvent se) | 域中移除属性时执行该方法 |
void | attributeReplaced(HttpSessionBindingEvent se) | 域中替换属性时执行该方法 |
参数:HttpSessionBindingEvent代表事件对象
事件对象中封装了事件源,也就是HttpSession
真正的事件指的是添加,移除,替换会话域中属性的操作
ServletRequestAttributeListener:用于监听ServletRequest请求域中属性的变化
返回值 | 方法名 | 作用 |
void | attributeAdded(ServletRequestAttributeEvent srae) | 域中添加属性时执行该方法 |
void | attributeRemoved(ServletRequestAttributeEvent srae) | 域中移除属性时执行该方法 |
void | attributeReplaced(ServletRequestAttributeEvent srae) | 域中替换属性时执行该方法 |
ServletRequestAttributeEvent代表事件对象
事件对象中封装了事件源,也就是ServletRequest
真正的事件指的是添加,移除,替换请求域中属性的操作
监听会话相关的感知型监听器
HttpSessionBindingListener:用于感知对象和会话域绑定的监听器
核心方法
返回值 | 方法名 | 作用 |
void | valueBound(HttpSessionBindingEvent event) | 数据添加到会话域中(绑定)时执行该方法 |
void | valueUnbound(HttpSessionBindingEvent event) | 数据从会话域中移除(解绑)时执行该方法 |
HttpSessionBindingEvent代表事件对象
事件对象中封装了事件源,也就是HttpSession
真正的事件指的是添加,移除会话域中数据的操作
HttpSessionActivationListener:用于感知会话域中对象钝化(序列化持久化)和活化(正常的状态)的监听器
核心方法
返回值 | 方法名 | 作用 |
void | sessionWillPassivate(HttpSessionEvent se) | 会话域中数据钝化时执行该方法 |
void | sessionDidActivate(HttpSessionEvent se) | 会话域中数据活化时执行该方法 |
参数: HttpSessionEvent代表事件对象
事件对象中封装了事件源,也就是HttpSession
真正的事件指的是会话域中数据钝化,活化的操作
监听器的使用
监听对象的
ServletContextListener
HttpSessionListener
ServletRequestListener
监听属性变化的
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
会话相关的感知型
HttpSessionBindingListener
HttpSessionActivationListener