一 Tomcat處理請求過程

2021-10-06 21:45:50 字數 897 閱讀 6326

tomcat通過endpoint元件接收socket連線,接收到乙個socket連線後會執行如下步驟

1.第一次從socket中獲取資料inputbuffer中,bio對應的是internalinputbuffer,父類是abstractinputbuffer

2.然後基於inputbuffer進行解析資料

3.先解析請求行,把請求行,請求uri,請求協議等封裝到ruquest物件中

4.request中的屬性都是messagebytes型別的,直接可以理解為位元組型別,因為從socket中獲取的資料都是位元組,在解析的過程中不用直接把位元組轉成字串,並且messagebytes雖然表示位元組,但是他並不會真正的儲存位元組,還是使用的bytechunk基於inputbuffer中的位元組陣列來進行標記,標記位元組陣列中的哪乙個範圍來進行標記,標記位元組陣列中的哪乙個範圍表示請求方法,那個乙個範圍表示請求uri等等.

5.然後解析請求頭,和解析請求行類似

6.解析完請求頭之後,就基於請求頭來初始化一些引數,比如connection是keepalive還是close,比如是否有content-length,並且對應的長度是多少,還包括當前請求在處理請求體時應該使用哪種inputfilter.

7.然後將請求交給容器

8.容器再將請求交給具體的servlet進行處理

9.servlet在處理請求的過程會利用response進行響應,返回資料給客戶端,乙個普通的響應過程會先把資料先寫入乙個緩衝區,當呼叫flush或者close方法時會把緩衝區的內容傳送給socket

10.servlet處理完請求後會先檢查是否需要把響應資料傳送給socket

11.接著看當前請求的請求體是否處理完成,是否還有剩餘資料,如果有剩餘資料需要把這些資料處理掉,以便能夠獲取到下乙個請求的資料

12.然後回到第一步開始處理下乙個請求

Tomcat處理乙個HTTP請求的過程

假設來自使用者的請求為 http localhost 8080 wsota wsota index.jsp 1 請求被傳送到本機埠8080,被在那裡偵聽的coyote http 1.1 connector獲得 2 connector把該請求交給它所在的service的engine來處理,並等待來自e...

Tomcat處理乙個http請求的過程

1 請求被傳送到本機埠8080,被在那裡偵聽的coyote http 1.1 connector獲得 2 connector把該請求交給它所在的service的engine來處理,並等待來自engine的回應 3 engine獲得請求localhost wsota wsota index.jsp,匹...

Tomcat結構以及處理乙個請求的過程

1.tomcat結構 tomcat是乙個基於元件的伺服器,它的構成元件都是可配置的,其中最外層的元件是catalina servlet容器,其他的元件按照一定的格式要求配置在這個頂層容器中。tomcat的各個元件是在 conf server.xml檔案中配置的,tomcat伺服器預設情況下對各種元件...