`
江金鸿
  • 浏览: 26718 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javaee listener 介绍

    博客分类:
  • java
 
阅读更多

一、 listener

在Web项目中,我们可以使用Listener接口来监听Container的中一些对象状态的变化,并且根据这些对象的状态的变化做出相应的响应。

在Servlet 2.4和JSP 2.0 规范中一共有八个listener接口和六个event事件类。

当一个事件发生的时候我们可以使用listener中的某个方法去对事件做出相应的响应,这些方法的参数都是java.util.EventObject的子类。

这些Listener与其方法对应的Event参数类型如下图:

上图详细描述了八个listener接口和与其对应的event类

我们大致可以把八个listener分成三类,分别为与ServletContext、HttpSession、ServletRuquest相关的listener,在上图中已经使用不同的底色进行标注。

 

由于listener在实际的应用中好像不如预计的广泛,所以底下只简单介绍接口、方法、参数和注意点(统计在线人数和在线人员名单也许是用的最多的使用listener的实现了)。

 

好了,让我们从与ServletContext相关的两个接口开始吧

 

首先ServletContext是整个Web应用的上下文,所以这个对象里存放的应该是和整个Web应用相关的东西(在线人数明显很符合这个特点)

 

ServletContextListener

 

void contextInitialized(ServletContextEvent sce)

这个方法在Container初始化整个Web应用时调用,运行在该Web应用中servlet和filter初始化之前

 

void contextDestroyed(ServletContextEvent sce)

这个方法在Container卸载整个Web应用时调用,运行在该Web应用中servlet和filter的destroy()方法之后

 

ServletContextAttributeListener

 

void attributeAdded(ServletContextAttributeEvent scab)

这个方法在通过ServletContext的void setAttribute(String name, Object object)向ServletContext新添加一个name为名,object为值得对象之后被调用

void attributeReplaced(ServletContextAttributeEvent scab)

这个方法在通过ServletContext的void setAttribute(String name, Object object)替换ServletContext中name对应的值之后被调用

void attributeRemoved(ServletContextAttributeEvent scab)

这个方法在通过ServletContext的void removeAttribute(String name)删除ServletContext中以name为名的键值对之后或者ServletContext被销毁之前被调用。

 

ServletContextAttributeEvent提供两个方法:

String getName()返回键值对的名也就是name。

Object getValue()这个方法,在attributeAdded中返回新添的键值对的值;在attributeReplaced和中attributeRemoved返回原键值对的值。

 

 

HttpSessionListener

 

void sessionCreated(HttpSessionEvent se)

当一个session被创建之后,容器调用此方法。

void sessionDestroyed(HttpSessionEvent se)

当一个session将要被销毁时,容器调用此方法。

 

HttpSessionEvent只有一个方法HttpSession getSession(),该方法返回对应的session。

 

 

HttpSessionActivationListener

这个接口一般和Servlet容器的集群有关系,它监听的是同一个session转移至不同的JVM的事件。

void sessionDidActivate(HttpSessionEvent se)

当一个session对象已经变成有效的状态的时候,容器调用此方法

void sessionWillPassivate(HttpSessionEvent se)

当一个session对象将要变成无效状态的时候,容器调用此方法

 

 

HttpSessionAttributeListener

这个接口和ServletContextAttributeListener方法一样,唯一的差别即是:

ServletContextAttributeListener针对的是ServletContext,而HttpSessionAttributeListener针对的Session。

 

void attributeAdded(HttpSessionBindingEvent se)

这个方法在通过HttpSession的void setAttribute(String name, Object object)向HttpSession新添加一个name为名,object为值得对象之后被调用

void attributeReplaced(HttpSessionBindingEvent se)

这个方法在通过HttpSession的void setAttribute(String name, Object object)替换HttpSession中name对应的值之后被调用

void attributeRemoved(HttpSessionBindingEvent se)

这个方法在通过HttpSession的void removeAttribute(String name)删除HttpSession中以name为名的键值对或者HttpSession失效时被调用之后被调用。

 

HttpSessionBindingEvent提供三个方法:

String getName()返回键值对的名也就是name。

Object getValue()这个方法,在attributeAdded中返回新添的键值对的值;在attributeReplaced和中attributeRemoved返回原键值对的值。

HttpSession getSession() 返回发生此事件的HttpSession对象。

 

 

HttpSessionBindingListener

注意:这个listener是一个比较特殊的listener,它不需要在web.xml中进行配置。

此listener需要存放于session中的对象实现此接口,才能被响应。

 

void valueBound(HttpSessionBindingEvent event)

此方法通过HttpSession的void setAttribute(String name, Object object)被调用。其中object需要实现HttpSessionBindingListener接口。

 

void valueUnbound(HttpSessionBindingEvent event)

此方法通过HttpSession的void removeAttribute(String name)或者HttpSession失效时被调用。其中nam对应的object需要实现HttpSessionBindingListener接口。

 

这个接口和HttpSessionAttributeListener差别为,此接口不需要在web.xml中配置并且可以监听单个类的对象被放入session或者从session中去掉的动作。而HttpSessionAttributeListener需要在web.xml中配置,并且是监听所有类的对象。

 

 

ServletRequestListener

void requestInitialized(ServletRequestEvent sre)

request初始化之后,容器调用此方法。

void requestDestroyed(ServletRequestEvent sre)

request消亡之前,容器调用此方法。

 

ServletRequestEvent提供二个方法:

ServletContext getServletContext()

返回此事件request对象对应的ServletContext

ServletRequest getServletRequest()

返回此事件的request对象

 

ServletRequestAttributeListener

这个listener作用和ServletContextAttributeListener和HttpSessionAttributeListener类似,不过它监听的是ServletRequest对象。

 

void attributeAdded(ServletRequestAttributeEvent srae)

这个方法在通过ServletRequest的void setAttribute(String name, Object object)向ServletRequest新添加一个name为名,object为值得对象之后被调用

void attributeReplaced(ServletRequestAttributeEvent srae)

这个方法在通过ServletRequest的void setAttribute(String name, Object object)替换ServletRequest中name对应的值之后被调用

void attributeRemoved(ServletRequestAttributeEvent srae)

这个方法在通过ServletRequest的void removeAttribute(String name)删除ServletRequest中以name为名的键值对或者ServletRequest失效时被调用之后被调用。

 

 

ServletRequestAttributeEvent除了继承了ServletRequestEvent的ServletContext getServletContext()和ServletRequest getServletRequest()还提供了:

String getName()返回键值对的名也就是name

Object getValue()这个方法,在attributeAdded中返回新添的键值对的值;在attributeReplaced和中attributeRemoved返回原键值对的值。

 

 

除了HttpSessionBindingListener以外,其他的listener都必须在web.xml中进行配置。

配置的方法很简单就是在web.xml中最后一个</filter-mapping>后,添加一个

 

 

 

 

<listener>

<listener-class>squall.servlet.listener.Listener</listener-class>

</listener>

 

其中squall.servlet.listener.Listener为某一个listener的实现类。

分享到:
评论

相关推荐

    JavaEE综合练习项目-快递e栈源码

    JavaEE综合练习项目,涉及:html、css、js、Jquery、bootstrap、layui、layer、ajax、mysql、tomcat、servlet、filter、listener、jsp和公有云服务器。

    详解JavaWeb中的 Listener

    JavaWeb里面的listener是通过观察者设计模式进行实现的。下面通过本文给大家详细介绍javaweb中的listener,感兴趣的朋友一起看看吧

    java_web_第9章_Filter与Listener.ppt

    11.1 Web应用的事件模型 11.2 Web应用的过滤器 11.3 小 结 11.1.1 事件与监听器接口 11.1.2 监听环境事件 11.1.3 监听请求事件 11.1.4 监听会话事件 11.1.5 事件监听器的注册

    160G!全新升级版 JAVAEE云计算全栈就业班课程 完美试炼JAVAEE企业级云计算应用

    ├&lt;阶段1 java语言基础&gt; │ ├基础语法&gt; ...│ ├和Listener&gt; │ ├ │ ├和JSON&gt; │ ├ │ ├基础&gt; │ ├旅游网&gt; │ ├ │ └ ├&lt;阶段3.1 Mybatis·&gt; │ ├课程介绍及环境搭建&gt; │ ├入门案例&gt; │ ├&lt;03.

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    JAVA EE 开发手册.CHM

    JAVA EE 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。...8、监听器Listener 9、注解( Annotation)

    老杜javaweb教程配套资料JavaEE帮助文档分享

    主要内容包括:Servlet、JSP、EL表达式、JSTL标签库、Filter过滤器、Listener监听器。在讲解过程中采用的手法是从0到1,让小白学会源码分析,让大牛眼前一亮。总之,不管你是小白,还是已经在从事Java开发的工作者,...

    JavaEE求职简历-姓名-JAVA开发工程师.docx

    2.熟悉Java Web应用开发,熟悉listener、Filter、EL、JSTL等常用技术; 3.熟悉Spring MVC、Spring Boot、Spring DataJPA 的使用,掌握Spring的Ioc与Aop思想; 4.掌握基于Spring整合常用框架并进行项目开发的经验,如:...

    JavaEE求职简历-姓名-JAVA开发工程师-范文.doc

    熟练掌握java基础,包括面向对象、多线程、IO流、UDP/TCP、socket、文件上传下载、XML解析、JSON解析、servlet、filter、listener、HTTP协议等等; 熟练掌握 使用jdbc标准连接数据库,掌握DDL、DML、DCL、DQL和...

    JavaEE 5.0 Tutorial.pdf

    Sun 官方 J2ee 5.0 教程 The Java EE 5Tutorial For Sun Java System Application Server 9.1 Contents Preface ..................................................................................................

    DOS命令使用方法(超全).

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;!-- 利用spring监听 编码设置 --&gt; &lt;filter-name&gt;SpringCharacterEncodingFilter ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    java及javaweb编程教程、ssm、商城实战项目、how2j网站的全站教程、包含从前端到后端全栈技术

    包括spring、spring mvc、mybatis、spring+mybatis、SSM、springboot、javaee 商城项目、ssm商城项目、springboot商城项目,工具和中间件,包括maven、git、Intellij IDEA、Redis、WebSocket、shiro、quartz、...

    生活轨迹SSH服务端

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;!-- 默认找的文件名 --&gt; &lt;/listener&gt; &lt;!-- Context Configuration locations for Spring XML files --&gt; ...

    (重温)JavaWeb–Filter 过滤器(JavaWeb 的三大组件之一)

    三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 Filter 过滤器它是 JavaEE 的规范。也就是接口 Filter 过滤器它的作用是:拦截请求,过滤响应。  拦截请求常见的应用场景有: 1、权限检查 2、...

    zhaoeh.github.io

    关于JavaEE核心组件Listener,Filter,Servlet等。关于Java操作JDBC的方式与过程,对于JDBC封装,连接池等概念与应用。网页技术HTML,CSS,JavaScript,JQuery,Ajax等。 MySQL数据库基础知识,DDL,DML等。其他模块...

    javaweb详细笔记,绝对详细(内含代码)

    javaweb ...知识点 Javascript知识点 jQuery知识点 14 ...javaEE的开发模式 65 事务(JDBC) 67 Json数据格式(重要) 70 Js原生Ajax和Jquery的Ajax 71 监听器Listener 74 邮箱服务器 79 过滤器Filter

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    &lt;listener-class&gt;flex.messaging.HttpFlexSession&lt;/listener-class&gt; &lt;/listener&gt; MessageBrokerServlet 是真正处理 Flex 远程调用请求的 Servlet,我们需要将其映射到指定的 URL: 清单 5. 定义 Flex ...

Global site tag (gtag.js) - Google Analytics