Java事件监听

  • Post author:
  • Post category:java




定义
  • 事件源:执行某些操作时,产生事件;事件源中注册了监听器,将产生的事件传给监听器,由监听器处理事件
  • 事件:由事件源执行某些操作时产生,事件中包含事件源,这样监听器可以根据事件源执行特定的处理操作
  • 监听器:很多事件的处理方法,根据事件或事件源,执行不同操作


事件监听处理流程

事件源–》添加事件监听器–》执行活动,生成事件,触发事件监听器–》事件监听器:根据传入的事件,执行某些操作



事件源、事件、监听器关系:
  • 事件源通过事件监听器注册方法,为自身添加事件监听器
  • 事件监听器中,实现了事件的handler方法:根据传入的事件或事件的事件源,执行具体操作
  • 事件源的某个动作,将(主动)触发事件监听器的handler方法处理事件



监听器的常用用途
  • 统计在线人数,利用httpsessionlistener
  • 加载初始化信息,利用servletcontextlistener
  • 统计网站访问量
  • 实现访问监控


实例demo


监听器类
package com.example.testspring.eventListener;

/**
 * 监听器接口
 * dingwen
 * 2021/5/30 14:35
 **/
public interface DeveloperListener {
    /**
     * 工作
     *
     * @param event 事件
     */
    void work(Event event);

    /**
     * 研究
     *
     * @param event 事件
     */
    void study(Event event);
}



实体类
package com.example.testspring.eventListener;

/**
 * 开发者类
 * dingwen
 * 2021/5/30 14:34
 **/
public class Developer {
    private DeveloperListener developerListener;


    /**
     * 注册监听器
     *
     * @param developerListener 开发人员监听器
     */
    public void registerListener(DeveloperListener developerListener) {
        this.developerListener = developerListener;
    }

    /**
     * 工作
     */
    public void work() {
        if (developerListener != null) {
            this.developerListener.work(new Event(this));
        }
        System.out.println("developer work");
    }


    /**
     * 研究
     */
    public void study(){
        if (developerListener != null){
            this.developerListener.study(new Event(this));
            System.out.println("developer study");
        }
    }

    public static void main(String[] args) {
        Developer developer = new Developer();
        developer.registerListener(new DeveloperListenerImpl());
        developer.study();
        developer.work();
    }
}



监听器实现类
package com.example.testspring.eventListener;


/**
 * developer listener impl
 * dingwen
 * 2021/5/30 14:38
 **/
public class DeveloperListenerImpl implements DeveloperListener {
    @Override
    public void work(Event event) {
        Developer developer = event.getDeveloper();
        System.out.println("work developer impl listener");

    }

    @Override
    public void study(Event event) {
        Developer developer = event.getDeveloper();
        System.out.println("study developer impl listener");

    }
}



运行结果



版权声明:本文为qq_47100953原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。