java中的监听器(listener)

监听器在java应用中比较广泛,记得web启动的时候的监听器吗,记得spring配置中的监听器吗?,记得消息传输中的监听器吗?

没错,这就是listener的应用,无处不在,身为一个java程序员,你如果不懂的监听器的原理是不是很可悲啊,没错我感觉挺可悲的(因为我刚刚才了解到监听器的工作原理),

为了纪念自己取得的一点小小的success,写篇博文记录一下自己的一些不成熟的意见和理解

监听器,就我理解就和我们日常生活中的原始概念一样,就是监听事物的一些行为。举个例子,抗战时期,发现一个国民党特务,报告政府,政府就会派出我们的超级007特工

一路跟踪特务,一发现特务有什么异常举动,立刻报告上级,采取相应的行动。

这里面特务就是事件源

事件源代码:

package com.panther.dong.listener;

/**
 * event type(event source)
 * Created by panther on 15-8-10.
 */
public class SpyEvent {
    private String name; //特务姓名
    private int age;  //特务年龄

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

发现特务组织有两个,一个女特务,一个男特务,所以我们的国安哥哥要辛苦一下,分成两组,分别监听两个组织,一有风吹草动立刻抓起特务,防止破坏

监听任务:

package com.panther.dong.listener;

/**
 * event listener interface
 * Created by panther on 15-8-10.
 */
public interface EventListener {
    //event deal callback
    public void eventDispatched(SpyEvent spyEvent);
}
package com.panther.dong.listener;

/**
 * event listener base class(event driven)
 * Created by panther on 15-8-10.
 */
public abstract class SpyEventListener implements EventListener {
    public abstract void spy(String name, int age);

    @Override
    public void eventDispatched(SpyEvent spyEvent) {
        spy(spyEvent.getName(), spyEvent.getAge());
    }
}

监听女特务(派出女国安):

package com.panther.dong.listener;

/**
 * listener son class to listened event have executed action
 * Created by panther on 15-8-10.
 */
public class WomenSpyEventListener extends SpyEventListener {
    @Override
    public void spy(String name, int age) {
        System.out.println("catch Women spy: name=" + name + ",age=" + age);
    }
}

监听男特务(派出男国安)

package com.panther.dong.listener;

/**
 * listener son class to listened event have executed action
 * Created by panther on 15-8-10.
 */
public class ManSpyEventListener extends SpyEventListener {

    @Override
    public void spy(String name, int age) {
        System.out.println("catch Man spy: name = " + name + ",age=" + age);
    }
}

上级下了命令,特务一搞破坏就回报上级,采取抓扑行动,上级下命令:

package com.panther.dong.listener;

import java.util.ArrayList;
import java.util.List;

/**
 * client method,define a listener list ,execute operate
 * Created by panther on 15-8-10.
 */
public class NationalSecurity {
    private List<SpyEventListener> listener = new ArrayList<SpyEventListener>();

    public void addPersonEventListener(SpyEventListener spyEventListener) {
        this.listener.add(spyEventListener);
    }

    public void execute(String name, int age) {
        for (SpyEventListener spyEventListener : listener) {
            SpyEvent event = new SpyEvent();
            event.setName("have dealed: " + name);
            event.setAge(age);
            spyEventListener.eventDispatched(event);
        }
    }
}

只要execute执行,立马抓扑特务,上级的命令!!!!

上级下命令了,实施抓捕行动:

package com.panther.dong.listener;

/**
 * Created by panther on 15-8-10.
 */
public class Main {
    public static void main(String[] args) {
        NationalSecurity nationalSecurity = new NationalSecurity();
        // add two listener
        nationalSecurity.addPersonEventListener(new WomenSpyEventListener());
        nationalSecurity.addPersonEventListener(new ManSpyEventListener());
        //execute call,satisfy condition notify listener
        nationalSecurity.execute("name", 20);
    }
}

最后,两名特务被抓捕!!国安胜利~~~

运行结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 10:45:46

java中的监听器(listener)的相关文章

【java web】监听器listener

一.简介 Java的监听器,也是系统级别的监听.监听器随web应用的启动而启动.Java的监听器在c/s模式里面经常用到,它会对特定的事件产生产生一个处理.监听在很多模式下用到,比如说观察者模式,就是一个使用监听器来实现的,在比如统计网站的在线人数. 1.1 监听器分类 1) 按监听的对象划分,可以分为: ServletContext对象监听器 HttpSession对象监听器 ServletRequest对象监听器 2)按监听的事件划分 对象自身的创建和销毁的监听器 对象中属性的创建和消除的监

好记性不如烂笔头34-java应用中的监听器Listener(1)

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行. 在很多的地方,很多的行为,都需要去监听.比如我们有一辆汽车,汽车点火之后,我们要检查汽车的各项状态:汽车开动之后,要做一些处理,这些都可以通过监听去实现. 我们如果想设计一个汽车,让这个汽车的各种状态可以被别

java web用监听器listener简单的实现在线统计人数

今天又重新学习了java web的基础 监听器技术,用sessionListener简单的实现了网页统计在线人数 (有一个bug就是当关闭网页的时候 session不会关闭依旧存在,除非关闭服务器),代码如下(前端网页代码就不显示了): LoginServlet.java: 1 import javax.servlet.ServletException; 2 import javax.servlet.annotation.WebServlet; 3 import javax.servlet.ht

Java Web(五) 监听器Listener

监听器概述 在上一篇里介绍了过滤器Filter,而Listener是Servlet的另一个高级特性.Listener用于监听Java Web程序中的事件,例如创建,修改,删除Session,request,context等,并触发相应的事件.Listener主要用于对Session,request,context等进行监控,目前共有8种Listener,分别完成对不同事件的监听. 使用Listener不需要关注事件是怎样触发的或者怎么调用相应的Listener,只要记住该类事件触发时一定会调用相

java中的监听器

package listener; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyListener implements Servl

[09] 监听器 Listener

1.事件 1.1 事件的概念 在Servlet中有一个概念叫做监听,顾名思义,就是监听某种事件是否发生.就如你是一家娱乐媒体公司的老板,你派出狗仔队去跟着某些明星,比如你想了解他们的绯闻,或者活动进展情况.这里的绯闻和活动进展情况,就是所谓的事件. 在Web编程中,某些操作总会触发一种事件的发生,如启动或关闭容器.创建和销毁对话等.我们说过,Java是面向对象的语言,所以当发生了某种事件,容器将会创建对应的事件类对象. 也就是说,API中已经定义好了事件的类型,容器进行了实现,当某些特定操作发生

Java中的Listener 监听器

Listener的定义与作用 监听器Listener就是在application,session,request三个对象创建.销毁或者往其中添加修改删除属性时自动执行代码的功能组件. Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等. Listener的分类与使用 主要有以下三类: ServletContext监听 ServletContextListener:用于对Servlet整个上下文进行监听(创建.销毁). //上下文初始化 public void cont

javaweb学习总结(四十七)——监听器(Listener)在开发中的应用

监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听器技术来实现这个功能了. 1 package me.gacl.web.listener; 2 3 import javax.servlet.ServletContext; 4 import javax.servlet.http.HttpSessionEvent; 5 import javax.ser

Java中的拦截器、过滤器、监听器

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts2的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程(AOP)的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器