监听域对象中属性的变更的监听器
域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。
这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件, 同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。
1.1、attributeAdded 方法
当向被监听对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行响应,这个方法接收一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象
各个域属性监听器中的完整语法定义为:
1 public void attributeAdded(ServletContextAttributeEvent scae) 2 public void attributeReplaced(HttpSessionBindingEvent hsbe) 3 public void attributeRmoved(ServletRequestAttributeEvent srae)
1.2、attributeRemoved 方法
当删除被监听对象中的一个属性时,web容器调用事件监听器的attributeRemoved方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeRemoved(ServletContextAttributeEvent scae) 2 public void attributeRemoved (HttpSessionBindingEvent hsbe) 3 public void attributeRemoved (ServletRequestAttributeEvent srae)
1.3、attributeReplaced 方法
当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的attributeReplaced方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeReplaced(ServletContextAttributeEvent scae) 2 public void attributeReplaced (HttpSessionBindingEvent hsbe) 3 public void attributeReplaced (ServletRequestAttributeEvent srae)
测试代码:
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>ServletContextAttributeListener,RequestAttributeListener,SessionAttributeListener监听器测试</title>
</head>
<body>
<%
//往application域对象中添加属性
application.setAttribute("name", "tom");
//替换application域对象中name属性的值
application.setAttribute("name", "mike");
//移除application域对象中name属性
application.removeAttribute("name");
//往session域对象中添加属性
session.setAttribute("aa", "bb");
//替换session域对象中aa属性的值
session.setAttribute("aa", "xx");
//移除session域对象中aa属性
session.removeAttribute("aa");
//往request域对象中添加属性
request.setAttribute("aa", "bb");
//替换request域对象中aa属性的值
request.setAttribute("aa", "xx");
//移除request域对象中aa属性
request.removeAttribute("aa");
%>
</body>
</html>