<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Servlet 的工作原理 > 原文: [https://beginnersbook.com/2013/05/working-of-servlets/](https://beginnersbook.com/2013/05/working-of-servlets/) 在我開始解釋 servlet 如何工作之前,讓我們熟悉這三個術語。 **Web 服務器**:它可以處理客戶端發送的 HTTP 請求,并通過 HTTP 響應響應請求。 **Web 應用(webapp)**:我在本指南中將其稱為 webapp。基本上該項目是您的 Web 應用,它是 servlet 的集合。 **Web 容器**:也稱為 Servlet 容器和 Servlet 引擎。它是 Web Server 的一部分,與 Servlet 交互。這是管理 Servlet 生命周期的 Web Server 的主要組件。 > 您會發現本指南的某些部分已在 [servlet 生命周期指南](https://beginnersbook.com/2013/05/servlet-life-cycle/)中介紹,但本指南主要介紹 servlet 應用(webapp)的工作,而不是生命周期的步驟。我強烈建議您閱讀本文,深入了解 servlet 的實際工作原理。 ## Servlet 如何工作? 1)當 Web 服務器(例如 Apache Tomcat)啟動時,servlet 容器部署并加載所有 servlet。在此步驟中,Servlet 容器創建`ServletContext`對象。`ServletContex`是一個接口,它定義了可以用來與 servlet 容器**通信的方法集。 **注**:**每個 webapp** 只有一個`ServletContext`,這對所有 servlet 都是通用的。`ServletContext`有幾個有用的方法,如`addListener()`,`addFilter()`等。現在我不解釋它們,因為我將在一個關于`ServletContext`的單獨文本中介紹它們。 2)一旦加載了 servlet,servlet 容器就會創建 servlet 類的實例。對于每個實例化的 servlet,調用其`init()`方法。 3)客戶端(用戶瀏覽器)向某個端口上的 Web 服務器發送 Http 請求。每次 Web 服務器收到請求時,servlet 容器都會創建`HttpServletRequest`和`HttpServletResponse`對象。`HttpServletRequest`對象提供對請求信息的訪問,`HttpServletResponse`對象允許我們在將 http 響應發送到客戶端之前對其進行格式化和更改。 servlet 容器生成一個新線程,該線程為每個客戶端請求調用`service()`方法。`service()`方法根據請求類型將請求調度到正確的處理程序方法。 例如,如果服務器收到`Get`請求,則`service()`方法會通過使用請求參數調用`doGet()`方法將請求分派給`doGet()`方法。類似地,諸如`Post`,`Head`,`Put`等的請求被 servlet 的`service()`方法分派給相應的處理程序`doPost()`,`doHead()`,`doPut()`等。 ![Http Servlet](https://img.kancloud.cn/84/17/8417e60c714b7f7e05d8e8a053f45dd2_500x300.jpg) 4)當 servlet 容器關閉時,它會卸載所有 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>

                              哎呀哎呀视频在线观看