tomcat之詳解URL請求
訪問請求http://localhost:8080/examples/composite.jsp的處理過程
1.在埠8080啟動Server,並通知Service完成啟動,Service通知Connector完成初始化和啟動過程
2.Connector首先收到這個請求,會呼叫ProtocolHandler完成Http協議的解析,然後交給SocketProcessor處理,解析請求頭,再交給CoyoteAdapter解析請求行和請求體,並把解析資訊封裝到Request和Response物件中
3.把請求(此時應該是Request物件,這裡的Request物件已經封裝了Http請求的資訊)交給Container容器
4.Container容器交給其子容器--Engine容器,並等待Engine容器的處理結果
5.Engine容器匹配其所有的虛擬機器,這裡匹配到Host
6.請求被移交給hostname為localhost的Host容器,host匹配其所有子容器Context,這裡找到contextPath為/examples的Context容器,如果匹配不到就把該請求交給路徑名為“”的Context去處理
7.請求再次被移交給Context容器,Context繼續匹配其子容器Wrapper,由Wrapper容器載入composite.jsp對應的servlet,這裡編譯的servlet是basic_002dcomparisons_jsp.class檔案
8.Context容器根據字尾匹配原則*.jsp找到composite.jsp編譯的java類的class檔案
9.Connector構建一個org.apache.catalina.connector.Request以及org.apache.catalina.connector.Response物件,使用反射呼叫Servlet的service方法
10.Context容器把封裝了響應訊息的Response物件返回給Host容器
11.Host容器把Response返回給Engine容器
12.Engine容器返回給Connector
13.Connector容器把Response返回給瀏覽器
14.瀏覽器解析Response報文
15.顯示資源內容