一.监听器的简介
1.监听器
专门用于对其他对象身上发生的事件或状态改变进行监听或相应处理的对象,
当被监视的对象发生情况时立即采取相应的行动。
2.Servlet监听器
Servlet规范中定义的一种特殊类。
它用于监听web应用程序中的ServletContext,
HttpSession和ServletRequest等域对象的创建与销毁事件,
以及监听这些域对象中的属性发生修改的时间。
二.监听器的分类
按监听的事件类型可以将Servlet监听器分为如下三种类型:
1.监听域对象自身的创建和销毁的事件监听器。
2.监听域对象中的属性的增加和删除的事件监听器。
3.监听绑定到HttpSession域中的某个对象的状态的事件监听器。
三.监听域对象的创建和销毁
1.概括
域对象创建和销毁的事件监听器就是用来监听ServletContext,HttpSession,HttpServletRequest这三个对象的创建和销毁的监听器。
(1).域对象的创建和销毁时机
创建时机 | 销毁时机 | |
---|---|---|
ServletContext | WEB服务器启动时为每个WEB应用程序创建相应的ServletContent对象 | WEB服务器关闭时为每个WEB应用程序销毁相应的ServletContent对象 |
HttpSession | 浏览器开始与服务器会话时创建 | 调用HttpSession.invalidate()或超过了session的最大有效时间间隔或服务器进程被停止 |
ServletRequest | 每次请求开始时被创建 | 每个访问结束后销毁 |
2.ServletContentListener
(1).作用
监听ServletContext对象被创建或销毁的Servlet监听器
(2).使用方法
(1).创建一个实现了ServletContextListener的类,并且实现其中的两个方法。
(2).在web.xml中进行配置即可
ServletContextListener是最常用的Listener,可以在当前WEB应用被加载时对当前WEB应用的相关资源进行初始化操作。
例如:创建数据库连接池,创建Spring的IOC容器,读取当前WEB应用的初始化参数等等…
(3).示例
(1).创建实现类:
public class HelloServletContextListener implements ServletContextListener{
public HelloServletContextListener() {
}
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Initialized ..." + sce.getServletContext());
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Destroyed ...");
}
}
(2).web.xml中配置:
<listener>
<listener-class>HelloServletContextListener</listener-class>
</listener>
(4).相关的API
public void contextInitialized(ServletContextEvent sce){}
ServletContent对象被创建的时候(即当前WEB应用被加载时)
Servlet容器调用该方法
public void contextDestroyed(ServletContextEvent sce){}
ServletContent对象被销毁的时候(即当前WEB应用被卸载时)
Servlet容器调用该方法
API中的参数:ServletContextEvent
ServletContextEvent中只有一个方法如下:
getServletContext():获取ServletContext。
3.ServletRequestListener和HttpSessionListener
(1).作用
和ServletContextListener类似。
(2).三个域对象的整合示例:
public class HelloServletContextListener implements ServletContextListener,HttpSessionListener, ServletRequestListener {
public HelloServletContextListener() {
}
public