javaweb学习总结—监听器(Listener)
监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象
Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:
监听域对象自身的创建和销毁的事件监听器。
监听域对象中的属性的增加和删除的事件监听器。
监听绑定到HttpSession域中的某个对象的状态的事件监听器。
package campu; import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
//监听器案例——监听window窗口的事件监听器
/**
*java的事件监听机制
*1、事件监听涉及到三个组件:事件源、事件对象、事件监听器
*2、当事件源上发生某一个动作时,它会调用事件监听器的一个方法,并在调用该方法时把事件对象传递进去,
* 开发人员在监听器中通过事件对象,就可以拿到事件源,从而对事件源进行操作。
*/
public class Demo1 {
public static void main(String[] args) {
Frame f=new Frame();
f.setSize(600, 600);
f.setVisible(true);
//注册事件监听器
f.addWindowListener(new WindowListener() { @Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub } @Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub } @Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub } @Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub }
/**
* 当window窗体关闭时就会WindowListener这个监听器监听到,
* 监听器就会调用windowClosing方法处理window窗体关闭时的动作
*/
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
//通过事件对象e来获取事件源对象
Frame f= (Frame) e.getSource();
System.out.println("窗口正在关闭");
} @Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub } @Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub }
});
}
}
事件处理模型涉及到三个组件:事件源、事件对象、事件监听器。
demo:按照事件处理模型来设计一个Person对象。
package campu;
/*
* 设计一个Person类作为事件源,这个类的对象的行为(比如吃饭、跑步)可以被其他的对象监听
*/
interface PersonListener{
void doeat(Event e);//这个方法是用来监听Person对象eat(吃)这个行为动作,当实现类实现doeat方法时就可以监听到Person类对象eat(吃)这个动作
void dorun(Event e); //同上
}
class Event{
private Person source;
public Event() {
// TODO Auto-generated constructor stub
}
public Person getSource() {
return source;
}
public void setSource(Person source) {
this.source = source;
}
public Event(Person source) {
this.source = source;
} }
public class Person {
private PersonListener listener;// 在Person类中定义一个PersonListener变量来记住传递进来的监听器
public void eat(){
/*
* 调用监听器的doeat方法监听Person类对象eat(吃)这个动作,将事件对象Event传递给doeat方法,
* 事件对象封装了事件源,new Event(this)中的this代表的就是事件源
*/
if(listener!=null){
listener.doeat(new Event(this));
}
}
public void run(){
if(listener!=null){
listener.dorun(new Event(this));
}
}
// 这个方法是用来注册对Person类对象的行为进行监听的监听器
public void registerListener(PersonListener listener){
this.listener=listener;
}
}
测试:
package campu; public class PersonTest {
public static void main(String[] args) {
Person p=new Person();
//注册监听p对象行为的监听器
p.registerListener(new PersonListener() { @Override
public void dorun(Event e) {
// TODO Auto-generated method stub
Person p= e.getSource();
System.out.println(p+"在跑步");
}
//监听p吃东西这个行为
@Override
public void doeat(Event e) {
// TODO Auto-generated method stub
Person p= e.getSource();
System.out.println(p+"在吃东西");
}
});
p.eat();
p.run();
}
}
javaweb学习总结—监听器(Listener)的更多相关文章
- JavaWeb学习笔记—监听器
监听器Listener是JavaWeb中的三大组件之一 按监听的对象划分,可以分为 ServletContext对象监听器 HttpSession对象监听器 ServletRequest对象监听器 按 ...
- JavaWeb学习总结-06 Listener 学习和使用
一 Listener 当Web应用在Web容器中运行时,Web应用内部会不断地发生各种事件:如Web应用被启动.Web应用被停止.用户session开始.用户session结束.用户请求到达等,可以用 ...
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- javaweb学习总结(四十四)——监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念
- javaWeb学习总结(11)- 监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- javaWeb学习总结(11)- 监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其 实就是一个实现特定接口的普 ...
- JavaWeb学习 (二十七)————监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- JavaWeb学习 (二十五)————监听器(Listener)
一.监听器介绍 1.1.监听器的概念
- JavaWeb学习笔记(二十一)—— 监听器Listener
一.监听器概述 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对 ...
随机推荐
- Mac修改默认python版本
研究python爬虫,需要用到Beautiful Soup 但是Mac默认的python版本为2.7 自己安装了3.6的版本 import 报错 查找资料: Mac在启动,会先加载系统配置文件(包括~ ...
- 【SQLServer2008】之改变主键当为null时也不会报错,可以入数据库。
在SqlServer红框中设置主键,右键会有添加主键选项,并且设置不能为null. 当我们插入主键数据如果为null时,会插不进去,这时候我们需要修改一下,如下图: “标识规范”中选择“是”,就可以了 ...
- HTTP状态码介绍详细
HTTP协议中几个状态码的含义:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 100 (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分, ...
- sigar 监控服务器硬件信息
转载 http://www.cnblogs.com/jifeng/archive/2012/05/16/2503519.html 通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1 ...
- EasyNVR流媒体服务器网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据
许多问题很难在开发的过程中就想的面面俱到,都是在实际应用.调试的过程中一一的优化的.由于easynvr的受众越来越多,因此也出现了好多在开发之初并没有留意的一些细节.我这次发现的问题就是给客户远程解决 ...
- 淘宝(新浪)API获取IP地址位置信息
package com.parse; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IO ...
- 使用cocos2d-js-3.0RC1中的物理引擎chipmunk模拟的“别碰钉子”源码分享(含碰撞检测)
分别用box2d和chipmunk实现了一下,不过box2d没整理,也懒得整理了.chipmunk整理了一下,分享给大家吧. 刚开始研究,抛砖引玉 简要说明:1.初始化物理环境,增加边界 initPh ...
- 经常遇到js的面试题
大家都知道在面试的时候,很多前端的必须要问的就是js的问题,最近我们公司也有很多这样的面试,我提了一些个问题,还有我面试的时候面试官面试我的问题汇总,也有百度的别人的,希望对那些刚进入这个行业的有一些 ...
- Git with SVN
1)GIT是分布式的,SVN不是: 这 是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别.好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并, ...
- python cookbook第三版学习笔记六:迭代器与生成器
假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items: Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一种存储数据 ...