`
kilysyao
  • 浏览: 1678 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Servlet监听器详解

阅读更多

原文地址:http://www.21jn.net/html/85/n-285.html

Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。
接口:
目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,其中HttpSessionAttributeListener与
HttpSessionBindingListener 皆使用HttpSessionBindingEvent;HttpSessionListener和 HttpSessionActivationListener则都使用HttpSessionEvent;其余Listener对应的Event如下所 示:

 

 

Listener 接口

Event

ServletContextListener

ServletContextEvent

ServletContextAttributeListener

ServletContextAttributeEvent

HttpSessionListener

HttpSessionEvent

HttpSessionActivationListener

HttpSessionAttributeListener

HttpSessionBindingEvent

HttpSessionBindingListener

ServletRequestListener

ServletRequestEvent

ServletRequestAttributeListener

ServletRequestAttributeEvent

 


一 ServletContext相关监听接口

 补充知识:通过ServletContext 的实例可以存取应用程序的全局对象以及初始化阶段的变量。
 在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。
 
 注意:全局对象即Application范围对象,初始化阶段的变量指在web.xml中,经由<context-param>元素所设定的变量,它的范围也是Application范围,例如:

 <context-param>
  <param-name>Name</param-name>
  <param-value>browser</param-value>
 </context-param>
 
 当容器启动时,会建立一个Application范围的对象,若要在JSP网页中取得此变量时:
  String name = (String)application.getInitParameter("Name");
 或者使用EL时:
  ${initPara.name}
 若是在Servlet中,取得Name的值方法:
  String name = (String)ServletContext.getInitParameter("Name");

 1.ServletContextListener:
 用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
 ServletContextListener 是 ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。

 ServletContextListener接口的方法:
  void contextInitialized(ServletContextEvent sce)  
 通知正在接受的对象,应用程序已经被加载及初始化。
  void contextDestroyed(ServletContextEvent sce)  
 通知正在接受的对象,应用程序已经被载出。
 ServletContextEvent中的方法:
 ServletContext getServletContext() 
 取得ServletContext对象

 2.ServletContextAttributeListener:用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性,监听器类需要实现javax.servlet.ServletContextAttributeListener接口。

 ServletContextAttributeListener接口方法:
 void attributeAdded(ServletContextAttributeEvent scab)
 若有对象加入Application的范围,通知正在收听的对象
 void attributeRemoved(ServletContextAttributeEvent scab)
 若有对象从Application的范围移除,通知正在收听的对象
 void attributeReplaced(ServletContextAttributeEvent scab)
 若在Application的范围中,有对象取代另一个对象时,通知正在收听的对象


 ServletContextAttributeEvent中的方法:
 java.lang.String getName()
 回传属性的名称
 java.lang.Object getValue()
 回传属性的值

二、HttpSession相关监听接口
 1.HttpSessionBindingListener接口
 注意:HttpSessionBindingListener接口是唯一不需要再web.xml中设定的Listener

 当我们的类实现了HttpSessionBindingListener接口后,只要对象加入Session范围(即调用HttpSession 对象的setAttribute方法的时候)或从Session范围中移出(即调用HttpSession对象的removeAttribute方法的时 候或Session Time out的时候)时,容器分别会自动调用下列两个方法:
 void valueBound(HttpSessionBindingEvent event)
 void valueUnbound(HttpSessionBindingEvent event)

 思考:如何实现记录网站的客户登录日志, 统计在线人数?

 2.HttpSessionAttributeListener接口
 HttpSessionAttributeListener监听HttpSession中的属性的操作。
 当 在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。这和ServletContextAttributeListener比较类似。

 3.HttpSessionListener接口
 HttpSessionListener监听HttpSession的操作。当创建一 个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。

 4.HttpSessionActivationListener接口
  主要用于同一个Session转移至不同的JVM的情形。

四、ServletRequest监听接口
 1.ServletRequestListener接口和ServletContextListener接口类似的,这里由ServletContext改为ServletRequest
 2.ServletRequestAttributeListener接口和ServletContextListener接口类似的,这里由ServletContext改为ServletRequest

分享到:
评论

相关推荐

    JAVA培训Servlet监听器.pdf

    JAVA Servlet 监听器详解 JAVA Servlet监听器是指在Servlet容器中,用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后做一些必要的处理。监听器可以分为多种类型,每种类型都有其特定的应用场景和...

    Java基础 Servlet监听器详解

    Java Servlet监听器是Java Servlet API中的一个重要组成部分,它们允许开发者在Web应用的生命周期内的某些关键点添加自定义行为。具体来说,监听器可以监控Web应用中的三个主要对象:ServletContext(代表整个Web...

    我收集的servlet中事件监听器机制we吧xml配置详解

    在Servlet中,事件监听器机制和`web.xml`配置是两个关键的概念,它们极大地增强了应用的灵活性和可扩展性。 事件监听器机制在Servlet中扮演着重要角色,它允许程序员对特定的事件进行响应,例如请求到达、会话创建...

    监听器 过滤器 详解

    在Java Web开发中,监听器(Listeners)和过滤器(Filters)是两个非常重要的概念,它们主要用于增强应用程序的功能和性能。这两个组件都是Servlet规范的一部分,能够帮助开发者在Web应用程序的不同阶段进行介入,...

    Servlet3.0特性详解

    这是Servlet3.0的一个核心特性,通过实现`ServletContainerInitializer`接口,可以在应用启动时执行自定义的初始化代码,用于注册监听器、过滤器等,增强了扩展性。 5. **Microcontainer支持**: Servlet3.0支持...

    【动力节点】Javaweb开发视频教程之监听器

    教程名称: 【动力节点】Javaweb开发视频教程之监听器 动力节点推出的Java视频教程包含两大部分内容:第一部分为监听器相关设计模式的详解。其中包括观察者设计模式、监听器设计模式。第二部分为监听器用法。详细...

    servlet/jsp深入详解源代码

    `ch10`和`ch11`可能涉及到了Servlet的过滤器和监听器;`ch12`可能涵盖了JSP的基础语法;`ch15`至`ch19`可能讲解了更高级的主题,如EL(Expression Language)、JSTL(JavaServer Pages Standard Tag Library)、MVC...

    javaweb_高级_过滤器_监听器

    【JavaWeb 高级:过滤器与监听器详解】 在JavaWeb开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们能够帮助我们实现更精细的控制和管理应用程序的行为。本篇将详细介绍过滤器的原理、使用...

    servlet 3.0新增功能详解

    在之前的版本中,Servlet、过滤器和监听器都需要在 web.xml 文件中进行声明式配置,而在 Servlet 3.0 中,可以利用注解来替代这些配置。这不仅减少了配置文件的复杂度,也使得代码更加简洁易读。 新增的注解包括但...

    基于java servlet过滤器和监听器(详解)

    在Java Web开发中,Servlet过滤器(Filter)和监听器(Listener)是两种非常重要的组件。它们分别用于实现请求过滤和响应处理、监听Web应用中发生的事件。在这篇文章中,我们将详细探讨这两类组件的定义、实现方法和...

    STRUTS:listener监听器

    ### STRUTS:Listener监听器详解 #### 一、引言 在Java Web开发中,监听器(Listener)是十分重要的组成部分,它们主要用于监听特定事件的发生,并执行相应的处理逻辑。Struts框架作为早期流行的MVC架构之一,充分...

    servlet+filter+listener 详解

    Servlet、Filter、Listener 详解 Servlet 是运行在服务器上的小程序,它可以使任何 Java 应用程序、浏览器或任何设备。Servlet 的客户端可以提出请求并获得该请求的响应。Servlet 在初始化后即驻留内存中,因此每次...

    Spring Boot的listener(监听器)简单使用实例详解

    "Spring Boot的listener(监听器)简单使用实例详解" 在Spring Boot中,listener(监听器)是一种非常重要的组件,它可以帮助我们在应用程序启动和停止时执行一些特定的任务。今天,我们将详细介绍Spring Boot的...

    java字符编码监听器

    Java字符编码监听器是Java Web开发中的一个重要概念,主要用于处理HTTP请求和响应中的字符编码问题。在Java Servlet规范中,提供了`SetCharacterEncodingFilter`这样的过滤器,用于确保请求参数和响应内容的正确编码...

    Java中的拦截器、过滤器、监听器用法详解

    Java中的拦截器、过滤器、监听器用法详解 Java中的拦截器、过滤器、监听器是三个重要的概念,它们在Java Web开发中扮演着非常重要的角色。本文将详细介绍Java中的拦截器、过滤器、监听器的用法,包括它们的功能、...

    Filter过滤器和Listener监听器详解

    Filter过滤器和Listener监听器详解 Filter过滤器 Filter的简介 对资源的访问进行过滤,相当于小区的保安,进去要检查,出去还要检查。 Filter的使用 编写一个类,继承并实现javax.servlet.Filter。 package ...

    servletAPI详解

    监听器是实现了特定接口的对象,能够监听Servlet容器中的特定事件,如会话创建、请求到达等。常见的监听器接口有ServletContextListener、ServletRequestListener、HttpSessionListener等。 总结来说,Servlet API...

Global site tag (gtag.js) - Google Analytics