823~824 Listener 概述 Listener_ServletContextListener使用

Listener:监听器

  概念:web的三大组件之一。

    事件监听机制

      事件    :一件事情

      事件源 :事件发生的地方

      监听器 :一个对象

      注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码

  ServletContextListener:监听ServletContext对象的创建和销毁

    方法:

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

      void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法

  步骤:

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

    2. 复写方法

    3. 配置

      1. web.xml

        <listener>

            <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>      

        </listener>

        指定初始化参数<context-param>

      2.注解:

        @WebListener

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

 

posted @   ja不会va  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示