Tomcat:系統(tǒng)架構(gòu)
一、瀏覽器訪問服務(wù)器的流程
注意:瀏覽器訪問服務(wù)器使用的是Http協(xié)議,Http是應(yīng)用層協(xié)議,用于定義數(shù)據(jù)通信的格式,具體的數(shù)據(jù)傳輸使用的是TCP/IP協(xié)議。
二、Tomcat系統(tǒng)總體架構(gòu)
1、Tomcat請求大致過程
Tomcat是一個Http服務(wù)器(能夠接收并且處理http請求,所以tomcat是一個http服務(wù)器)。
我們使用瀏覽器向某一個網(wǎng)站發(fā)起請求,發(fā)出的是Http請求,那么在遠程,Http服務(wù)器接收到這個請求之后,會調(diào)用具體的程序(Java類)進行處理,往往不同的請求由不同的Java類完成處理。
HTTP 服務(wù)器接收到請求之后把請求交給Servlet容器來處理,Servlet 容器通過Servlet接口調(diào)用業(yè)務(wù)類。Servlet接口和Servlet容器這一整套內(nèi)容叫作Servlet規(guī)范。
注意:Tomcat既按照Servlet規(guī)范的要求去實現(xiàn)了Servlet容器,同時它也具有HTTP服務(wù)器的功能。
Tomcat的兩個重要身份
1)http服務(wù)器
2)Tomcat是一個Servlet容器
2、Tomcat Servlet容器處理流程
當用戶請求某個URL資源時
1)HTTP服務(wù)器會把請求信息使用ServletRequest對象封裝起來
2)進一步去調(diào)用Servlet容器中某個具體的Servlet
3)在 2)中,Servlet容器拿到請求后,根據(jù)URL和Servlet的映射關(guān)系,找到相應(yīng)的Servlet
4)如果Servlet還沒有被加載,就用反射機制創(chuàng)建這個Servlet,并調(diào)用Servlet的init方法來完成初始化
5)接著調(diào)用這個具體Servlet的service方法來處理請求,請求處理結(jié)果使用ServletResponse對象封裝
6)把ServletResponse對象返回給HTTP服務(wù)器,HTTP服務(wù)器會把響應(yīng)發(fā)送給客戶
3、Tomcat系統(tǒng)總體架構(gòu)
通過上面的講解,我們發(fā)現(xiàn)tomcat有兩個非常重要的功能需要完成
1)和客戶端瀏覽器進行交互,進行socket通信,將字節(jié)流和Request/Response等對象進行轉(zhuǎn)換
2)Servlet容器處理業(yè)務(wù)邏輯
Tomcat 設(shè)計了兩個核心組件連接器(Connector)和容器(Container)來完成 Tomcat 的兩大核心功能。
連接器,負責(zé)對外交流: 處理Socket連接,負責(zé)網(wǎng)絡(luò)字節(jié)流與Request和Response對象的轉(zhuǎn)化;
容器,負責(zé)內(nèi)部處理:加載和管理Servlet,以及具體處理Request請求;