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