java监听器实现的类

1.ServletContextListener:对servlet上下文的创建和销毁监听

2.ServletContextAttributeListener:监听servlet上下文属性的添加、删除和替换

3.HTTPSessionListener:对Session的创建和销毁监听

      session的销毁有两种情况:1). session超时(可以在web.xml中通过<session-config>/<session-timeout>标签配置超时         时间);2). 通过调用session对象的invalidate()方法使session失效。

4.HttpSessionAttributeListener:对Session对象中属性的添加、删除和替换进行监听

5.ServletRequestListener:对请求对象的初始化和销毁进行监听。

6.ServletRequestAttributeListener:对请求对象属性的添加、删除和替换进行监听

上边6个类是java给我提供的监听的类,在使用时之间实现其接口,以及接口中方法即可

public class OnlinePerListener implements HttpSessionListener{

	private int userCounter = 0;
@Override
public void sessionCreated(HttpSessionEvent session) {
userCounter++;
session.getSession().setAttribute("userCounter", userCounter);
} @Override
public void sessionDestroyed(HttpSessionEvent session) {
userCounter--;
session.getSession().setAttribute("userCounter", userCounter);
} }

PS:无论是自己写的监听事件,还是使用java提供的监听,都需要在web.xml中对其进行配置

<listener>
<listener-class>com.JavaListener.TestListener</listener-class>
</listener>

下边写自己实现监听器:

监听器设计主要涉及三个组件

1.事件源:即事件发生的源头,例如一条狗,他可以发出动作。

2.事件对象:是对事件源的实例化,进而可以设置其相应的属性

3.事件监听器:用来监听事件源发出的动作。

/*
* 创建事件源
*/
public class Dog {
//定义一个监听器对象,用来接收传递进来的事件监听器
private DogListener listener; public void registListener(DogListener dogListener){
this.listener=dogListener;
} public void shout(){
if(listener!=null){
Even even = new Even(this);
this.listener.doshout(even);
}
System.out.println("汪汪汪................");
} public void watch(){
if(listener!=null){
Even even = new Even(this);
this.listener.dowatch(even);
}
System.out.println("狗会看门..............");
}
}
public class TestListener implements DogListener{
public static void main(String[] args) {
Dog dog = new Dog();
dog.registListener(new TestListener());
dog.shout();
dog.watch();
} @Override
public void doshout(Even even) {
//拿到事件源,可以进行操作
Dog dog = even.getDog(); System.out.println("叫之前的动作");
} @Override
public void dowatch(Even even) {
System.out.println("看门之前的动作"); }
}

java中的监听事件的更多相关文章

  1. [置顶] java Gui 键盘监听事件

    简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...

  2. JAVA JComboBox的监听事件(ActionListener、ItemListener)

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   参考资料: http://263229365.iteye.com/blog/1040329 https://www.ja ...

  3. EditText中onEditorAction监听事件执行两次

    Android的EditText通过setOnEditorActionListener给文本编辑框设置监听事件,但是在其处理方法onEditorAction中的逻辑在每次回车后都触发了两次, 原来是在 ...

  4. ionicModal中的监听事件

    //添加监听事件angular.module('MyApp').directive('gotTapped', ['$ionicGesture', function($ionicGesture) { r ...

  5. js中的监听事件总结

    javascript事件与功能说明大全:http://tools.jb51.net/table/javascript_event 1.滚动条监听事件 例1:监听滚动条距离页面顶端距离 <scri ...

  6. EventTrigger动态添加监听事件

    在 Unity3D 中,通过拖拽的方式在 EventTrigger 组件中添加监听事件就不多说了,很简单.这里主要说的是通过代码动态往 EventTrigger 组件中添加监听事件,有个很坑的地方,就 ...

  7. vue v-on监听事件

    在html或jsp页面中我们总能碰到监听DOM事件来触发javaScript代码,下面我们就简单聊聊Vue.js中的监听事件是怎么处理的. 在vue.js中监听事件是通过v-on指令来实现的,先看一下 ...

  8. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  9. Vue 为什么在 HTML 中监听事件?

    为什么在 HTML 中监听事件? 你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念.不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑 ...

随机推荐

  1. IOS Quartz 2D 学习(1)

    IOS提供两种创建图形的途径: 1.OpenGL. 2.Quartz.Core Animation.UIKit图形支持. UIKit的图形系统 1.视图绘画周期: DrawRect方法,在任何时候,当 ...

  2. 实现一个scnprinf

    #include <stdio.h> #include <stdarg.h> /* 该函数ret = min(size, 实际写入长度) - 1,即ret永远小于size * ...

  3. gradle 安装试用

    1. java 环境(jdk 6 以上,最好使用8以及以上) yum install -y java-1.8.0-openjdk-devel 2. 基本配置 // path 路径 export PAT ...

  4. Java面试题:栈和队列的实现

    面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要 ...

  5. 你知道SOCKET吗

    要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主 ...

  6. (转)Apache转发配置

    本文转载自:http://blog.csdn.net/leshjmail/article/details/6163581 安装文件 1.httpd-2.2.15-win32-x86-no_ssl.ms ...

  7. 今天去python官网下载包安装的时候的问题记录

    去官网下载了 tar压缩包 放到了site-packages下解压 然后使用 python setup.py install 安装 安装完后,所要引用的模块文件居然还在解压出来的压缩文件里面,导致无法 ...

  8. 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)

    Deleting Edges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  9. PHP5.6 安装Yaf 2.3.5

    Yaf 安装 PHP5.6 安装Yaf 2.3.5 1.下载 https://github.com/laruence/yaf 2.phpize /usr/bin/phpize 3.配置 ./confi ...

  10. Zabbix 客户端自定义端口监控

    http://www.linuxidc.com/Linux/2013-05/83780.htm