• Filter&Listener11_Listener3


    Listener:监听器

    1. 概念

      web的三大组件之一。

    2. 事件监听机制
        * 事件 :一件事情
        * 事件源 :事件发生的地方
        * 监听器 :一个对象
        * 注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码

    3. ServletContextListener

      接口,监听ServletContext对象的创建和销毁

      a. 方法:

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

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

      b. 步骤:

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

        2. 复写方法

        3. 配置

          1. web.xml

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

            * 指定初始化参数<context-param>
          2. 注解:
            * @WebListener

      代码:

    package cn.itcast.web.listener;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    
    @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 (FileNotFoundException e) {
                e.printStackTrace();
            }
    
    
            System.out.println("ServletContext对象被创建了。。。");
        }
    
        /**
         * 在服务器关闭后,ServletContext对象被销毁。当服务器正常关闭后该方法被调用
         * @param servletContextEvent
         */
        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            System.out.println("ServletContext对象被销毁了。。。");
        }
    }

      web.xml目录:web包中WEB-INF目录下

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
    
    
       <!--
          配置监听器
       -->
       <listener>
          <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
       </listener>
    
       <!-- 指定初始化参数 -->
        <context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
        </context-param>
    </web-app>

      applicationContext.html:src目录下

    <?xml version="1.0" encoding="utf-8" ?>
    <bean></bean>

      启动tomcat服务器,检查idea控制台信息:

      

       停止tomcat服务器,检查idea控制台信息:

      

  • 相关阅读:
    意大利多洛米蒂 随手一拍都是大片
    改善恋爱关系的7个方法
    如何不花钱就能找到乐子
    蜜蜂会发现蜜没了吗?
    领导艺术:分权失败5宗罪
    如何正确地表白:勇敢不等于鲁莽
    现代社会奇葩家庭
    老板凭啥提拔你:如何得到老板赏识
    在科技行业谈待遇的四个技巧
    JS判断页面是否为浏览器当前页
  • 原文地址:https://www.cnblogs.com/ajing2018/p/15962608.html
Copyright © 2020-2023  润新知