java中的监听事件
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中的监听事件的更多相关文章
- [置顶] java Gui 键盘监听事件
简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...
- JAVA JComboBox的监听事件(ActionListener、ItemListener)
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 参考资料: http://263229365.iteye.com/blog/1040329 https://www.ja ...
- EditText中onEditorAction监听事件执行两次
Android的EditText通过setOnEditorActionListener给文本编辑框设置监听事件,但是在其处理方法onEditorAction中的逻辑在每次回车后都触发了两次, 原来是在 ...
- ionicModal中的监听事件
//添加监听事件angular.module('MyApp').directive('gotTapped', ['$ionicGesture', function($ionicGesture) { r ...
- js中的监听事件总结
javascript事件与功能说明大全:http://tools.jb51.net/table/javascript_event 1.滚动条监听事件 例1:监听滚动条距离页面顶端距离 <scri ...
- EventTrigger动态添加监听事件
在 Unity3D 中,通过拖拽的方式在 EventTrigger 组件中添加监听事件就不多说了,很简单.这里主要说的是通过代码动态往 EventTrigger 组件中添加监听事件,有个很坑的地方,就 ...
- vue v-on监听事件
在html或jsp页面中我们总能碰到监听DOM事件来触发javaScript代码,下面我们就简单聊聊Vue.js中的监听事件是怎么处理的. 在vue.js中监听事件是通过v-on指令来实现的,先看一下 ...
- Android中Button的五种监听事件
简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...
- Vue 为什么在 HTML 中监听事件?
为什么在 HTML 中监听事件? 你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念.不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑 ...
随机推荐
- 51nod 1298 圆与三角形
给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 输入 第1行:一个数 ...
- zTree返回的菜单列表中根据权限打勾
需求:管理员登录后台后可以为角色添加菜单,同时要能看到该角色已经拥有的菜单. 想法一:刚开始写的时候很迷茫,因为我们有可能会为该角色增加别的菜单,所以不能只加载该角色已经拥有的菜单,只加载该角色的菜单 ...
- vuecli3修改项目启动端口
工作中可能存在启动多个项目的时候,默认端口号会被占,导致启动错误,这种情况下只要把要启动的项目的端口号换掉启动未用的端口就可以了,具体实现如下: vuecli3中的端口文件存放目录为:node_mod ...
- Aix之 xmanager 2.0连接AIX服务器
xmanager连接AIX服务器可以分为两种情况:1.连接IBM服务器,使用远程桌面功能进行系统维护.要求这台服务器已经安装了图形桌面,如CDE等,并启动到图形界面.在xmanager中的Xbrows ...
- Volley请求图片
ImageRequest imageRequest = new ImageRequest(Config.USER_ASSETS_URL + md5(userid) + "/images/av ...
- java 执行bat批处理文件 并关闭cmd窗口
java 执行bat批处理文件 并关闭cmd窗口 import java.io.IOException; public class CmdMain { public static void main( ...
- cors,跨域资源共享,Java配置
一.概念 1. 如果两个页面的协议.域名和端口是完全相同的,那么它们就是同源的,不同则为跨域 2. ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允 ...
- Memcached的限制和使用建议
1. 在Memcached中可以保存item数据量没有限制的,只要内存足够 2. Memcached单进程最大使用内存2G,要使用更多内存,可以分多个端口开启多个Memcached进程 3. Memc ...
- DM8127 更改调试串口为UART2
1.uboot修改 1)修改宏定义 /*include/config/ti8148_evm.h*/ #define CONFIG_SYS_NS16550_COM2 0x48024000 #define ...
- (转)winform下TCP通信的简单应用
本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557064 先看效果图: TCP比较繁琐的就是三次握手定理,每次再发送数据前 ...