• java:监听器Listener


    概念

    其实实际用的比较少,只做了解

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

    这里我们只了解其中一个监听器

    • 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.ContextLoaderListenerlistener-class>
          listener>
          
          • 1
          • 2
          • 3
           	* 指定初始化参数 ``
          
          • 1
          1. 注解:
            • @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;
    
    
    @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对象被销毁了。。。");
        }
    }
    
    
    • 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
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
  • 相关阅读:
    el-input textarea显示自定义剩余字数
    【C语言】指针与数组笔试题详解
    【Vue2.0源码学习】生命周期篇-挂载阶段(mount)
    为啥 Erlang 没有像 Go、Scala 语言那样崛起?
    Cesium 地球(1)-概览
    自定义输入密码控件
    Prompt Engineering,提示工程
    使用OpenTelemetry进行监控
    Rust 从入门到精通03-helloworld
    第88步 时间序列建模实战:ARIMA组合模型
  • 原文地址:https://blog.csdn.net/weixin_43972437/article/details/133698366