Listener概述和Listener_ServletContextListener使用
Listener监听器:
-
概念:web的三大组件之一
- 事件监听机制
- 事件:一件事情
- 事件源:事件发生的地方
- 监听器:一个对象
- 注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事情后,执行监听器代码
- 事件监听机制
-
ServletContextListener:监听ServletContext对象的创建和销毁
- void contextDestroyed(ServletContextEvent sce):ServletContext对象被销毁之前会调用该方法
- void contextInitialized(ServletContextEvent sce):ServletContext对象创建后会调用该方法
-
步骤:
- 定义一个类,实现ServletContextListener接口
- 复写方法
- 配置
- web.xml
- 注解
package com.ailyt.listener;
import lombok.SneakyThrows;
import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.FileInputStream;
@WebListener
public class ListenerStudy01 implements ServletContextListener {
/**
* 在初始化servlet上下文时(部署Web应用程序时)调用此方法。
* @param sce
*/
@SneakyThrows
@Override
public void contextInitialized(ServletContextEvent sce) {
//加载资源文件
ServletContext servletContext = sce.getServletContext();
String contextConfigLocation = servletContext.getInitParameter("contextConfigLocation");
String realPath = servletContext.getRealPath(contextConfigLocation);
FileInputStream fis = new FileInputStream(realPath);
System.out.println(fis);
fis.close();
System.out.println("ServletContext对象被创建了");
}
/**
* 当servlet Context被取消部署或Application Server关闭时调用。
* @param sce
*/
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象被销毁了");
}
}