詳解Tomcat Server處理http請求過程
假設來自客戶的請求為:
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
它由Host接口定義.一個Engine元素可以包含多個
注:?name是虛擬主機的名字,appBase是虛擬主機指向的目錄,Tomcat啟動時,會自動加載appBase下的應用。?unpackWARs表示是否自動解壓縮appBase下已打成WAR包的應用,autoDeploy表示在服務器運行的時候,將一個應用放入?appBase下,是否自動部署。
它由Context接口定義.是使用最頻繁的元素.每個
path?:?該Context的路徑名是"",故該Context是該Host的默認Context
docBase?:?該Context的根目錄是webapps/mycontext/
reloadable:如果這個屬性設為true,?Tomcat服務器在運行狀態下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS文件的改運.如果監視到有class文件被更新,服務器自重新加載Web應用
useNaming:指定是否支持JNDI,默認值為了true
cookies指定是否通過Cookies來支持Session,默認值為true
該元素由org.apache.catalina.Service接口定義,它包含一個
redirectPort?指定服務器正在處理http請求時收到了一個SSL傳輸請求后重定向的端口號。
第一個
第二個
注:Server元素下可以有多個Service,端口就是在Service元素下配置的。
其中protocal制定了該端口偵聽的協議類型,HTTP/1.1表示偵聽的是客戶的HTTP請求,即我們通過瀏覽器訪問需要輸入的端口,當端口號是80的時候,可以不用在瀏覽器地址欄輸入端口號,這就是我們訪問很多網站不需要指定端口的原因。有時候protocal沒有指定,這時候默認的是HTTP/1.1。注意這個端口必須是閑置的。
Service元素下必須有一個Engine元素,Engine有一個名稱,和一個默認的虛擬主機名。
附:
Tomcat?是一款優秀的JSP/Servlet容器,最初由SUN開發,后來被貢獻給了Apache社區。
HTTP Tomcat 容器
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。