1. Servlet API中的6个事件类:
(1) ServletContextEvent:该类表示上下文事件,当应用上下文对象发生改变,例如创建或销毁上下文对象时,将触发上下文事件。
(2) ServletContextAttributeEvent:该类表示上下文属性事件,当应用上下文属性发生改变,例如增加、删除、覆盖上下文属性时,将触发上下文属性事件。
(3) ServletRequestEvent:该类表示请求事件,当应用请求对象发生改变,例如创建或销毁请求对象时,将触发请求事件。
(4) ServletRequestAttributeEvent:该类表示请求属性事件,当请求中的属性发生改变,例如增加、删除、覆盖请求中的 属性时,将触发请求属性事件。
(5) HttpSessionEvent:该类表示会话事件,当应用会话对象发生改变,例如创建或销毁会话对象,活化或钝化会话对象时,将触发会话事件。
(6) HttpSessionBindingEvent:该类表示会话绑定事件,当应用会话中的属性发生改变,例如增加、删除、覆盖会话中的属性时,将触发会话绑定事件。
2. Servlet API中的8个监听器接口:
(1) ServletContextListener:上下文监听器,用来监听ServletContextEvent。
(2) ServletContextAttributeListener:上下文属性监听器,用来监听ServletContextAttributeEvent。
(3) ServletRequestListener:请求监听器,用来监听ServletRequestEvent。
(4) ServletRequestAttributeListener:请求属性监听器,用来监听ServletRequestAttributeEvent。
(5) HttpSessionListener:会话监听器,用来监听HttpSessionEvent。
(6) HttpSessionActivationListener:会话活化监听器,用来监听HttpSessionEvent。
(7) HttpSessionAttributeListener:会话属性监听器,用来监听HttpSessionBindingEvent。
(8) HttpSessionBindingListener:会话绑定监听器,用来监听HttpSessionBindingEvent。
3. 一个简单示例:
实现Listener类:
package com.huey.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* @version 2013-08-16
* @author Huey2672
*
*/
public class MyServletContextListener implements ServletContextListener {
/**
* 启动Web应用时,系统调用该方法
*/
public void contextInitialized(ServletContextEvent event) {
System.out.println("Web应用启动了。");
}
/**
* 关闭Web应用时,系统调用该方法
*/
public void contextDestroyed(ServletContextEvent event) {
System.out.println("Web应用关闭了。");
}
}
在web.xml中配置监听器(也可以直接用Annotation@WebListener配置):
<listener>
<listener-class>com.huey.listener.MyServletContextListener</listener-class>
</listener>