java监听器模式使用场景_JavaEE框架类——监听者(观察者模式)和Servlet技术的监听器...

1.监听器:

监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听别一个类的方法调用。都是使用观察者设计模式。

什么是观察者模式:

定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。

示例: GUI编程中的addXxxxListener都是观察者模式。

2.观察者模式的三个重要类:

- 被监听者事件源

- 注册一个监听器XXXListener

- 事件对像Event

3.观察者设计模式示例:

开发步骤:

* 第一步:实现一个需要被监听的类Cat.

* 第二步:实现一个监听接口ICatListener。

* 第三步:在Cat类中,提供一个方法用于注册ICatListener类,即addListener

* 第四步:必须要在Cat类中维护ICatListener类的实例。

* 第五步:在调用cat.climb方法是,判断ICatListener是否为null,如果不为null则调用它的climb方法。

* 第六步:在Main类中,实例化Cat,并注册一个监听。

4.给观察者模式-添加事件源:

开发步骤:

第一步:在前页的基础上继续添加一个CatEvent类(注意我说是類不是接口),代表事件对像。

第二步:给CatEvent对像,添加一个Object属性,用以标识事件源对像。

第三步:修改ICatListener接口的climb方法,让它接收一个CatEvent参数。

第四步:在Cat类climb方法中,如果判断ICatListener属性不为空,则在调用climb方法,实例化CatEvent并传给climb方法。

第五步:在main方法中,通过CatEvent的getSource方法测试是否是同一个对像。

第六步:在Cat对象中写入actionCommand的set和get函数,在CatEvent写入actionCommand的get函数

第六步:写个默认的实现ICatListener的实现类

示例代码

Cat.java

public class Cat {

private String name;

private ICatListener listener;

private String actionCommand;

public Cat(String name) {

this.name = name;

}

public void climb(){

System.out.println(name+"好调皮,在爬");

if(listener!=null){

listener.help(new CatEvent(this));//传自己

}

}

public void addCatlistener(ICatListener listener ){

this.listener=listener;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void setActionCommand(String actionCommand) {//获得命令

this.actionCommand = actionCommand;

}

public String getActionCommand() {

return actionCommand;

}

@Override

public String toString() {

return name;

}

}

ICatListener.java

interface ICatListener{

public void help(CatEvent e);

}

CatEvent.jaa

class CatEvent{

private Cat cat;

private String actionCommand;

public CatEvent(Cat cat) {

this.cat = cat;

actionCommand=cat.getActionCommand();//actionCommand在这进行判断

}

public Object getSource(){

return cat;

}

public String getActionCommand() {

return actionCommand;

}

}

DeFaultCatListener.java

class DeFaultCatListener implements ICatListener{

@Override

public void help(CatEvent e) {

System.out.println("这是默认猫做的事");

}

}

有了以上的的基础,下面引入Servlet技术的监听器

0818b9ca8b590ca3270a3433284dd417.png

监听ServletContext的创建和销毁:

开发步骤:

第一步:实现ServletContextListener接口。

第二步:实现两个方法。

contextInitialized

contextDestroyed

第三步:在web.xml中添加节点。

这一点与swing中的添加监听有所区别。

第四步:测试

1、发布项目启动。

2、通过Tomcat管理控制台停止此项目。

ContextListener应用场景:

记录一个网站的刷新量。

当服务器关闭时,必须要保存到文件中或是数据库中去。

当服务器启动时,先从文件中读取并放到ServletContext。

在Filter中记录访问量,每次访问都加1。

好处:信息不是太重要,没有必要每次用户访问都访问数据库或是操作文件。

在为不影响用户的速度感受,应该开始一个新的线程同去操作数据。 这样即使在后台使用同步技术,用户也不会感觉到速度很慢。

HttpSession的监听器:

HttpSessionListener,监听HttpSession的创建和销毁。

sessionCreated

sessionDestroyed

Session的默认有效时间为30分。可以通过配置的方式修改它的值。

可以调用session.invalidate方法销毁当前Session.

主要作用是记录当前所有在线人数,无论是用户还是游客。

Servlet、过滤器、监听器实例化对象的优先级和销毁的优先级

创建(初始化): (ServletContext) 监听器–>过滤器–>Servlet. 调用时候:过滤器–>监听器–>Servlet. 销亡:Servlet–>过滤器–>监听器.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值