`
cucaracha
  • 浏览: 141502 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:87953
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36731
社区版块
存档分类
最新评论

[Java EE 7] 事件监听器

阅读更多
事件监听器提供了 ServletContext、HttpSession 和 ServletRequest  对象生命周期的回掉事件。

事件监听器类需要实现接口,用于接收这些对象状态发生改变时所发出的通知。

每个监听器都可以通过 @WebListener、或 web.xml、 或 ServletContext.addListener 方法来进行注册。

同一个事件,可能注册了多个监听器进行监听,容器会按照监听器的顺序依次调用监听器的方法。但是在应用程序关闭的时候,监听器会反序调用。

实现 ServletContextListener 用于监听 servlet 上下文的初始化和销毁:

@WebListener
public class MyContextListener implements ServletContextListener {

  @Override
  public void contextInitialized(ServletContextEvent sce) {
    ServletContext context = sce.getServletContext();
    //. . .
  }

  @Override
  public void contextDestroyed(ServletContextEvent sce) {
    //. . .
  }
}


实现 ServletContextAttributeListener 用于监听 servlet 上下文中属性的改变:

public class MyServletContextAttributeListener 
             implements ServletContextAttributeListener {

  @Override
  public void attributeAdded(ServletContextAttributeEvent event) {
    //. . . event.getName();
    //. . . event.getValue();
  }

  @Override
  public void attributeRemoved(ServletContextAttributeEvent event) {
    //. . .
  }

@Override
  public void attributeReplaced(ServletContextAttributeEvent event) {
    //. . .
  }

}


实现 HttpSessionListener 用于监听 session 的创建和销毁:

@WebListener
public class MySessionListener implements HttpSessionListener {

  @Override
  public void sessionCreated(HttpSessionEvent hse) {
    HttpSession session = hse.getSession();
    //. . .
  }

  @Override
  public void sessionDestroyed(HttpSessionEvent hse) {
    //. . .
  }
}


实现 HttpSessionActivationListener 用于监听 session 激活与失活:

public class MyHttpSessionActivationListener 
             implements HttpSessionActivationListener {

  @Override
  public void sessionWillPassivate(HttpSessionEvent hse) {
    // ... hse.getSession();
  }

@Override
  public void sessionDidActivate(HttpSessionEvent hse) {
    // ...
  }    
}


实现 HttpSessionAttributeListener 用于监听 session 中属性的改变:

public class MyHttpSessionAttributeListener 
             implements HttpSessionAttributeListener {

  @Override
  public void attributeAdded(HttpSessionBindingEvent event) {
    HttpSession session = event.getSession();
    //. . . event.getName();
    //. . . event.getValue();
  }

  @Override
  public void attributeRemoved(HttpSessionBindingEvent event) {
    //. . .
  }

  @Override
  public void attributeReplaced(HttpSessionBindingEvent event) {
    //. . .
  }    
}


实现 HttpSessionBindingListener 用于监听对象绑定到 session,或对象从 session 解除:

public class MyHttpSessionBindingListener 
             implements HttpSessionBindingListener {

  @Override
  public void valueBound(HttpSessionBindingEvent event) {
    HttpSession session = event.getSession();
    //. . . event.getName();
    //. . . event.getValue();
  }

  @Override
  public void valueUnbound(HttpSessionBindingEvent event) {
    //. . .
  }    
}


实现 ServletRequestListener 用于监听 request 对象的创建和销毁:

@WebListener
public class MyRequestListener implements ServletRequestListener {
  @Override
  public void requestDestroyed(ServletRequestEvent sre) {
    ServletRequest request = sre.getServletRequest();
    //. . .
  }

  @Override
  public void requestInitialized(ServletRequestEvent sre) {
    //. . .
  }
}


实现 ServletRequestAttributeListener 用于监听 request 对象上属性的改变。

还有 AsyncListener 用于监听异步事件,比如操作完成、操作超时、操作错误等。

除了用 @WebListener 和 web.xml 定义监听器之外,也可以调用 ServletContext.addListener 方法在代码中定义监听器。可以在 ServletContainerInitializer.onStartup 或 ServletContextListener.contextInitialized 方法中做添加监听器的操作。

ServletContainerInitializer.onStartup 将会在应用程序启动的时候调用:

public class MyInitializer implements ServletContainerInitializer {
  public void onStartup(Set<Class<?>> clazz, ServletContext context) {
    context.addListener("org.example.MyContextListener");
  }
}


文章来源:http://www.aptusource.org/2014/04/java-ee-7-event-listener/
0
0
分享到:
评论

相关推荐

    Java EE 7 Essentials英文版

    3. 事件监听器的使用,开发者可以通过这些监听器捕捉到应用中发生的各种事件,比如会话创建和销毁。 4. 非阻塞I/O操作的引入,这是通过Servlet 3.1规范中的新API实现的。非阻塞I/O可以让服务器在等待I/O操作完成时...

    Java EE Web编程(Eclipse平台)源文件

    11. **JSF(JavaServer Faces)**:Java EE的一种UI组件框架,提供声明式UI编程和事件处理机制。 12. **CDI(Contexts and Dependency Injection)**:Java EE中的依赖注入框架,用于管理对象的生命周期和依赖关系...

    java ee 7 api

    4. **CDI 1.1 (Contexts and Dependency Injection)**:CDI 1.1提供了依赖注入的增强,包括事件监听器、异步执行、可选绑定和拦截器的改进。此外,它还引入了上下文感知的注入,使得对象可以在特定上下文中被创建和...

    Java EE: XML Schemas for Java EE Deployment Descriptors

    在Java EE环境中,`web.xml`文件是另一个关键的部署描述符,它包含了Web应用的整体配置,包括Servlet、过滤器和监听器的定义。而`web-jsptaglibrary_2_1.xsd`则更专注于JSP标签库的配置,是`web.xml`的一个补充。 ...

    java ee教程(电子教案)

    10. **Filter与Listener**:在Java EE中,Filter用于拦截请求并处理,而Listener则监听特定事件,如会话的创建和销毁。 这份Java EE教程将深入讲解这些技术,从基础概念到实际应用,通过实例演示如何使用它们来构建...

    Java EE Web编程(Eclipse 平台)

    资料可能包括Servlet生命周期、服务方法、初始化参数、过滤器和监听器的使用等内容。 4. **JSP(Java Server Pages)**:JSP用于生成动态网页,结合HTML和Java代码。可能涵盖EL(Expression Language)、JSTL(Java...

    Java EE 7白皮书 中文(yr译v0.9)

    8. **Contexts and Dependency Injection (CDI) 1.1**:CDI 1.1扩展了依赖注入的功能,包括异步bean、事件监听器和增强的拦截器模型。 9. **Batch Applications for the Java Platform (JSR 352)**:Java EE 7首次...

    A Java Petstore using the Java EE 7.zip

    作为Java EE 7的一部分,Servlet 3.1提供了对异步处理的支持,以及更强大的过滤器和监听器功能。Petstore应用可能使用Servlet来处理HTTP请求,路由到适当的业务逻辑,并生成响应。 5. **EJB 3.2**: Enterprise ...

    JAVA EE 开发手册.CHM

    JAVA EE 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。 手册结构目录如下: 1、HTP协议 2、...

    Java EE 6 DOC API (html版,英文完整)

    5. **CDI 1.0 (Contexts and Dependency Injection)**:CDI为Java EE应用提供了依赖注入和上下文管理,允许开发者轻松地注入依赖对象,同时支持事件、拦截器和可选绑定。 6. **JAX-RS 1.1 (Java API for RESTful ...

    java ee 5 api(内含chm版本和zip版本)

    Servlet 2.5是Java EE 5中的标准,它增强了对异步处理的支持,并提供了过滤器和监听器等机制来增强应用的功能和灵活性。 2. **JSP(JavaServer Pages)**:JSP是一种用于创建动态网页的技术,允许开发者将HTML代码...

    java-EE-API.zip_Java ee api_java ee 6 api

    在Java EE 6中,Servlet 3.0规范引入了注解配置,允许开发者无需XML文件就能声明Servlet和过滤器,提高了代码的可读性和简洁性。此外,Servlet 3.0还支持异步处理,使得处理长运行任务成为可能。 JSP(JavaServer ...

    Java EE基础实用教程[郑阿奇]

    此外,教程可能还会涵盖Web服务(如JAX-WS和JAX-RS)、过滤器(Filters)、监听器(Listeners)以及MVC设计模式等内容。通过学习这些知识,开发者能够具备构建复杂企业级应用的能力,为职业发展奠定坚实的基础。

    java ee5 document

    6. **Servlet 2.5** 和 **JSP 2.1**:这两个版本的更新提升了Web容器的性能和稳定性,并增加了新的特性,如过滤器(Filter)、监听器(Listener)和EL(Expression Language)表达式的增强。 7. **WS-I (Web ...

    JAVA EE 6 jar包集合

    5. **Servlet 3.0**:Servlet规范的第三个版本允许在web.xml之外进行动态部署,支持异步处理,增强了过滤器和监听器的功能,使得配置更加灵活。 6. **JavaServer Pages (JSP) 2.2**:JSP 2.2 提供了更好的EL表达式...

    java_ee_sdk-5-javadocs

    在Java EE 5中,Servlet 2.5规范引入了更强大的过滤器和监听器,支持注解配置,使得部署和配置更加简单。 2. **JSP(JavaServer Pages)**:JSP是一种动态网页技术,允许开发者将HTML代码与Java代码混合编写。Java ...

    JAVA EE API-1.5&1.6.

    - Servlet 2.5:增强了Servlet规范,提供了对HTTP会话监听器、过滤器链和异步处理的支持。 - JPA (Java Persistence API) 1.0:首次引入,提供了一种标准的ORM(对象关系映射)机制,使Java应用可以直接操作数据库...

    java EE复习重点

    - **监听器**:监听特定事件的发生,并执行相应的动作。 - **类型**:`ServletContextListener`、`HttpSessionListener`、`ServletRequestListener` 等。 - **接口实现**:实现对应的监听器接口,如 `...

    JAVA EE开发所要用到的dtd文件

    它定义了`web.xml`文件的结构,其中包含有关Web应用的信息,如Servlet、过滤器、监听器、会话配置等。 2. `ejb-jar_3_2.dtd`:这是Enterprise JavaBeans (EJB) 3.2规范的DTD,用于描述`ejb-jar.xml`文件,定义了EJB...

Global site tag (gtag.js) - Google Analytics