Servlet标准中指定了4个用于监听HttpSession中的各种事件的监听器接口,它们分别是:
- HttpSessionListener
- HttpSessionAttributeListener
- HttpSessionBindingListener
- HttpSessionActivationListener
下面对这几个接口里面的方法用户进行简要的描述
1. HttpSessionListener接口描述
package javax.servlet.http;
import java.util.EventListener;
public interface HttpSessionListener extends EventListener {
/**
* 当Session创建时,事件会触发当前方法的执行
**/
void sessionCreated(HttpSessionEvent var1);
/**
* 当Session销毁(即调用HttpSession.invalidate()方法)时,该事件会触发当前方法的执行
**/
void sessionDestroyed(HttpSessionEvent var1);
}
2. HttpSessionAttributeListener接口描述
package javax.servlet.http;
import java.util.EventListener;
public interface HttpSessionAttributeListener extends EventListener {
/**
* 当往Session添加新属性时(即调用HttpSession.setAttribute(name, value)方法)时,该事件会触发当前方法的执行
**/
void attributeAdded(HttpSessionBindingEvent var1);
/**
* 当更新Session已存在属性的值(即调用HttpSession.setAttribute(name, value)方法, 这里面的name属性在session当中已存在,如果不存在,也就相当于新填属性,当前方法则不会被触发,而是去触发attributeAdded方法)时,该事件会触发当前方法的执行
**/
void attributeReplaced(HttpSessionBindingEvent var1);
/**
* 当Session中的属性被删除(即调用HttpSession.removeAttribute(name)方法)时,该事件会触发当前方法的执行
**/
void attributeRemoved(HttpSessionBindingEvent var1);
}
3. HttpSessionBindingListener接口说明
package javax.servlet.http;
import java.util.EventListener;
public interface HttpSessionBindingListener extends EventListener {
/**
* 该方法触发的条件是: 当往session里面添加或者替换属性值(即:session.setAttribute(attrName, attrValue)) ,如果attrValue实现了当前这个接口,则会在attrValue加入到session前,调用attrValue对象的valueBound方法
**/
void valueBound(HttpSessionBindingEvent var1);
/**
* 该方法触发的条件是: 当session在移除某个属性时(即:session.removeAttribute(attrName)) ,如果attrValue对应的attrValue(属性值), 实现了当前这个接口,则在移除属性值之前,由容器调用attrValue对象的valueUnbound方法(即当前方法)
**/
void valueUnbound(HttpSessionBindingEvent var1);
}
4. HttpSessionActivationListener接口说明
package javax.servlet.http;
import java.util.EventListener;
public interface HttpSessionActivationListener extends EventListener {
/**
* 该方法触发的条件是: 当session需要进行持久化的时候,如果session中的属性值实现了当前接口,则在持久化前调用属性值实现的当前方法;
**/
void sessionWillPassivate(HttpSessionEvent var1);
/**
* 该方法触发的条件是: 当session需要进行持久化状态激活的时候,如果session中的属性值实现了当前接口,则在session激活后,调用属性值实现的当前方法;
**/
void sessionDidActivate(HttpSessionEvent var1);
}