监听域对象属性变更的接口
在程序开发中,不仅需要对域对象进行监听,有时还需要对某个域对象属性的变更进行监听,为了完成这样的功能,Servlet API专门提供了ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener接口,这三个接口都定义了相同名称的方法,分别用于处理被监听域对象属性的增加、删除和替换,接下来针对这三个接口中的方法进行讲解。
1、attributeAdded()方法
当向被监听的域对象中增加一个属性时,Web容器就调用事件监听器的attributeAdded()方法进行响应,该方法接收一个事件类型的参数,监听器可以通过这个参数来获取正在增加属性的域对象和被保存到域中的属性对象。这个方法在各个域属性监听器中的完整语法定义分别如下:
public void attributeAdded(ServletContextAttributeEvent scab)
上述是ServletContextAttributeListener接口中定义的方法,当向ServletContext对象中增加一个属性时,Web容器就调用这个方法并传递一个ServletContextAttributeEvent 类型的参数。
public void attributeAdded(HttpSessionBindindEvent se)
上述是HttpSessionAttributeListener接口中定义的方法,当向HttpSession对象中增加一个属性时,Web容器就调用这个方法并传递一个HttpSessionBindindEvent类型的参数。
public void attributeAdded(ServletRequestAttributeEvent srae)
上述是ServletRequestAttributeListener接口中定义的方法,当向ServletRequest对象中增加一个属性时,Web容器就调用这个方法并传递一个ServletRequestAttributeEvent类型的参数。
2、attributeRemoved()方法
当删除被监听对象中的一个属性时,Web容器调用事件监听器的attributeRemoved()方法进行响应。这个方法在各个域属性监听器中的完整语法定义如下:
public void attributeRemoved(ServletContextAttributeEvent scab)
public void attributeRemoved(HttpSessionBindindEvent se)
public void attributeRemoved(ServletRequestAttributeEvent srae)
这些方法接收的参数类型与上面讲解的attributeAdded()方法一样,监听器可以通过这个参数来获取正在删除属性的域对象。
3、attributeReplaced()方法
当被监听器的域对象中的某个属性被替换时,Web容器会调用事件监听器的attributeReplaced ()方法进行响应。这个方法在各个域属性监听器中的完整语法定义如下:
public void attributeReplaced(ServletContextAttributeEvent scab)
public void attributeReplaced(HttpSessionBindindEvent se)
public void attributeReplaced(ServletRequestAttributeEvent srae)
这些方法接收的参数类型与上面讲解的attributeAdded()方法一样,监听器可以通过这个参数来获取正在替换属性的域对象。