Servlet中的监听器(8个)
- 一类:监听三个域对象的创建和销毁的监听器(三个)
ServletContextListener
HttpSessionListener
ServletRequestListener
- 二类:监听三个域对象的属性变更(属性添加、移除、替换)的监听器(三个)
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
- 三类:监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听(两个)
保存在Session域中的Java类可以有多种状态:绑定到session中;从session中解除绑定;随session对象持久化到一个存储设备中(钝化);随session对象从一个存储设备中恢复(活化)
Servlet对方中定义了两个特殊的监听的接口来帮助Java类了解自己在Session域中的状态:
HttpSessionBindingListener 监听Java类的绑定和解除绑定
HttpSessionActivationListener 监听Java类的钝化和活化
实现这两个接口的类不需要在web.xml中进行配置。
session的钝化 和 活化 配置,配置context.xml
tomcat/conf/context.xml : 所有tomcat下虚拟主机和虚拟目录下的工程都会序列化session
tomcat/conf/Catalina/localhost/context.xml : localhost虚拟主机下的所有项目会序列化session
工程/META-INF/context.xml : 当前工程才会序列化session。
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"> <!--1分钟后钝化 -->
<Store className="org.apache.catalina.session.FileStore" directory="itheima"/>
</Manager>
</Context>
监听器简单实用示例
//简单示例:
package com.huey.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
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中配置监听器
<listener>
<listener-class>com.huey.listener.MyServletContextListener</listener-class>
</listener>