Tomcat處理一個http請求的過程---完整復現

Tomcat接受一次請求並返回處理結果時,大體過程是Connector將請求處理成封裝成request和response對象,傳遞給Cantainer,Cantainer根據四個父子關係的子容器實現處理,會後將結果在返回給Connector,返回到客戶端。

在這裏插入圖片描述
Connector(連接器)用於處理連接相關的事情,並提供Socket與Request和Response相關的轉化;
Container(容器)用於封裝和管理Servlet,以及具體處理Request請求;

一、Connector(連接器)內部具體實現
在這裏插入圖片描述
二、tomcat內請求處理過程
假設來自客戶的請求爲:
http://localhost:8080/wsota/wsota_index.jsp

  1. 請求被髮送到本機端口8080,被在那裏偵聽的Coyote HTTP/1.1 Connector獲得
  2. Connector把該請求交給它所在的Service的Engine來處理,並等待來自Engine的迴應
  3. Engine獲得請求localhost/wsota/wsota_index.jsp,匹配它所擁有的所有虛擬主機Host
  4. Engine匹配到名爲localhost的Host(即使匹配不到也把請求交給該Host處理,因爲該Host被定義爲該Engine的默認主機)
  5. localhost Host獲得請求/wsota/wsota_index.jsp,匹配它所擁有的所有Context
  6. Host匹配到路徑爲/wsota的Context(如果匹配不到就把該請求交給路徑名爲””的Context去處理)
  7. path=”/wsota”的Context獲得請求/wsota_index.jsp,在它的mapping table中尋找對應的servlet
  8. Context匹配到URL PATTERN爲*.jsp的servlet,對應於JspServlet類
  9. 構造HttpServletRequest對象和HttpServletResponse對象,作爲參數調用JspServlet的doGet或doPost方法
  10. Context把執行完了之後的HttpServletResponse對象返回給Host
  11. Host把HttpServletResponse對象返回給Engine
  12. Engine把HttpServletResponse對象返回給Connector
  13. Connector把HttpServletResponse對象返回給客戶browser
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章