<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Servlet 生命周期 > 原文: [https://beginnersbook.com/2013/05/servlet-life-cycle/](https://beginnersbook.com/2013/05/servlet-life-cycle/) Servlet 生命周期可以描述為 servlet 在其生命周期中從一系列步驟開始,從加載開始直到它被破壞。 在我開始解釋 Servlet 的生命周期之前,我們先討論一下您在閱讀本指南時會遇到的幾個術語。了解每個術語的含義非常重要,這將有助于您更快地理解事物。 **Web 服務器**:它也稱為 HTTP 服務器,它可以處理客戶端發送的 HTTP 請求,并使用 HTTP 響應來響應請求。 **Web 容器**:也稱為 Servlet 容器和 Servlet 引擎。它是 Web Server 的一部分,與 Servlet 交互。這是管理 Servlet 生命周期的 Web Server 的主要組件。 > 注意:您在本網站中找到的 servlet 教程使用 apache tomcat web 服務器。雖然我將其稱為 Web 服務器,但它實際上是一個 Web 服務器和 Web 容器。 (如上所述,Web 容器是 Web 服務器的一部分)。 ## Servlet 的生命周期 Servlet 生命周期包含五個步驟:1)加載 Servlet,2)創建 Servlet 實例,3)調用`init()`一次,4)為每個客戶端請求重復調用`service()`,5)調用`destroy()` > 對于那些想知道什么是實例和調用的人來說:實例和對象是一回事。調用方法意味著調用一個方法,它只是一個奇特的詞,我們在編程世界中使用而不是調用:) 讓我們回到主題。以下是 servlet 生命周期的五個步驟。 **步驟 1:加載 Servlet** 當 Web 服務器(例如 Apache Tomcat)啟動時,servlet 容器部署并加載所有 servlet。 **步驟 2:創建 Servlet 實例** 一旦加載了所有 Servlet 類,servlet 容器就會創建每個 servlet 類的實例。 Servlet 容器每個 servlet 類只創建一個實例,并且對 servlet 的所有請求都在同一個 servlet 實例上執行。 **步驟 3:調用`init()`方法** 一旦實例化了所有 servlet 類,就會為每個實例化的 servlet 調用`init()`方法。此方法初始化 servlet。您可以在部署描述符(`web.xml`)文件中指定某些`init`參數。例如,如果 servlet 的值`>= 0`,則在 Web 容器啟動期間立即調用其`init()`方法。 您可以在`web.xml`文件中指定元素,如下所示: ```java <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.beginnersbook.MyServletDemo</servlet-class> <load-on-startup>1</load-on-startup> </servlet> ``` 現在,在 Web 容器啟動期間將調用相應 servlet 類`com.beginnersbook.MyServletDemo`的 `init()`方法。 **注意:init()方法在 servlet 的生命周期中只調用一次。** **步驟 4:調用`service()`方法** 每次 Web 服務器收到 servlet 請求時,它都會產生一個調用`service()`方法的新線程。如果 servlet 是`GenericServlet`,那么請求由`service()`方法本身提供,如果 servlet 是`HttpServlet`,則`service()`方法接收請求并根據請求的類型將其分派給正確的處理程序方法。 例如,如果它是`Get`請求,則`service()`方法會通過使用請求參數調用`doGet()`方法將請求分派給`doGet()`方法。類似地,諸如`Post`,`Head`,`Put`等的請求被 servlet 的`service()`方法分派給相應的處理程序`doPost()`,`doHead()`,`doPut()`等。 ![Servlet Life Cycle](https://img.kancloud.cn/35/97/3597bfe01a07038f39defd8d02d62527_650x300.jpg) **注意**:與只調用一次的`init()`和`destroy()`不同,在 servlet 生命周期中可以多次調用`service()`方法。只要不銷毀 servlet,就會為每個客戶端請求調用`service()`方法。 **在生命周期的所有 5 個步驟中,這是多次執行的唯一步驟。** **步驟 5:調用`destroy()`方法** 當 servlet 容器關閉時(這通常在我們停止 Web 服務器時發生),它卸載所有 servlet 并為每個初始化的 servlet 調用`destroy()`方法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看