談談 web容器請求處理流程

什麼是web容器?

Web容器是一種服務程序,給處於其中的應用程序組件提供環境,使其直接跟容器中的環境變量交互,不必關注其它系統問題。主要由應用服務器來實現,如Tomcat、JBoss,Weblogic、WebSphere等。

最常見的tomcat就是這樣一個容器。如果web服務器應用得到一個指向某個servlet的請求,此時服務器不是把servlet交給servlet本身,而是交給部署該servlet的容器。要有容器向servlet提供http請求和響應,而且要由容器調用servlet的方法,如doPost或者doGet。

容器啟動時的加載順序

1、啟動一個WEB項目的時候,WEB容器會去讀取它的配置文件web.xml,讀取<context-param>結點。/<context-param>

2、容創建一個ServletContext(servlet上下文),這個 web項目的所有部分都將共享這個上下文。

3、容器將<context-param>轉換為鍵值對,並交給 servletContext。 因為listener, filter 等在初始化時會用到這些上下文中的信息,所以要先加載。 /<context-param>

4、容器創建<listener>中的類實例,創建監聽器。/<listener>

5、加載filter和servlet

load- on-startup 元素在web應用啟動的時候指定了servlet被加載的順序,它的值必須是一個整數。

如果它的值是一個負整數或是這個元素不存在,那麼容器會在該servlet被調用的時候,加載這個servlet。如果值是正整數或零,容器在配置的時候就加載並初始化這個servlet,容器必須保證值小的先被加載。如果值相等,容器可以自動選擇先加載誰。

web.xml 的加載順序是:context-param -> listener -> filter -> servlet。

談談 web容器請求處理流程

web容器的作用

servlet需要由web容器來管理,那麼採取這種機制有什麼好處呢?

通信支持 :

利用容器提供的方法,你可以簡單的實現servlet與web服務器的對話。否則你就要自己建立server搜創可貼,監聽端口,創建新的流等等一系列複雜的操作。而容器的存在就幫我們封裝這一系列複雜的操作。使我們能夠專注於servlet中的業務邏輯的實現。

生命週期管理 :

容器負責servlet的整個生命週期。如何加載類,實例化和初始化servlet,調用servlet方法,並使servlet實例能夠被垃圾回收。有了容器,我們就不用花精力去考慮這些資源管理垃圾回收之類的事情。

多線程支持 :

容器會自動為接收的每個servlet請求創建一個新的java線程,servlet運行完之後,容器會自動結束這個線程。

利用容器,可以使用xml部署描述文件來配置安全性,而不必將其硬編碼到servlet中。

談談 web容器請求處理流程

處理流程

1.瀏覽器發出請求,被web容器獲取到

2.Web服務器首先檢查是否已經裝載並創建了該Servlet的實例對象。如果是,則直接執行第④步,否則,執行第②步。

3.裝載並創建該Servlet的一個實例對象,調用Servlet實例對象的init()方法。

4.創建一個用於封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然後調用Servlet的service()方法並將請求和響應對象作為參數傳遞進去。

5.WEB應用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,並在卸載之前調用Servlet的destroy()方法。

談談 web容器請求處理流程

好啦今天的文章就到這裡了喜歡的話關注一下吧。


分享到:


相關文章: