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

[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 开发手册.CHM

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

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...

    java se和java ee基础功能点开发测试包

    该包围绕java se结合java ee的基础应用对目前最基础最常见的应用分别给以做了相关demo 具体包括有设计模式demo(设配模式、装饰模式、享元模式)、线程池设计方案、集合类容器demo、io流、Cloneable接口、自定义标签...

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

    现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 Spring 框架。...

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

    资源简介现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 ...

    JSF Java Server Faces (JSF)框架

     一些可能包含自定义组件、约束、转换器或者监听器的对象  为在页面中表现自定义对象的一组自定义tag  包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 ...

    javaee-bootstrap:使用Bootstrap的Java EE Project,JSP,Servlet,Hibernate,JPA

    javaee-bootstrap 使用Bootstrap作为接口的Java EE项目,JSP,Servlet,Hibernate,JPA “ Java Web开发”菜单 ... 小程序 Java服务器页面(JSP) ... 事件监听器 Web应用程序中的过滤器 Java Server Faces(JSF)

    求精要诀:JavaEE编程开发案例精讲

    本书系统地介绍Java EE的体系结构、JSP与Servlet在体系结构中的地位、应用服务器和主流开发工具,主要内容包括Web应用框架、Servlet、JSP、会话状态、EL和JSTL、监听器、过滤器、数据库、MVC等。 本书讲解详细且通俗...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    java web 视频、电子书、源码(李兴华老师出版)

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    李兴华Java Web开发实战经典(高清版) Part2

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

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

    &gt; 熟悉 POI 进行文件的导入和导出,有使用监听器、过滤器等 Web 组件以及 MVC 架构模式进行 Java Web 项目开发的经验。 &gt; 掌握一定的 JSP、JavaScript、HTML、CSS、Json、jQuery、Ajax、EasyUI 等技术等技术。 &gt; ...

    javaee笔试题-Java3Y-Study:学习

    :microscope:监听器和过滤器 :ring:数据库 :t-shirt:JDBC :ribbon:AJAX :cooked_rice:JavaWeb小项目 :steaming_bowl:工具使用 :hamburger:Hibernate :page_facing_up:Struts2 :memo:Mybatis :fish_cake_with_swirl:...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    J2EE servlet&jsp 练习二答案

    J2EE servlet&jsp 练习二答案 学习使用Session和Cookie 开发一个简单的购物车; 开发一个简单的用户登录提示系统 设定Session生命周期; 开发一个下载文件的Java EE Web应用;...开发一个Session监听器

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 ...

    sample-slf4j-fluentd

    您可以在不更改应用程序代码的情况下将日志目的地切换到宝数据、ElasticSearch 等: 此示例 Web 应用程序由 Java 8 和 Java EE 7 实现。并在 Java SE Development Kit 8、Update 31 和 GlassFish 4.1 上进行了测试...

Global site tag (gtag.js) - Google Analytics