监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
1、 Servlet监听器的分类
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源为ServletContext,HttpSession和ServletRequest这三个域对象;
针对这三个域对象上的操作,把监听器划分为三种类型:
1. 监听域对象自身的创建和销毁的事件监听器。
2. 监听域对象中的属性的增加和删除的事件监听器。
3. 监听绑定到HttpSession域中的某个对象的状态的事件监听器。
2、 监听ServletContext域对象的创建和销毁
ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。
当ServletContext对象被创建时,contextInitialized (ServletContextEvent sce)方法被调用。
当ServletContext对象被销毁时,contextDestroyed(ServletContextEvent sce)方法被调用。
3、 编写监听ServletContext域对象的创建和销毁的源代码
实现ServletContextListener接口,监听ServletContext对象的创建和销毁
package com.servlet.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 简单实现ServletContextListener接口,可以对ServletContext对象的创建和销毁这两个动作进行监听。
* @author 范芳铭
*/
public class EasyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("----------- ServletContext对象创建");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("----------- ServletContext对象销毁");
}
}
4、 修改web.xml
<listener>
<description>ServletContextListener监听器</description>
<!--实现了ServletContextListener接口的监听器类 -->
<listener-class>com.servlet.listener.EasyServletContextListener</listener-class>
</listener>
5、 运行结果
启动WEB中间件,看到控制台的输出:
———– ServletContext对象创建
原文地址:http://blog.csdn.net/ffm83/article/details/43667463