一、什么是Listener监听器?

1.Listener监听器是javaweb的三大组件之一;javaweb的三大组件分别是:servlet,filter过滤器,listener监听器。
2.Listener是JavaEE的规范,就是接口。
3.作用是监听某种事务的变化,然后通过回调函数反馈给用户(或程序)去做一些相应的处理。

ServletContextListener监听器

监听器本来有八种,但是现在基本上只有这一种有用了
ServletContextListener可以监听ServletContext对象的创建和销毁
ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁。
监听到创建和销毁之后都会分别调用ServletContextListener监听器的方法反馈。

源码

  1. public interface ServletContextListener extends EventListener {
  2. /**
  3. * 在ServletContext对象被创建以后马上调用,做初始化
  4. */
  5. public void contextInitialized(ServletContextEvent sce);
  6. /**
  7. * 在ServletContext对象被销毁后调用
  8. */
  9. public void contextDestroyed(ServletContextEvent sce);
  10. }

此接口中提供了两个方法,用于监听ServletContext 的创建和销毁,也就是监听ServletContext 的生命周期,可以说成是监听Web 应用的生命周期,当web应用启动后,就会触发ServletContextEvent 事件,当此事件执行时,就会被ServletContextListener 监听器监听到,会调用他的contextInitialized(ServletContextEvent sce) 方法,通过sce 可以获取ServletContext 实例,初始化一些数据,例如缓存的应用,如,创建数据库连接,读取数据库数据,通过setAttribute(“”,obj) 方法设置数据,然后就是可通过servlet 获取servletContext 的实例,通过getAttribute(“”) 获取设置的数据

使用步骤如下:

  1. 1.编写一个类去实现ServletContextListener <br /> 2.实现其两个回调的方法<br /> 3.web.xml中去配置监听器

代码实现

  1. public class MyContextListener implements ServletContextListener {
  2. public void contextInitialized(ServletContextEvent event) {
  3. System.out.println("ServletContext被创建");
  4. }
  5. public void contextDestroyed(ServletContextEvent event) {
  6. System.out.println("ServletContext被销毁");
  7. }

如果是web 项目 最后一步是使 ServletContext 生效,需要在web.xml 中配置监听器,并且web.xml  把它放在正确的WEB-INF/classes目录下

  1. 1. <listener>
  2. 2. <listener-class>MyServletContextListener</listener-class>
  3. 3. </listener>