监听器
监听器的基本的介绍
监听器就是第三种Servlet,叫做监听的Servlet,主要负责监听web程序执行的各个过程,当相关的被监听事件执行之后,监听器会自动执行,在web中可以对application、request和session三种操作进行监听,比如服务的启动和关闭,session域对象的设置和取消,request域对象的设置和取消,request请求等等都可以被监听。监听的实现主要是依靠各种监听接口完成。
对application的监听
对于application监听
实际上就是对ServletContext的监听
主要的监听接口有两个:
- ServletContextListener:对服务器的关闭和启动进行监听
- ServletContextAttributeListener:对application设置的域对象信息监听
对服务器的启动和关闭进行监听
主要方法有两个:
- void contextInitialized(ServletContextEvent sce):监听服务器的启动
- void contextDestroyed(ServletContextEvent sce):监听服务器的关闭
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class WebServletContextListener implements ServletContextListener {
//监听服务器的关闭
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("tomcat 关闭了");
}
//监听服务器的启动
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("tomcat 启动了");
}
}
监听器要运行的话,必须和Servlet或者Filter一样,需要进行配置到Web工程中,配置方式也有两种:
- 配置web.xml文件
- 通过注解的方式完成配置
第一种配置:
1 | <!-- 配置监听器 --> |
第二种方式:
1 | @WebListener |
启动tomcat的过程中执行了监听器中监听服务器启动的方法,关闭服务器的时候,执行了监听服务器关闭的方法。
对application范围域对象进行监听
1 | @WebListener |
对session的监听
对session的监听常用的监听接口有两个:
监听session的创建和session的销毁
监听接口为HttpSessionListener,方法有:
- 监听session的创建 : sessionCreate()
- 监听session的销毁 : sessionDestoryed()
监听session域对象信息的设置、修改和删除
监听接口为HttpSessionAttributeListener,方法有:
- 监听session域对象的设置:attributeAdded()
- 监听session域对象的修改:attributeReplaced()
- 监听session域对象的删除:attributeRemoved()
1 | import javax.servlet.annotation.WebListener; |
对request的监听
对request的监听常用的监听接口有两个:
监听request的创建和request的销毁
监听接口为ServletRequestListener,方法有:
- 监听request的创建 : requestCreate()
- 监听request的销毁 : requestDestoryed()
监听request域对象信息的设置、修改和删除
监听接口为ServletRequestAttributeListener,方法有:
- 监听ServletRequest域对象的设置:attributeAdded()
- 监听ServletRequest域对象的修改:attributeReplaced()
- 监听ServletRequest域对象的删除:attributeRemoved()
小结
- 使用监听可以对application、session和request的范围属性进行监听
- 使用ServletContextListener可以监听服务器的启动和关闭
- 使用HttpSessionListener可以监听session的创建和session的注销
- 使用ServletRequestListener可以监听请求的创建和销毁
- 监听器的配置主要是使用注解的方式完成