监听某个对象状态变化的组件。。。
域监听器
监听域对象的变化,
-
事件源 被监听的对象 ;有request域,session域,servletContext域
-
监听器 监听事件源的对象,8个
-
注册监听器 监听器和事件源绑定
-
响应行为 监听到事件源变化时,去做什么事情
三个监听域对象的创建和销毁
- ServletContextListener
- HttpSessionListener
- ServletRequestListener
三个监听域对象中属性变化
- ServletContextAttributeListener
- HttpSessionAttributeListener
- ServletRequestAttributeListener
ServletContext 域监听器
-
生命周期:服务器启动时创建---服务器关闭时销毁
-
编写步骤:编写一个监听器类,实现该监听器接口,实现接口里方法;并在web.xml中注册。
-
作用:一些初始化工作,加载配置文件
实现接口ServletContextListener的类
package com.lz.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ServletContextListenerTest implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("服务器启动了");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("服务器关闭了");
}
}
web.xml 中进行注册
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册监听器-->
<listener>
<listener-class>com.lz.listener.ServletContextListenerTest</listener-class>
</listener>
</web-app>
HttpSessionListener
-
生命周期:第一次调用request.getSession()时创建-----销毁:服务器关闭,手动销毁,过期
tomcat6之后,在config目录下的context.xml中,对象session进行了持久化。。。所以服务器关闭后session仍然存在,需要打开下面注释掉的配置来消除持久化。
-
编写步骤:编写一个监听器类,实现该监听器接口,实现接口里方法;并在web.xml中注册。
网友评论