监听器Listener
web三大组件:
- servlet
- 监听器Listener
- 过滤器Filter
1.监听器的分类
- 域对象存取的监听
- 域对象本身的生命周期
2.监听器的开发流程
- 按照目标选择定义实现不同接口的类
- 在web.xml中配置
3.不同域对象生命周期监听的接口
- ServletContext —> ServletContextListener(用的最多)
可以利用servletContext的特性,在项目加载时就创建连接池,在项目销毁时关闭连接池 - servletContextAttributeListener
- Session ----> HttpSessionListener/ 生命周期
HttpSessionAttribureListener
HttpSessionIdListener/ id值改变
HttpSessionActivationListener/ 活化钝化
HttpSessionBindingListener/ 绑定解绑 - Request —> ServletRequestListener (Request在http请求到达时由tomcat创建,http响应回客户端时销毁)
- ServletRequestAttributeListener
4.web.xml配置
标签:
<listener>
<listener-class>
<listener>
<listener-class>监听器的完全限定名(类似Servlet)</listener-class>
</listener>
5.代码及测试
demo代码:
public class Demo implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("监听器实现");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("监听器销毁");
}
}
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.example.listener.Demo</listener-class>
</listener>
</web-app>
显示结果:
6.不同域对象存取数据监听的接口
- ServletContext —> ServletContextAttributeListener
- Session —> HttpSessionAttributeListener
- Request —> ServletRequestArrtibuteListener
接口中相同的方法名:
- attributeAdded
- attributeRemoved
- attributeReplaced