`
iwindyforest
  • 浏览: 234735 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet中的八大Listener

阅读更多

 

 

 

JSP/Servlet 中的事件处理写过AWT或Swing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响应。

其实我们在编写JSP/Servle程序时,也有类似的事件处理机制,所不同的是在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。


1. Servlet中的Listener和Event:

在JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event类别。
ServletContextListener接口
[接口方法] contextInitialized()与 contextDestroyed()
[接收事件] ServletContextEvent
[触发场景] 在Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。

ServletContextAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] ServletContextAttributeEvent
[触发场景] 若有对象加入为application(ServletContext)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、attributeRemoved()。

HttpSessionListener
[接口方法] sessionCreated()与sessionDestroyed ()
[接收事件] HttpSessionEvent
[触发场景] 在session (HttpSession)对象建立或被消灭时,会分别呼叫这两个方法。

HttpSessionAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[触发场景] 若有对象加入为session(HttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。

HttpSessionActivationListener
[接口方法] sessionDidActivate()与 sessionWillPassivate()
[接收事件] HttpSessionEvent
[触发场景] Activate与Passivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象重新加载JVM时所采的动作称之为Activate,所以容易理解的,sessionDidActivate()与 sessionWillPassivate()分别于Activeate后与将Passivate前呼叫。

ServletRequestListener
[接口方法] requestInitialized()与 requestDestroyed()
[接收事件] RequestEvent
[触发场景] 在request(HttpServletRequest)对象建立或被消灭时,会分别呼叫这两个方法。

ServletRequestAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[触发场景] 若有对象加入为request(HttpServletRequest)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。

HttpSessionBindingListener
[接口方法] valueBound()与valueUnbound()
[接收事件] HttpSessionBindingEvent
[触发场景] 实现HttpSessionBindingListener接口的类别,其实例如果被加入至session(HttpSession)对象的属性中,则会呼叫 valueBound(),如果被从session(HttpSession)对象的属性中移除,则会呼叫valueUnbound(),实现HttpSessionBindingListener接口的类别不需在web.xml中设定。

2. 如何注册Servlet中的事件
实现上面这几个接口的类别,除了HttpSessionBindingListener外,必须在web.xml中向容器注册,容器才会在对应的事件发生时呼叫对应的类别,如:
 < listener > 
 < listener-class > demo.servlet.listener.CustomServletContextListener

3. Servlet事件的应用实例

看到这里,你也许会有疑问: 了解这些 listener和event 有什么用呢?我平时开发没有用到这些,一样也能完成任务啊.

不错,在日常的开发中很少用到这些事件处理的方面,但是在某些情况下使用事件处理机制却可以达到事半功倍的效果,例如下面两个例子:

4.Java类实例
==========
//侦听启动和关闭
import javax.servlet.ServletContextListener;
import javax.servlet.*;

public class TigerListen implements ServletContextListener {
 public void contextInitialized(ServletContextEvent sce)
 {
  System.out.print("Init") ;
 }
 public void contextDestroyed(ServletContextEvent sce)
 {
  System.out.print("Destroved") ;
 }
}

对应的web.xml是
============
<!----><listener></listener>
    <listener-class></listener-class> TigerListen
 
 

============

分享到:
评论

相关推荐

    servlet 中文帮助文档

    总结,"Servlet中文帮助文档"覆盖了Servlet的基础概念、API使用、配置方式以及高级特性,对于学习和使用Servlet进行Web开发具有极大的参考价值。通过深入学习和实践,开发者能够熟练地构建高效、动态的Web应用程序。

    Java_Servlet.zip_servlet

    八、监听器(Listener) 监听器是用于监听特定事件的组件,如会话创建、销毁、上下文初始化和销毁等。它们通过实现特定接口并注册到web.xml中。 九、MVC框架与Servlet 现代Web开发中,Servlet常与Model-View-...

    Java Servlet

    2. 监听器(Listener):监听Web应用中特定事件,如会话创建、销毁、请求到达等,实现响应式编程。 八、实战应用 1. 动态网页生成:Servlet可以动态生成HTML内容,提供个性化服务。 2. 数据库操作:通过JDBC接口,...

    Web开发中文手册之Servlet3.1规范.zip

    Servlet3.1规范是Java Web开发中的一个重要里程碑,它在Servlet3.0的基础上进行了一系列的增强和优化,为开发者提供了更多的灵活性和效率提升。这份"Web开发中文手册之Servlet3.1规范"无疑是广大Java Web开发者的...

    servlet 3.1规范

    例如,可以通过`@WebServlet`,`@WebFilter`和`@WebListener`注解直接在类级别定义它们。这种注解驱动的编程模式极大地简化了部署和维护过程。 二、异步处理增强 在Servlet 3.1中,异步处理得到了进一步增强。...

    Java Servlet帮助文档

    尽管Servlet可以直接处理请求,但在大型项目中,通常会使用如Spring MVC这样的MVC框架,它简化了Servlet的使用,提供了模型、视图和控制器的分离,增强了可维护性和可扩展性。 八、实战与进阶 学习Java Servlet时,...

    servlet api

    八、监听器Listener Servlet API中的监听器(如ServletContextListener、HttpSessionListener等)可以在特定事件发生时自动执行代码,如Web应用启动、会话创建或销毁等。 总结,Servlet API是Java Web开发的基础,...

    Servlet 2.5 API

    八、监听器(Listener) Servlet 2.5还支持各种事件监听器,如ServletContextListener、ServletRequestListener和ServletSessionListener。这些监听器可以监听特定的Servlet事件,例如Web应用启动、请求到达、会话...

    JavaServlet2.3英文帮助文档

    在Servlet2.3中,开发者可以通过实现`javax.servlet.Servlet`接口中的`init()`和`destroy()`方法来管理这些阶段。`init()`方法在Servlet首次被请求时调用,用于进行初始化工作;`destroy()`方法在Servlet不再需要时...

    servlet入门宝典

    九、Listener编程 监听器(Listeners)可以监听Web应用中的特定事件,如会话创建、销毁,或者ServletContext的属性更改。 总之,Servlet是Java Web开发的重要组成部分,理解并掌握Servlet的原理和实践,是成为一名...

    Java Servlets编程指南

    八、Servlet与JSP的配合 JavaServer Pages(JSP)是另一种用于构建动态Web应用的技术。Servlet通常用于处理业务逻辑,而JSP则专注于视图层的展示。通过Servlet转发或重定向到JSP,可以实现前后端分离,使代码结构更...

    javaweb中的笔记

    web.xml是JavaWeb应用的配置文件,定义Servlet、Filter、Listener、MVC映射等,以及初始化参数、欢迎文件等设置。 九、Java Persistence API(JPA) JPA是Java标准的数据持久化框架,用于简化数据库操作。学习实体...

    Java基础 Servlet监听器详解

    在Servlet 2.4和JSP 2.0规范中,一共定义了八个接口类和六种事件。这些接口及其监听的事件类型如下: - ServletContextListener:监听ServletContext对象的初始化和销毁事件。 - ServletContextAttributeListener:...

    SpringMVC4整合tiles3

    在`servlet-context.xml`中,配置Tiles3的视图解析器: ```xml &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"&gt; ...

    HowTomcatWorks

    3. **服务初始化**:Catalina加载并启动Web应用,解析web.xml文件,配置Servlet、Filter和Listener。 三、请求处理流程 1. **接收请求**:Coyote接收到来自客户端的HTTP请求,并将其转化为Java对象。 2. **路由...

    JavaWeb学习笔记

    ### JavaWeb基础知识概述 ...同时,理解MVC模式和学习如何使用过滤器(Filter)、监听器(Listener)等技术也能极大地提升开发效率和代码质量。通过实践案例的学习,可以更好地理解和运用这些技术来解决实际问题。

    广工Java web课程 作业

    学生可能需要在作业中实现简单的MVC架构,例如使用Servlet作为Controller,数据库操作作为Model,JSP作为View。 四、JDBC与数据库交互 Java Database Connectivity (JDBC) 是Java访问数据库的标准接口。在Java Web...

    myeclipse实现用户登录的详细教程

    在web.xml文件中,我们需要配置Servlet和Listener。右键点击“sample”-&gt;“webroot”-&gt;“web-inf”-&gt;“web.xml”,并打开web.xml文件。在web.xml文件中,我们需要添加Servlet和Listener。 六、配置...

Global site tag (gtag.js) - Google Analytics