监听器---2
监听三个域对象属性变化:
Servlet规范定义了监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。
这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener ServletRequestAttributeListener
这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同
attributeAdded 方法
当向被监听器对象中增加一个属性时,web容器就调用事件监听器的 attributeAdded 方法进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象
各个域属性监听器中的完整语法定义为:
public void attributeAdded(ServletContextAttributeEvent scae)
public void attributeReplaced(HttpSessionBindingEvent hsbe)
public void attributeRmoved(ServletRequestAttributeEvent srae)
attributeRemoved 方法:
当删除被监听对象中的一个属性时,web 容器调用事件监听器的这个方法进行相应
各个域属性监听器中的完整语法定义为:
public void attributeRemoved(ServletContextAttributeEvent scae)
public void attributeRemoved (HttpSessionBindingEvent hsbe)
public void attributeRemoved (ServletRequestAttributeEvent srae)
attributeReplaced 方法:
当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的这个方法进行相应
各个域属性监听器中的完整语法定义为:
public void attributeReplaced(ServletContextAttributeEvent scae)
public void attributeReplaced (HttpSessionBindingEvent hsbe)
public void attributeReplaced (ServletRequestAttributeEvent srae)
感知Session绑定的事件监听器
保存在Session域中的对象可以有多种状态:绑定到Session中;从Session域中解除绑定;随Session对象持久化到一个设备中;随Session对象从一个存储设备中恢复
Servlet规范中定义了两个特殊的监听器接口来帮助JavaBean对象了解自己在session域中的这些状态
HttpSessionBingdingListener接口和HttpSessionActivationListener接口,实现这连个接口的类不需要web.xml文件中进行注册。
HttpSessionBingdingListener接口:
实现了HttpSessionBindingListener接口的Javabean对象可以感知自己被绑定到Session和Session中删除的事件
当对象被绑定到HttpSession对象中时,web服务器调用该对象的 void valueBound(HttpSessionBindingEvent event)方法
当对象从HttpSession对象中解除绑定时,web服务器调用该对象的void valueUnBound(HttpSessionBindingEvent event)方法
HttpSessionActivationListener接口:
实现了HttpSessionActivationListener接口的JavaBean对象可以感知自己被活化和钝化的事件
当绑定到HttpSession对象中的对象将要随HttpSession对象被钝化之前,web服务器调用sessionWillPassivate(HttpSessionBindingEvent event)方法
当绑定到HttpSession对象中的对象将要随HttpSession对象被活化之后,web服务器调用该对象的 void sessionDidActive(HttpSessionBindingEvent event)方法