【Listener】属性监听器
程序员文章站
2022-05-01 13:01:23
...
域对象中属性变更的事件监听器用来监听ServletContext、HttpSession和HttpServletRequest 这三个对象中的属性变更信息事件的监听器。这三个监听器接口分别是ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中属性的增加、删除和替换事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。
以HttpSessionAttributeListener为例:
创建HttpSessionAttributeListener监听器:
- 1、创建一个普通Java类,实现HttpSessionAttributeListener接口
- 2、(eclipse)直接创建一个Listener,选择实现HttpSessionAttributeListener接口
配置web.xml:
- 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
- 2、如果是创建的Java类然后实现的HttpSessionAttributeListener接口,则需要配置web.xml:
<listener> <listener-class>HttpSessionAttributeListener实现类的路径</listener-class> </listener>
在监听器中实现HttpSessionAttributeListener接口的3个抽象方法:
- 1、attributeAdded():向HttpSession对象中添加数据时自动执行该方法
- 2、attributeReplaced():向HttpSession对象中添加键名已经存在的数据,实质上是将原来的数据用新数据替换了,此时会自动执行该方法
- 3、attributeRemoved():删除HttpSession对象中的数据时会自动执行该方法
例:
package cn.jingpengchong.listener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class SessionAttributeListener implements HttpSessionAttributeListener {
public void attributeAdded(HttpSessionBindingEvent arg0) {
System.out.println("有数据被添加到Session中了");
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("Session中有数据被删除了");
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("Session中有数据被替换了");
}
}
当执行“session.setAttribute(“name”, “孙悟空”);”时,会在eclipse控制台输出“有数据被添加到Session中了”;
当执行“session.setAttribute(“name”, “猪八戒”);”时,会在eclipse控制台输出“Session中有数据被删除了”;
当执行“session.removeAttribute(“name”);”时,会在eclipse控制台输出“Session中有数据被替换了”。
推荐阅读
-
MySQL 5.5的max_allowed_packet属性的修改方法_MySQL
-
jQuery获取选中内容及设置元素属性的方法教程
-
,系统的一个php数据对象,var_dump后,属性名居然是字符串类型的数字0()
-
[机器学习][基础编程][numpy]numpy属性
-
从零学Python之引用和类属性的初步理解
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间,_PHP教程
-
Ement常用语法、元素四类属性、布局标签实例演示
-
php魔术方法属性重载方法 - 南十字
-
Java基于正则表达式获取指定HTML标签指定属性值的方法
-
一个关于父类方法访问子类对象中的公有属性的问题