zoukankan      html  css  js  c++  java
  • 监听器使用

    1、由于监听器很好的体现了一个事件驱动编程的理念
    事件驱动编程中核心对象:
    1):事件源:谁发出事件通知,发出消息;也就是事件主体,比如按钮;
    2):事件名称:发出什么样的通知的名称,比如鼠标到我头上了,我被别人点了一下;
    3):事件响应函数:谁对这个这个事件感兴趣,当这个事件发生时要执行什么样的操作;
    4):事件对象:一般来说,当事件发生时,会产生一个描述该事件的具体对象,包含事件相关信息

    监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
    监听器也可以说是我们WEB中的一个组件。
    在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为SerlvetConext(application),HttpSession和ServletRequest这三个作用域对象。

    2、WEB中有哪些监听器

    Web中的监听器都是来监听作用域对象
    request,session,application(ServletContext)
    在这里我们分成两类共6个,一类是作用域生命周期监听器,一类是作用域属性监听器。
    下面,我们再来分别来介绍一下这两种监听器:

    2.3.1 作用域生命周期监听器
    作用域的生命周期监听器: 负责监听request,session,application的创建和销毁.
          ServletRequestListener:
          HttpSessionListener:
          ServletContextListener: 监听系统启动时,直接编写初始化代码.

    2.3.2 作用域属性监听器
    作用域的属性监听器(添加/删除/替换属性):
          ServletRequestAttributeListener:
          HttpSessionAttributeListener:
          ServletContextAttributeListener

    2.4 创建与使用监听器
    在这里,咱们以ServletContextListener 为例来实现一个监听器,其它的监听器的做法都是差不多的。
    第一步:写一个普通的类,实现ServletContextListener接口
    @WebListener()
    public class HelloListener implements ServletContextListener{

        @Override
        public void contextInitialized(ServletContextEvent sce) {
            System.out.println("启动。。。");
        }

        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            System.out.println("OVER。。。");
        }
    }

    ①ContextLoaderListener使用

    ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。

    3、spring事件

     spring事件(Application Event)为bean与bean之间的消息通信提供了支持。

    Spring的ApplicationContext 提供了支持事件和代码中监听器的功能。

    Spring 提供了以下5中标准的事件(均是ApplicationEvent子类)
        上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext被初始化或者更新时发布。也可以在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。
        上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。
        上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。
        上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
        请求处理事件(RequestHandledEvent):在Web应用中,当一个http请求(request)结束触发该事件。

    spring事件需要遵循如下流程

      1、自定义事件,继承ApplicationEvent
      2、定义事件监听器,实现ApplicationListener
      3、使用容器发布事件。(使用ApplicationContext的publishEvent方法来发布)

    参考:https://blog.csdn.net/tuzongxun/article/details/53637159

  • 相关阅读:
    python基础4
    python的基础数据类型和编码
    python的if语句和while循环
    java特殊运算符
    深入理解java集合
    python常用模块
    python函数的参数问题
    集合关系之间的运算
    集合
    可变类型与不可变类型
  • 原文地址:https://www.cnblogs.com/spdboke/p/8831260.html
Copyright © 2011-2022 走看看