精华内容
下载资源
问答
  • 监听器

    千次阅读 2019-09-16 20:02:53
    监听器 ​ 监听某个事件,当事件发生时,事件发生者(事件源) 就会给注册该事件的监听者(监听器)发送消息,告诉监听者某些信息,同时监听者也可以获得一份事件对象,根据这个对象可以获得相关属性和执行相关操作...

    监听器

    ​ 监听某个事件,当事件发生时,事件发生者(事件源) 就会给注册该事件的监听者(监听器)发送消息,告诉监听者某些信息,同时监听者也可以获得一份事件对象,根据这个对象可以获得相关属性和执行相关操作。

    如何实现一个监听器?

    ​ 1.在类上方添加@WebListener注解 或者配置web.xml文件

    ​ 2.实现ServletContextListener接口

    ​ 3.重写接口方法

    ​ 4.在对应的方法里编写监听代码

    * 监听器
    	方法
    	contextInitialized   在事件初始化时进行操作
    	contextDestroyed 		在事件销毁时进行操作
    	对象
    	ServletContextEvent     当Web应用程序部署在服务器上时,
    								会通知ServletContextEvent事件。
    * 执行顺序
    	1、给事件源注册监听器。
    	2、组件接受外部作用,也就是事件被触发。
    	3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器。
    	4、事件处理器启动,并执行相关的代码来处理该事件。
    
    展开全文
  • java 监听器监听器模式

    千次阅读 2017-01-09 14:25:37
    监听器是观察者模式的一种实现,监听器模式也就是观察者模式的一种。  监听器模式是对某种共有操作的监控。当此操作执行时对此操作作相应处理。 包含的元素:  1. 要监控的事件定义Event  2. 监控该...

    监听器是观察者模式的一种实现,监听器模式也就是观察者模式的一种。

           监听器模式是对某种共有操作的监控。当此操作执行时对此操作作相应处理。

    包含的元素:

                              1. 要监控的事件定义Event

                              2. 监控该事件的监听器Listener

                              3. 要监控的事件操作Action

                              4. 监控者

           元素的职责:

                              1.定义了要监控事件的事件类型定义,和其它和该事件相关的特殊定义

                              2.监听器,用于对事件发生后要执行操作的接口定义

                              3.要监控的事件、操作,对于要监控的事件,他必须要包含被监控事件的注册功能

                              4.监控者要实现要监控的事件接口,完成时间发生后的操作内容

           这里举一个例子,说明监听模式的一般实现:

     

           1、首先要定义事件,监听器处理哪些类型的事件,也就是用什么样的事件来触发监听器,事件的类型很多,这里可以定义一个事件接口来抽象所有事件类型。

    /**
     * 事件接口,其中事件的类型定义了三种,创建、删除、更新
     */
    public interface MyEvent {
        
        public static final String createEvent = "CREATE_EVENT";
        public static final String deleteEvent = "DELETE_EVENT";
        public static final String updateEvent = "UPDATE_EVENT";


        public String getEvent();
        
    }


    2、给出一个监听器的接口

    /**
     * 定义监听器,该监听器只监听MyEvent类型的事件
     */
    public interface MyListener {
        public void handle(MyEvent myEvent);
    }


    3、监听器的实现,该实现根据事件类型的不同做不同的处理

    public class MyListenerImpl implements MyListener {
        public void handle(MyEvent myEvent) {
            if(myEvent.getEvent().equals("CREATE_EVENT")){
                System.out.println("myListener get a create event!");
            }
            else if(myEvent.getEvent().equals("DELETE_EVENT")){
                 ... 
            }
             ... 
        }
    }


    4、有了监听器的实现,肯定需要一个事件的实现,不过事件的实现类可以是专指某个类型的pojo,也可以是一个事件类型在使用时被设置的类,下面的实现是第一种,直接定义了一个create事件的实现类。

    public class MyCreateEventImpl implements MyEvent {
        private String type="";
        public MyCreateEventImpl(){
            this.type = MyEvent.createEvent;
        }
        public String getEvent() {
            return this.type;
        }
    }


    5、基础工作都做好后,就可以在想添加监听的类中实施监听功能了。

    public class MyCreateAction {
        //引入监听器
        private MyListener myListener;
        //引入事件,用来传给Listener进行处理
        private static MyEvent myEvent;
        public void setListener(MyListener myListener){
            this.myListener = myListener;
        }
        private void handleListener(MyEvent myEvent){
            //触发监听
            this.myListener.handle(myEvent);
        }
        public void execute(){
            //设置事件的类型为create
            myEvent = new MyCreateEventImpl();
            System.out.println("create start!");
            this.handleListener(myEvent);
            System.out.println("create end!");
        }


        //调用被监听的类,测试监听效果
        public static void main(String[] args) {
            MyCreateAction action = new MyCreateAction();
            MyListenerImpl myListener = new MyListenerImpl();
            //设置监听器的实现
            action.setListener(myListener);
            action.execute();
        }
    }


    输出的结果为:

     

    create start!

    myListener get a create event!

    create end!

     

    至此,监听器模式的基本工作原理就已经十分清楚了。

    它实际上就是把一个函数方法注册到一个类中,然后这个类在执行的过程中只要一产生相应的事件,就去调用这个注册进来的函数方法。

    有些东西听起来很深奥,只要花时间看一下,再动手实验一把,马上就豁然开朗了~



    展开全文
  • flowable任务监听器 事件监听器

    千次阅读 2020-03-26 16:38:00
    任务监听器:针对UserTask节点 事件监听器:针对任意节点 使用场景:实际情况下可能会在节点开始或结束之后调用业务系统的接口去做同步数据之类的业务处理。 一、定义任务监听器 @Scope @Component(value = ...

    任务监听器:针对UserTask节点
    事件监听器:针对任意节点
    使用场景:实际情况下可能会在节点开始或结束之后调用业务系统的接口去做同步数据之类的业务处理。


    一、定义任务监听器

    @Scope
    @Component(value = "taskBusinessCallListener")
    public class TaskBusinessCallListener extends BusinessCallListener implements TaskListener {
        /**
         * rest接口
         */
        private FixedValue restUrl;
        /**
         * 参数 多个的话用分号隔开 实例 userCode:00004737;status:1
         */
        private FixedValue params;
    
        @Override
        public void notify(DelegateTask delegateTask) {
            String processInstanceId = delegateTask.getProcessInstanceId();
            String restUrlStr = null, paramsStr = null;
            if (restUrl != null) {
                restUrlStr = restUrl.getExpressionText();
            }
            if (params != null) {
                paramsStr = params.getExpressionText();
            }
            //执行回调
            restUrlStr = "http://localhost:8501/hznet-gn/floodDispatch/syncDispatch";
            paramsStr = "status:1";
            this.callBack(processInstanceId, restUrlStr, paramsStr);
        }
    }

    二、接口调用

    public void callBack(String pocessInstanceId, String restUrl, String params) {
            String paramsJson = null;
            try {
                //Map<String, Object> paramMap = new HashMap<String, Object>();
                //获取变量
                Map<String, Object> paramMap = runtimeService.getVariables(pocessInstanceId);
                ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(pocessInstanceId).singleResult();
                paramMap.put("businessKey", processInstance.getBusinessKey());
                this.setParams(params, paramMap);
                paramsJson = JSON.toJSONString(paramMap);
                //设置超时时间,否则会报超时错误
                HttpComponentsClientHttpRequestFactory requestFactory=new HttpComponentsClientHttpRequestFactory();
                requestFactory.setReadTimeout(30000);
                requestFactory.setConnectionRequestTimeout(30000);
                requestFactory.setConnectTimeout(30000);
                restTemplate=new RestTemplate(requestFactory);
                //调用业务方法
                logger.info("开始调用业务系统接口" + restUrl + ",业务参数:" + paramsJson);
                restTemplate.postForObject(restUrl, paramsJson, String.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    三、配置监听

    流程定义xml中的delegateExpression与监听类对应!

    展开全文
  • servlet过滤器和监听器,servlet过滤器和监听器课件,servlet过滤器和监听器PPT
  • Javaweb——监听器

    千次阅读 2021-03-20 18:38:54
    文章目录一、监听器的概述1. 监听器是什么2. 监听器用途3. 监听器的术语二、监听器的入门三、Servlet 中的监听器1. Servlet 中监听器简介2. Servlet 中监听器的分类四、监听三个域对象的创建和销毁的监听器(一)...


    一、监听器的概述

    1. 监听器是什么

    • 是一个实现了特定接口的Java类;
    • 用来监听另一个 Java类的方法调用或者属性的改变;
    • 当被监听对象发生了上述事件后,监听器某个方法将会立即被执行。

    2. 监听器用途

    • 用来监听其他对象的变化,主要用在图形化界面开发上。

    3. 监听器的术语

    • 事件源:被监听对象(汽车);
    • 监听器:监听的对象(报警器);
    • 事件源和监听器的绑定:(在汽车上安装报警器);
    • 事件:事件源对象的改变(踹了汽车一脚)——主要功能获得事件源对象。

    二、监听器的入门

    在这里插入图片描述

    三、Servlet 中的监听器

    1. Servlet 中监听器简介

    • 在 Servlet 中定义了多种类型的监听器,他们主要用于监听的事件源分别是:
      • ServletContext
      • HttpSession
      • ServletRequest

    2. Servlet 中监听器的分类

    • 监听三个域对象的创建和销毁的监听器(三个);
    • 监听三个域对象的属性变更(属性添加、移除、替换)的监听器(三个);
    • 监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听器(两个);

    四、监听三个域对象的创建和销毁的监听器(一)——ServletContextListener 监听器的使用

    1. ServletContextListener 监听器作用

    • 用来监听 ServletContext 域对象的创建和销毁的监听器;

    2. ServletContext 创建和销毁

    • ServletContext 创建:服务器启动的时候,为每个web应用创建单独的ServletContext 对象;
    • ServletContext 销毁:服务器关闭的时候,或者项目熊web服务器移除的时候;

    3. ServletContextListener 监听器的方法

    • 监听 ServletContext 对象创建:contextInitialized(ServletContextEvent sce)
    • 监听 ServletContext 对象销毁:contextDestroyed(ServletContextEvent sce)

    4. 编写监听器

    • 监听器代码
      在这里插入图片描述
    • 配置监听器
      在这里插入图片描述

    5. ServletContextListener 企业用途

    • 加载框架的配置文件:
      Spring框架提供了一个核心监听器 ContextLoaderListener;
    • 定时任务调度;

    五、监听三个域对象的创建和销毁的监听器(二)——HttpSessionListener 监听器的使用

    1. HttpSessionListener 监听器作用

    • 用来监听 HttpSession 对象的创建和销毁;

    2. HttpSession 的创建和销毁

    • 创建
      • 服务器端第一次调用 getSession() 方法时创建
    • 销毁
      • Session 过期,默认过期时间为30分钟;
      • 非正常关闭服务器;
      • 手动调用 session.invalidate();

    3. HttpSessionListener 监听器的方法

    • 监听 HttpSession 对象创建:sessionCreated(HttpSessionEvent se)
    • 监听 HttpSession 对象销毁:sessionDestroyed(HttpSessionEvent se)

    4. 编写监听器

    • 编写监听器
      在这里插入图片描述
    • 配置监听器
      在这里插入图片描述

    5. 几个问题

    在这里插入图片描述

    六、监听三个域对象的创建和销毁的监听器(三)——ServletRequestListener 监听器的使用

    1. ServletRequestListener 监听器作用

    • 用来监听 ServletRequest 对象的创建和销毁;

    2. ServletRequest 的创建和销毁

    • 创建:从客户端向服务器发送一次请求,服务器就会创建 request 对象;
    • 销毁:服务器做出了响应之后,request 对象就销毁了;

    3. ServletRequestListener 监听器的方法

    • 监听 ServletRequest 对象创建:requestInitialized(ServletRequestEvent sre)
    • 监听 ServletRequest 对象销毁:requestDestroyed(ServletRequestEvent sre)

    4. 编写监听器

    • 编写监听器
      在这里插入图片描述
    • 配置监听器
      在这里插入图片描述

    5. 几个问题

    在这里插入图片描述

    七、监听三个域对象的属性变更的监听器

    1. ServletContextAttributeListener

    • 监听 ServletContext 对象中的属性变更(属性添加、移除、替换)的监听器;

    2. HttpSessionAttributeListener

    • 监听 HttpSession 对象中的属性变更(属性添加、移除、替换)的监听器;

    3. ServletRequestAttributeListener

    • 监听 ServletRequest 对象中的属性变更(属性添加、移除、替换)的监听器;

    八、监听HttpSession 中Java类状态改变的监听器

    • 保存在 Session 域中的 Java 类可以有多种状态:
      • 从 session 中解除绑定;
      • 随 session 对象持久化到一个存储设备中(钝化);
      • 随 session 对象从一个存储设备中恢复(活化);
    • Servlet 定义了两个特殊的监听的接口,来帮助 Java 类了解自己在 session 域中的状态:
      • HttpSessionBindingListener 接口;
      • HttpSessionActivationListener 接口;
    • 实现这两个接口的类不需要在 web.xml 中进行配置;

    1. HttpSessionBindingListener

    • 用来监听 Java类 在 HttpSession 中的绑定和解除绑定的监听器;

    2. HttpSessionActivationListener

    • 用来监听 HttpSession 中 Java类 的钝化和活化的监听器;
    展开全文
  • 无论是SSH还是SSM只要是做web开发,就无法回避Servlet技术,而Servlet技术是Servlet规范中三个技术点之一,这三个技术点分别是:servlet技术、listener技术和... 监听器就是监听某个对象的状态变化的组件,监听...
  • java 监听器

    千次阅读 2019-07-14 11:32:13
    最开始理解java监听器的时候我有这些疑问! java监听器监听的内容是什么?监听器作用在哪个事件上?是在哪配置的监听内容的? 就带着这些问题理解一下java监听器吧! 首先,监听器要怎么实现? Java事件由事件类...
  • JSP监听器用法分析

    2021-01-08 21:23:32
    本文实例讲述了JSP监听器用法。分享给大家供大家参考,具体如下: 监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会...
  • 监听器:监听事件源对象 事件源对象的状态的变化都会触发监听器 注册监听器:将监听器与事件源进行绑定 响应行为:监听器监听到事件源的状态变化时所涉及的功能代码 二、监听器的编写步骤(重点): 编写一个监听...
  • 监听器讲解

    2015-10-07 22:11:17
    使用HttpSessionBandingListener;监听用户是否登陆 这个监听器特别,是作用在javabean上的。我们在User.java要实现HttpSessionBandingListener接口
  • 事件监听器-源码

    2021-02-12 22:38:41
    事件监听器 事件监听器
  • 一、监听器设计模式 1、事件 ①声明一个天气事件的抽象类 ②定义两个天气事件 2、监听器 ①声明一个天气监听器的接口 ②实现两个天气事件的监听器 3、广播器 ①定义一个广播器的接口 ②实现广播器接口 ③定义...
  • 23. flowable 任务监听器 事件监听器

    千次阅读 2019-12-16 10:18:36
    项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频讲解地址 https://www.bilibili.com/video/av79328344 监听器 任务监听器 事件监听器
  • 过滤器与监听器

    2014-03-12 20:23:26
    Web页面的过滤与监听 了解Filter基本概念和适用场合 掌握使用Filter的基本步骤 会定义和使用Filter 掌握全局对象监听器的使用和应用 掌握会话对象监听器的使用和应用
  • rabbitmq监听器

    2018-10-16 23:40:15
    rabbitmq监听器测试程序,包括建立通道,测试舰艇通道等功能。
  • 文章目录监听器一、监听器模式介绍二、系统监听器介绍三:监听事件触发机制四:自定义监听器 监听器 一、监听器模式介绍 监听器模式可以用下图来体现: 当运行到关键节点的时候,系统会通过广播器发布相应的事件,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 648,310
精华内容 259,324
关键字:

监听器