JavaWeb 之 Listener:监听器

一、概述

  1、事件监听机制

      •  事件:        一件事情
      •  事件源:    事件发生的地方
      •  监听器:    一个对象
      •  注册监听: 将事件、事件源、监听器绑定在一起。

  2、监听器概念

     当事件源上发生某个事件后,执行监听器代码。

  扩展:Servlet、Filter和Listener 并称 WEB 的三大组件。

二、ServletContextListener 监听器

  1、常用方法:

void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法

  

  2、使用步骤

    (1)定义一个类,实现 ServletContextListener接口

    (2)重写方法

    (3)配置

      ① web.xml方式:配置类的全类名即可。

<listener>
     <listener-class>cn.ks.web.listener.ContextLoaderListener</listener-class>
</listener>
<context-param> 指定初始化参数

      ② 注解方式:在类上添加 @WebListener 即可。 

三、从指定文件找那个加载数据案例

  创建一个类实现 ServletContextListener 接口

 1 import javax.servlet.ServletContext;
 2 import javax.servlet.ServletContextEvent;
 3 import javax.servlet.ServletContextListener;
 4 import javax.servlet.annotation.WebListener;
 5 import java.io.FileInputStream;
 6 
 7 
 8 @WebListener
 9 public class ContextLoaderListener implements ServletContextListener {
10 
11     /**
12      * 监听ServletContext对象创建的。ServletContext对象服务器启动后自动创建。
13      *
14      * 在服务器启动后自动调用
15      * @param servletContextEvent
16      */
17     @Override
18     public void contextInitialized(ServletContextEvent servletContextEvent) {
19         //加载资源文件
20         //1.获取ServletContext对象
21         ServletContext servletContext = servletContextEvent.getServletContext();
22 
23         //2.加载资源文件:从下面的 web.xml中根据键获取对应的值(获取配置文件的位置)
24         String contextConfigLocation = servletContext.getInitParameter("contextConfigLocation"); 
25 
26         //3.获取真实路径
27         String realPath = servletContext.getRealPath(contextConfigLocation);
28 
29         //4.加载进内存
30         try{
31             FileInputStream fis = new FileInputStream(realPath);
32             System.out.println(fis);
33         }catch (Exception e){
34             e.printStackTrace();
35         }
36         System.out.println("ServletContext对象被创建了。。。");
37     }
38 
39     /**
40      * 在服务器关闭后,ServletContext对象被销毁。当服务器正常关闭后该方法被调用
41      * @param servletContextEvent
42      */
43     @Override
44     public void contextDestroyed(ServletContextEvent servletContextEvent) {
45         System.out.println("ServletContext对象被销毁了。。。");
46     }
47 }

  在 web.xml 中指定初始化参数位置:

1 <!-- 指定初始化参数 -->
2    <context-param>
3       <param-name>contextConfigLocation</param-name>
4       <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
5    </context-param>

 

猜你喜欢

转载自www.cnblogs.com/niujifei/p/11627595.html