Tomcat Tomcat的套娃式架構設計初探

2021-10-06 10:59:27 字數 1297 閱讀 7911

container 元件 -catalina

總體架構預覽

核心功能: http伺服器和servlet 容器

剛才說了tomcat核心功能有兩個 : http伺服器和servlet 容器。 那tomcat為了實現如上兩個核心功能又是怎樣架構的呢?

為了實現上面的功能,tomcat封裝出了很多元件 ,這些元件共同組成了tomcat的架構。

進一步分析一下

我們既然說了tomcat的兩個核心功能,http和servlet , 具體在架構中對應的部分是哪些呢?

connector 元件 在tomcat中,有個專門的名稱,叫 coyote ,專門處理http伺服器功能

我們把connector元件放大來看一下

這兩個元件被稱為 protocolhandler

http請求 都是處理的request, 而 catalina 實現了servlet規範,主要處理的是servletrequest請求,所以這倆沒法直接互動,因此才有了adapter 元件,用來轉換request 和 servletrequest

順便說一下 ajp,這個是早期tomcat為了繼承apache的靜態資源服務 的時候使用的協議,(tomcat更擅長處理動態資源)

container 元件的主要功能是完成servlet容器功能, 也有個專門的名稱叫 catalina

除了connector元件和container元件,tomcat其實還定義了很多元件來工作

這些元件採用一層一層的設計方式(套娃式) 。 如果乙個元件包含了其他元件,那麼這個元件也稱之為容器。

瞅一瞅俄羅斯套娃 哈哈

說了這多,彙總如下

簡單的套娃

最簡單的那種套娃 include flag.php highlight file file error reporting 0 ia index.php query server query string var dump get if preg match xisfun get x get x x...

俄羅斯套娃信封

給一定數量的信封,帶有整數對 w,h 分別代表信封寬度和高度。乙個信封的寬高均大於另乙個信封時可以放下另乙個信封。求最大的信封巢狀層數。樣例 1 輸入 5,4 6,4 6,7 2,3 輸出 3 解釋 最大的信封巢狀層數是 3 2,3 5,4 6,7 樣例 2 輸入 4,5 4,6 6,7 2,3 1...

俄羅斯套娃問題

給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。請計算最多能有多少個信封能組成一組 俄羅斯套娃 信封 即可以把乙個信封放到另乙個信封裡面 說明 不允許旋轉信封。示例 輸入 enve...