關於Tomcat服務器中的協議及請求過程


 

關於Tomcat服務器中采用的協議:在Tomcat的server.xml文件中可以找到如下幾個Connector

1 <!-- 1. HTTP -->
2 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
3 
4 <!-- 2. HTTPS -->
5 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
6            maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
7            clientAuth="false" sslProtocol="TLS" />
8 <!-- 3. AJP -->
9 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

a)HTTP  Connector

  此連接器支持HTTP/1.1協議

  擁有這個連接器,Tomcat才能成為一個Web服務器,但還額外可處理 servlet 和 jsp

  每個監聽器監聽一個你電腦上的TCP端口(而沒有UDP端口)

  一個Service可以配置多個HTTP連接器(配置不同端口即可),每個連接器都可以將請求轉發到與他們同級的一個Engine上讓它處理,並生成相應響應

 

b)AJP Connector

  AJP連接器可以通過AJP協議和一個Web容器進行交互

  當你想讓Apache 和 Tomcat結合並且你想讓Apache處理靜態頁面的內容的時候用AJP,或者你想利用Apache的SSL處理能力時

  特殊於HTTP  Connector,AJP還可以與engine元素上的 jvm Route結合來使用負載均衡

 

c)HTTPS Connector

...

 

 

Apache和Tomcat結合的時候:

1. Apache會攔截所有請求,將servlet和JSP(.jsp結尾)請求通過AJP交給Tomcat處理,然后再把結果拿到Apache然后返回

2. 將靜態資源的訪問,(類似.html/.css/.jpg等之類的結尾)自己直接處理不交給tomcat,直接返回

3. Apache和Tomcat結合之后:Tomcat的HTTP Connector永遠不會被用到了,可以沒有

 

注:Tomcat 處理請求的過程

 

1、用戶點擊網頁內容,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得。

2、Connector把該請求交給它所在的Service的Engine來處理,並等待Engine的回應。

3、Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host。

4、Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認主機),名為localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理)。

5、path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet,對應於JspServlet類。

6、構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet()或doPost().執行業務邏輯、數據存儲等程序。

7、Context把執行完之后的HttpServletResponse對象返回給Host。

8、Host把HttpServletResponse對象返回給Engine。

9、Engine把HttpServletResponse對象返回Connector。

10、Connector把HttpServletResponse對象返回給客戶Browser。

 

參考博客:http://www.cnblogs.com/hggen/p/6264475.html

     http://blog.csdn.net/u010297957/article/details/50782212 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM