监听器Listener

在这里插入图片描述

一、基本概念

1.JavaWeb中的监听器是Servlet规范中定义的一种特殊类
2. 监听器用于监听Web应用中某些对象的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当监听范围的对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计网站在线人数、系统加载时进行信息初始化、统计网站的访问量等等
3.它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest。他监听这三个域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件
4.监听器常用的用途
1)统计在线人数,利用HttpSessionLisener

2)加载初始化信息:利用ServletContextListener

3)统计网站访问量

4)实现访问监控

二、java监听器的原理与实现

1. 监听器模型涉及以下三个对象
1)事件:用户对组件的一个操作,称之为一个事件

2)事件源:发生事件的组件就是事件源

3)事件监听器(处理器):监听并负责处理事件的方法
2. 执行顺序
1)给事件源注册监听器

2)组件接受外部作用,也就是事件被触发

3)组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器

4)事件处理器启动,并执行相关的代码来处理该事件

image

3. 监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法;更形象地说,监听者模式是基于:注册-回调的事件/消息通知处理模式,就是被监控者将消息通知给所有监控者

三、监听器的分类

1.它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象
2.Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:
1)监听域对象自身的创建和销毁的事件监听器

2)监听域对象中的属性的增加和删除的事件监听器

3)监听绑定到HttpSession域中的某个对象的状态的事件监听器(后续了解)	

四、监听创建和销毁

1.监听ServletContext域对象
1)ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听

2)当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法

3)当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法

4)ServletContext域对象创建和销毁时机:

    (1)创建:服务器启动针对每一个Web应用创建ServletContext

    (2)销毁:服务器关闭前先关闭代表每一个web应用的ServletContext
2.监听HttpSession域对象的创建和销毁
1)HttpSessionListener 接口用于监听HttpSession对象的创建和销毁

2)创建一个Session时,激发sessionCreated (HttpSessionEvent se) 方法

3) 销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se) 方法
3.监听ServletRequest域对象的创建和销毁
1) ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁

2) Request对象被创建时,监听器的requestInitialized(ServletRequestEvent sre)方法将会被调用

3) Request对象被销毁时,监听器的requestDestroyed(ServletRequestEvent sre)方法将会被调用

4) ServletRequest域对象创建和销毁时机:

    (1) 创建:用户每一次访问都会创建request对象

    (2) 销毁:当前访问结束,request对象就会销毁    

五、监听域对象中属性的变更的监听器

1.基本说明:
(1)域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器

(2)这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener

(3)这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同
2.attributeAdded 方法
(1)当向被监听对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行响应,这个方法接收一个事件类型的参数,
     监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象

(2)public void attributeAdded(ServletContextAttributeEvent sre);  
3.attributeRemoved 方法
(1)当删除被监听对象中的一个属性时,web容器调用事件监听器的attributeRemoved方法进行响应

(2)public void attributeRemoved(ServletContextAttributeEvent sre);

4.attributeReplaced 方法
(1)当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的attributeReplaced方法进行响应

(2)public void attributeReplaced(ServletContextAttributeEvent sre);

六、监听器实现步骤:

1.编写一个类,实现某个Listerner接口(比如:实现ServletContextListener接口,监听ServletContext对象的创建和销毁)
2.重写接口中的方法(比如:实现ServletContextListener接口的contextInitialized()和contextDestroyed()方法 )
3.在web.xml文件中注册监听器
<listener>
      <!--实现了ServletContextListener接口的监听器类 -->
      <listener-class>test.listener.MyServletContextListener</listener-class>
</listener>

参考网址

JavaWeb学习笔记八 监听器

javaweb学习总结(四十四)——监听器(Listener)学习

java----监听器的作用

java监听器的原理与实现

注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
ps : 有错误的还望各位大佬指正,小弟不胜感激

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值