一、概述
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>