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

@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 @ 2023-02-20 16:55  ja不会va  阅读(24)  评论(0)    收藏  举报