1. 程式人生 > >Tomcat處理請求的過程

Tomcat處理請求的過程

https://www.cnblogs.com/crazylqy/p/4706223.html

1– Tomcat Server處理一個http請求的過程

假設來自客戶的請求為:

http://localhost:8080/wsota/wsota_index.jsp

1) 請求被髮送到本機埠8080,被在那裡偵聽的Coyote HTTP/1.1 Connector獲得

(1-1)Connector的主要任務是負責接收瀏覽器的發過來的 tcp 連線請求,建立一個 Request 和 Response 物件分別用於和請求端交換資料,然後會產生一個執行緒來處理這個請求並把產生的 Request 和 Response

 物件傳給處理這個請求的執行緒
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


servlet的doGet和doPost方法 都是用來請求資源  doget即get方式

一般程式設計時會使用doPost方式來請求 在dopost中呼叫doget方法,在doget方法中完成邏輯控制。