1. tomcat結構
tomcat是乙個基於元件的伺服器,它的構成元件都是可配置的,其中最外層的元件是catalina servlet容器,其他的元件按照一定的格式要求配置在這個頂層容器中。tomcat的各個元件是在\conf\server.xml檔案中配置的,tomcat伺服器預設情況下對各種元件都有預設的實現,下面通過分析server.xml檔案來理解tomcat的各個元件是如何組織的。server.xml檔案的基本組成結構如下。
xml配置檔案結構
頂層類元素:乙個配置檔案中只能有乙個元素,可包含多個service。
頂層類元素:本身不是容器,可包含乙個engine,多個connector。
聯結器類元素:代表通訊介面。
容器類元素:為特定的service元件處理所有客戶請求,可包含多個host。
容器類元素:為特定的虛擬主機處理所有客戶請求,可包含多個context。
容器類元素:為特定的web應用處理所有客戶請求。
1)service
service元件是一些connector元件的集合,它本身不是乙個容器,所以在這裡不能定義日誌等元件。乙個service元件中只能有乙個engine元件,可以包含多個connector元件。
2)connector元件
connector元件表示乙個介面,通過這個介面接收客戶的請求,然戶傳送給其他的容器元件,最後再把伺服器的響應結果傳遞給客戶。
3) engine, host和context
上面介紹的3個元件本身並不能處理客戶請求,也不能生成響應。在tomcat中只有3個元件是可以處理客戶請求並生成響應的,這3個元件分別是 engine、host和context元件。這3個元件分別代表了不同的服務範圍,通過巢狀關係可以知道3個元件的範圍有如下的關係:engine>host>context。
a.engine元件下可以包含多個host元件,它為特定的service元件處理所有客戶請求。
b.乙個host元件代表乙個虛擬主機,乙個虛擬主機中可以包含多個web應用(context元件)。
c.context元件代表乙個web應用。
tomcat的各個元件關係,可以用下圖描述。
2. tomcat處理乙個http請求的過程
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 工程截圖 2 封裝請求物件 通過輸入流,對http協議進行解析,拿到了http請求頭的方法和url author wangjie version 2018 11 9 封裝請求物件 通過輸入流,對http協議進行解析,拿到http請求頭的方法和url 3 封裝響應物件 基於http協議的格式進行輸...