`

Servlet - life cycle and listener events

    博客分类:
  • java
 
阅读更多

 

import database.BookDBAO;
import javax.servlet.*;
import util.Counter;

import javax.ejb.*;
import javax.persistence.*;

public final class ContextListener
    implements ServletContextListener {
    private ServletContext context = null;

    @PersistenceUnit
    EntityManagerFactory emf;

    public void contextInitialized(ServletContextEvent event) {
        context = event.getServletContext();
        try {
            BookDBAO bookDB = new BookDBAO(emf);
            context.setAttribute("bookDB", bookDB);
        } catch (Exception ex) {
            System.out.println(
                "Couldn’t create database: " + ex.getMessage());
        }
        Counter counter = new Counter();
        context.setAttribute("hitCounter", counter);
        counter = new Counter();
        context.setAttribute("orderCounter", counter);
    }

    public void contextDestroyed(ServletContextEvent event) {
        context = event.getServletContext();
        BookDBAO bookDB = context.getAttribute("bookDB");
        bookDB.remove();
        context.removeAttribute("bookDB");
        context.removeAttribute("hitCounter");
        context.removeAttribute("orderCounter");
    }
}
 

 

 

Servlet Life Cycle

The life cycle of a servlet is controlled by the container in which the servlet has been deployed. When a request is mapped to a servlet, the container performs the following steps.

  1. If an instance of the servlet does not exist, the web container

    1. Loads the servlet class.

    2. Creates an instance of the servlet class.

    3. Initializes the servlet instance by calling the init method. Initialization is covered in Initializing a Servlet.

  2. Invokes the service method, passing request and response objects. Service methods are discussed in Writing Service Methods.

If the container needs to remove the servlet, it finalizes the servlet by calling the servlet’s destroy method. Finalization is discussed inFinalizing a Servlet.

Handling Servlet Life-Cycle Events

You can monitor and react to events in a servlet’s life cycle by defining listener objects whose methods get invoked when life-cycle events occur. To use these listener objects you must define and specify the listener class.

Defining the Listener Class

You define a listener class as an implementation of a listener interface. Table 4-2 lists the events that can be monitored and the corresponding interface that must be implemented. When a listener method is invoked, it is passed an event that contains information appropriate to the event. For example, the methods in the HttpSessionListener interface are passed an HttpSessionEvent, which contains an HttpSession.

Table 4-2 Servlet Life-Cycle Events

Object

Event

Listener Interface and Event Class

Web context (seeAccessing the Web Context)

Initialization and destruction

javax.servlet.ServletContextListener and

ServletContextEvent

Attribute added, removed, or replaced

javax.servlet.ServletContextAttributeListener and

ServletContextAttributeEvent

Session (See Maintaining Client State)

Creation, invalidation, activation, passivation, and timeout

javax.servlet.http.HttpSessionListener,javax.servlet.http.HttpSessionActivationListener, and

HttpSessionEvent

Attribute added, removed, or replaced

javax.servlet.http.HttpSessionAttributeListener and

HttpSessionBindingEvent

Request

A servlet request has started being processed by web components

javax.servlet.ServletRequestListener and

ServletRequestEvent

Attribute added, removed, or replaced

javax.servlet.ServletRequestAttributeListener and

ServletRequestAttributeEvent

 

 

 

分享到:
评论

相关推荐

    javax.servlet-api-3.1.0.jar

    Servlet API的核心概念包括Servlet、Filter和Listener。Servlet是一种Java类,用于扩展Web服务器的功能,处理来自客户端(如浏览器)的HTTP请求,并向客户端发送响应。例如,一个Servlet可能接收表单数据,处理业务...

    servlet-api-3.0.jar包

    开发者可以使用注解(如`@WebServlet`, `@WebFilter`, `@WebListener`)来声明Servlet、Filter和Listener,而无需在web.xml配置文件中进行硬编码。这极大地提高了代码的可读性和部署的灵活性。 2. **异步处理**:...

    servlet-api 各种版本

    - 实现了监听器(Listener)接口,如ServletContextListener,用于在Servlet容器启动和停止时执行特定操作。 - 引入过滤器(Filter)概念,允许开发者在请求到达Servlet之前进行拦截和处理,实现如权限控制、字符...

    servlet--listener 各种接口的简单例子

    在Java的Web开发中,Servlet和Listener是两个非常重要的组件,它们构成了动态Web应用程序的核心部分。Servlet主要负责处理客户端的请求并返回响应,而Listener则用于监听和响应各种Web应用程序中的事件。本教程将...

    javax-servlet-api-3.0.1.jar

    6. `javax.servlet.annotation`包:包含了各种注解,比如`@WebServlet`、`@WebFilter`和`@WebListener`,使得开发者可以通过注解方式声明Servlet、过滤器和监听器,简化了web.xml配置文件的编写。 7. `javax....

    servlet-api.jar 及源文件

    在Java Web开发中,servlet-api.jar 提供了诸如Servlet、Filter和Listener等核心组件的定义,它们是构建动态Web应用的基础。Servlet是Java编程语言中实现动态网页的一种方式,它接收HTTP请求并返回响应。javax....

    servlet-2_5-api.zip_servlet-2_5-api.jar

    8. **监听器Listener**:Servlet 2.5 API提供了多种监听器接口,如ServletContextListener、ServletRequestListener、HttpSessionListener等,可以监听Web应用程序、请求和会话事件。 9. **URL映射**:Servlet可以...

    Servlet-api setvlet文档

    7. **监听器Listener**:监听器允许我们监听Servlet容器中的特定事件,如会话创建、销毁、上下文初始化等。常见的监听器接口有`ServletContextListener`、`ServletRequestListener`等。 8. **会话Session管理**:...

    jsp-api.jar和servlet-api依赖包

    **JSP(JavaServer Pages)API 和 Servlet API 知识详解** JSP(JavaServer Pages)和Servlet是Java EE(Enterprise Edition)中的两个核心技术,它们主要用于构建动态Web应用程序。这两个API,即`jsp-api.jar`和`...

    servlet-api.zip_servlet-api_servlet-api.jar

    8. **Listener**:Servlet API中还有监听器(Listener),它们可以监听Web应用中的特定事件,如请求到达、会话创建等,并相应地执行代码。 在实际开发中,开发人员通常不会直接操作servlet-api.jar,而是将其作为...

    servlet-3_1-final(中文版).doc

    《Java Servlet 3.1 规范》是中国Java开发者学习Servlet技术的重要参考资料,它详细阐述了Servlet 3.1版本中的各项特性与规范。该文档旨在辅助英文版的学习,帮助开发者更深入地理解和应用Servlet技术。 Servlet是...

    servlet-api-3.0.zip

    - Servlet 3.0提供对Java Naming and Directory Interface (JNDI) 的支持,可以通过`ServletContext`的`lookup()`方法进行资源查找。 10. **部署和热部署**: - 开发者可以使用Servlet 3.0的热部署功能,无需重启...

    servlet-2_4-fr-spec-doc.rar_doc_servlet 2.4 spec_servlet api_ser

    4. **监听器(Listener)**:监听器是实现了特定接口的类,用于监听Servlet容器中的特定事件,如会话创建、销毁、上下文初始化或销毁等。例如,`HttpSessionListener`用于监听会话的创建和销毁。 5. **请求和响应...

    javax.servlet-3.0

    1. **注解配置**:在Servlet 3.0中,开发者可以直接在类或方法上使用注解(如`@WebServlet`、`@WebFilter`和`@WebListener`)来声明Servlet、过滤器和监听器,而无需在web.xml文件中进行繁琐的手动配置。 2. **异步...

    jsp-api.jar(2.3)与servlet-api.jar (3.1)

    5. **注解驱动配置**:Servlet 3.1进一步强化了注解的使用,包括对Servlet、Filter和Listener的注解配置,减少了XML配置文件的需求。 6. **多文件上传**:在Servlet 3.1中,可以通过单个`Part`接口处理多个文件上传...

    servlet-api.jar

    Servlet-api.jar是一个重要的Java Web开发库,主要用于实现服务器端的Servlet和JSP(JavaServer Pages)功能。在Java EE(企业版)环境中,Servlet扮演着核心角色,它是一种用于扩展Web服务器功能的Java API。...

    servlet-api 集合

    2. **Servlet-API 2.3**:发布于2000年,这个版本引入了Servlet Filter和Servlet Listener的概念。Servlet Filter允许开发者在请求到达目标Servlet之前或之后对其进行拦截和处理,用于实现如日志记录、性能监控、...

    jsp-api.jar和servlet-api.jar

    6. **过滤器和监听器** - Servlet API中还包括Filter和Listener接口,它们能增强应用的功能,比如实现登录验证、字符编码转换、会话管理等。 7. **Web容器** - 如Tomcat、Jetty等,它们提供运行Servlet和JSP的环境...

    javax.servlet-api

    `javax.servlet-api`是一个关键的Java库,它定义了Servlet、过滤器(Filter)和监听器(Listener)等核心接口,是开发Java Servlet应用的基础。这个库通常以JAR(Java Archive)文件的形式存在,例如在提供的`javax....

    servlet-api所需的jar包

    8. **监听器Listener**:Servlet API还定义了一系列事件监听器接口,如`ServletRequestListener`、` HttpSessionListener`,允许你在特定的Web事件发生时执行代码,如会话创建、销毁等。 9. **部署描述符web.xml**...

Global site tag (gtag.js) - Google Analytics