`

Servlet 生命周期、工作原理

 
阅读更多
Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。
init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

步骤:

Web Client 向Servlet容器(Tomcat)发出Http请求
Servlet容器接收Web Client的请求
Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
Servlet容器创建一个HttpResponse对象
Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
Servlet容器把HttpServlet的响应结果传给Web Client。


Servlet工作原理:

1、首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet()、doPost()等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。

2、每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。

3、Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。


创建Servlet对象的时机:

Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。
Servlet Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。
分享到:
评论

相关推荐

    Servlet-Servlet生命周期

    ### Servlet生命周期详解 #### 一、引言 在Java Web开发中,Servlet作为一种重要的技术,被广泛应用于构建动态网页和处理客户端请求。了解Servlet的生命周期对于深入理解和掌握Servlet的工作机制至关重要。本文将...

    SERVLET生命周期与JSP生命周期比较

    ### SERVLET生命周期与JSP生命周期比较 #### 一、引言 在现代Web开发中,Servlet和JSP是两种非常重要的技术,它们都属于Java EE平台的一部分,主要用于构建动态Web应用程序。这两种技术各有特点,但又紧密相关,...

    servlet生命周期演示代码

    通过以上分析,我们可以清楚地看到 Servlet 生命周期的不同阶段是如何工作的。初始化 (`init`) 是在 Servlet 首次被加载时发生的;请求处理 (`service` 或 `doGet`/`doPost`) 是在每次接收到客户端请求时发生的;...

    Servlet 介绍 以及Servlet生命周期(详细)

    **Servlet生命周期** Servlet的生命周期可以分为三个主要阶段:初始化、服务和销毁。 1. **初始化阶段**: - 当Servlet首次被请求或者在web应用启动时,容器(如Tomcat)会加载Servlet类,并调用`init()`方法进行...

    【黑马程序员】Servlet生命周期与工作原理.pdf

    Servlet生命周期主要分为三个阶段: 1. 初始化阶段:当Servlet容器(如Tomcat)启动时,可以通过在`web.xml`配置文件中设置`&lt;load-on-startup&gt;`标签来指定Servlet在容器启动时自动加载。如果未设置或值为负数,...

    servlet生命周期

    #### 三、Servlet生命周期详解 ##### 实例化 - **按需创建**:默认情况下,当第一次HTTP请求到达时,容器会创建Servlet的实例。 - **预加载**:通过在`web.xml`中配置`&lt;load-on-startup&gt;`标签,可以在应用启动时...

    Servlet生命周期,http

    Servlet生命周期是理解Servlet工作原理的关键,而HTTP协议则是Servlet交互的基础。接下来,我们将深入探讨这两个主要知识点。 首先,让我们了解一下HTTP(超文本传输协议)。HTTP是互联网上应用最为广泛的一种网络...

    Servlet生命周期与工作原理详解

    Servlet 生命周期与工作原理详解 Servlet 生命周期可以分为三个阶段:初始化阶段、响应客户请求阶段和终止阶段。 初始化阶段 在初始化阶段,Servlet 容器装载 Servlet,创建一个 Servlet 实例,并调用 Servlet 的...

    servlet运行原理及生命周期.pdf

    ### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...

    Servlet 工作原理解析

    5. Servlet生命周期管理 Servlet容器负责管理Servlet的生命周期,包括初始化(`init()`)、服务(`service()`)、销毁(`destroy()`)三个阶段。`init()`方法在Servlet实例创建时调用,`service()`方法处理每个请求...

    Web编程(Java )-Servlet的生命周期.doc

    这个方法只在Servlet生命周期的开始时调用一次,用于进行初始化设置,如读取配置信息等。 3. **服务**: 当有HTTP请求到达时,服务器调用Servlet的`service(ServletRequest, ServletResponse)`方法。在这个方法中...

    SERVLET基本原理

    Servlet 的生命周期是 SERVLET 的核心概念,理解 SERVLET 的生命周期是非常重要的。SERVLET 的生命周期包括装载、初始化、服务和销毁四个阶段,每个阶段都有其特定的功能和用途。 SERVLET 的初始化参数可以在 web....

    servlet容器工作原理

    通过了解`javax.servlet.Servlet`接口的基本概念及其在Servlet生命周期中的作用,读者可以更好地理解Servlet容器的内部机制。 #### 二、Servlet容器的基本概念 Servlet容器是一种用于部署和执行Servlet的软件环境...

    servlet工作原理

    ### Servlet工作原理详解 #### 一、Servlet简介与工作流程 Servlet是一种服务器端的Java应用程序,主要用于接收客户端发送的HTTP请求,...理解Servlet的工作原理及其生命周期管理对于构建高效稳定的Web应用至关重要。

Global site tag (gtag.js) - Google Analytics