• 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
  • 相关阅读:
    第2-3-3章 文件处理策略-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    基于Springboot+Layui餐厅点餐系统
    Flutter介绍
    23.1 指针的基本概念
    Csharp线程
    Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化...
    由面试题“Redis是否为单线程”引发的思考
    unity学习(46)——服务器三次注册限制以及数据库化角色信息1--数据流程
    C++输出四舍五入的一些小问题
    internship:编写excel表的上传方法(导入)
  • 原文地址:https://blog.csdn.net/weixin_43972437/article/details/133698366