标签:err 监视 text com dde 绑定 listen create 监听器
监听器是监听某些对象状态变化的组件。
被监听的对象为三个域对象:ServletRequest,HttpSession和ServletContext,分别可以监听它们自身的创建和销毁和它们对象属性的变化。
监听域对象本身创建和销毁需要实现的接口分别为:ServletRequestListener,HttpSessionListener,ServletContextListener。需要用类实现接口,然后重写方法,其中带有created或initialized的方法名的方法为创建时要执行的方法,带有destroy的方法名的方法为销毁时要执行的方法。另外需要要在工程下的Web.xml中配置该类文件,在<listener>标签中的<listener-class>中写入该类的位置。
监听域对象属性的变化需要实现的接口分别为:ServletRequestAttributeListener,HttpSessionAttributeListener,ServletAttributeContextListener,
需要实现接口然后重写方法,不同之处在于它有三个方法:attributeAdded(),attributeRemoved()和attributeReplaced(),分别对应着添加属性,删除属性与更改属性,在域中setAttribute(),如果键值和之前setAttribute()的相同,则视为修改。当然,它们同样需要在Web.xml中配置路径。
Session域对象感知监听器,它可以监视Session域中对象的状态,并做出回应。它总共可以监视四种状态,即绑定状态,解绑状态,钝化状态,活化状态。分别代表了对象被加入到Session域,对象被从Session域中移除,对象被持久化到了磁盘中,对象从磁盘中回到了Session的内存中。
绑定与解绑需要实现的接口为HttpSessionBindingListener,钝化与活化需要实现的接口为HttpSessionActivationListener和Serializable,可以通过context.xml(在META-INF下创建)来修改钝化时间,默认为1分钟。
下面是个实现监视Session域对象的钝化和活化的小例子:
package com.java.demo02;
import java.io.Serializable;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
public class User implements HttpSessionActivationListener,Serializable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public User() {
super();
}
//活化
public void sessionDidActivate(HttpSessionEvent arg0) {
System.out.println("user活化了");
}
//钝化
public void sessionWillPassivate(HttpSessionEvent arg0) {
System.out.println("user钝化了");
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
标签:err 监视 text com dde 绑定 listen create 监听器
原文地址:https://www.cnblogs.com/zhangrui0328/p/9343450.html