定义
- 事件源:执行某些操作时,产生事件;事件源中注册了监听器,将产生的事件传给监听器,由监听器处理事件
- 事件:由事件源执行某些操作时产生,事件中包含事件源,这样监听器可以根据事件源执行特定的处理操作
- 监听器:很多事件的处理方法,根据事件或事件源,执行不同操作
事件监听处理流程
事件源–》添加事件监听器–》执行活动,生成事件,触发事件监听器–》事件监听器:根据传入的事件,执行某些操作
事件源、事件、监听器关系:
- 事件源通过事件监听器注册方法,为自身添加事件监听器
- 事件监听器中,实现了事件的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 版权协议,转载请附上原文出处链接和本声明。