java web 监听器listener详解

转载 2015年07月10日 11:07:13

一、监听器原理:

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

java web 监听器详解

 

简单的说,被监听对象A中,关联着B对象。事件源A类对外提供一个方法,用于设置监听器对象BA类的某一实例变量中。在需要监听事件源的方法中,方法体的某一处先构造创建一个Event对象,将thisB与相关的动作封装进Event对象中,然后调用监听器B对象的doXXXX(event)方法,将事件对象传入方法实参中。

简单的类图示例:

java web 监听器详解

二、简介:

Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为SerlvetConext,HttpSessionServletRequest这三个域对象。

Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型:

1>监听三个域对象创建和销毁的事件监听器

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

3>监听绑定到HttpSession域中的某个对象的状态的时间监听器。

a、如三个域对象的创建与销毁方法签名:

ServletRequestListener有以下两个方法

void requestDestroyed(ServletRequestEvent sre)  

void requestInitialized(ServletRequestEvent sre) 

HttpSessionListener有以下两个方法

void sessionCreated(HttpSessionEvent se) 

void sessionDestroyed(HttpSessionEvent se)  

ServletContextListener

void contextDestroyed(ServletContextEvent sce) 

void contextInitialized(ServletContextEvent sce)  

b、三个类型对象域中增、删、改的监听器(3个)

ServletContextAttributeListener

HttpSessionAttributeListener

ServletRequestAttributeListener

c、感知型监听器(2个):监听自己何时被帮到session上,何时解绑了;何时被钝化了,何时被活化了(序列化到某个存储设置中)

注意:这种监听器不需要注册。某个javabean实现这些接口后就可以监听何时被绑定、解绑或被激活或钝化。

HttpSessionBindingListener:实现该接口的类,能检测自己何时被Httpsession绑定,和解绑

HttpSessionActivationListener:实现该接口的类(要求些javabean必须是实现了Serializable接口的),能监测自己何时随着HttpSession一起激活和钝化。

三、Listenner的注册

Javaweb的这些特别的监听器注册比较简单,因为ServletRequestHttpSessionServletContext对象都是容器创建的,所以需要它们的监听器的话,只需要在应用的web-infoweb.xml里配置即可:

<listener>

<listener-class>com.test.listener.MyHttpSessionAttributeListener</listener-class>

<listener-class>com.test.listener.MyServletContextAttributeListener</listener-class>

<!--  多个实现相同的Listenner接口,在执行时是按web.xml注册出现的来决定。 -->

</listener>

注意:感知型监听器HttpSessionBindingListenerHttpSessionActivationListener不需要注册。

三、应用场景:

由于ervletRequestHttpSessionServletContext对象都是容器创建的,什么时候创建,用户都不知道。通过实现这些对象的监听器后,就可以得知了。比如:

1>ServletContextLintener监听器的contextInitialized方法中,进行应用级的资源初始化以便提高效率,在contextDestroyed方法中对应用级的资源进行释放。

2>又比如web应用中,会存在会话,通常的作法是将当前登录的用户存放在session会话中。那么如何统计在线人数话,如何显示出当前登录的用户呢。如何踢出某些已登录的用户呢。就可以通过HttpSessionAttributeListener监听器的attributeAdded方法。

等等。

java web之监听器介绍

java web中的三大组件分别是servlet listener filter。而其中的listener便就是java web中的监听器。       首先介绍一下监听器就是一个接口,接口的内容由...
  • xulu_258
  • xulu_258
  • 2015年06月27日 16:35
  • 837

java web listener 监听器

监听器:     正对WEB环境的监听     主要有三类:         1.ServletContext:对servlet上下文(application对象)进行监听         2...
  • cilen
  • cilen
  • 2011年10月06日 00:33
  • 28175

javaweb常用监听器

Servlet 规范中定义了很多监听器,用于监听Servlet三个数据域对象创建销毁和 内部数据状态改变 Servlet三种存储范围:ServletContext、HttpSession、Servle...
  • qq_33665647
  • qq_33665647
  • 2016年12月31日 10:15
  • 1303

JavaWeb 监听器

一、事件监听机制        事件监听机制涉及到三个组件:事件源、事件监听器、事件对象。当事件源上发生操作时,事件源会调用事件处理器的一个方法响应操作,并且在调用方法时还会把事件对象传递给事件处理...
  • DriverKing
  • DriverKing
  • 2011年09月12日 00:10
  • 1864

java web中监听器的使用

使用Listener类 当java  web应用程序在web容器中运行时,在java web应用程序内部会不断发生各种事件,例如web应用的启动,暂停,销毁等。以及web应用中session开始和结...
  • uniqueweimeijun
  • uniqueweimeijun
  • 2017年02月04日 17:55
  • 2160

JavaWeb-监听器Listener解析与实例

首先来介绍一下什么是监听器:监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听另外一个类的方法调用。 这是使用观察者模式的。什么是观察者模式: 定义对象间一对多的依赖关系,当一个对...
  • qq_26525215
  • qq_26525215
  • 2016年08月19日 18:05
  • 5320

JavaWeb三大组件(Servlet、Filter、Listener)

JavaWeb三大组件指的是:Servlet、Filter、Listener,这三个组件在JavaWeb开发中分别提供不同的功能,然而很多人可能只用过其中一个或者两个(Servlet、Filter,比...
  • xiaojie119120
  • xiaojie119120
  • 2017年06月15日 10:17
  • 2805

JavaWeb-Listener

话说:Listener
  • meiceatcsdn
  • meiceatcsdn
  • 2017年10月08日 00:06
  • 112

Java Web学习(38):Listener学习(二)

监听器分类         继续接着监听器的分类进行,来看第二种分类中的第二小类。        ServletContextAttributeListener实例        MyServletC...
  • erlian1992
  • erlian1992
  • 2016年08月16日 13:41
  • 699

Java三大器之监听器(Listener)的工作原理和代码演示

现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动 而启动,只初始化一...
  • reggergdsg
  • reggergdsg
  • 2016年10月22日 12:00
  • 23122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java web 监听器listener详解
举报原因:
原因补充:

(最多只允许输入30个字)