天天看點

從Tomcat工作原理到目錄結構

首先,他是一個軟體,一個容器,承載項目的容器,那麼這個容器的定位和用途是幹什麼的呢?

背景:JSP出現後,阿帕奇項目組為了提供一個相容JSP和Servlet而開發的容器,最初名字叫做  “CALATINA”

===========================================================================

Tomcat啟動後,當使用者代理向Tomcat發送請求,請求到達Tomcat,會被Tomcat檢測到,流程如下:

在tomcat的配置檔案conf裡面存在着一個server.xml檔案,其配置了Tomcat了的工作流程,tomcat啟動後會一直運作着該檔案!

server:

         用來監聽和關閉所有敢于Tomcat的請求和指令,也是所有  元件标簽  的大标簽,相當于元件容器

元件标簽如下:

Service:

         命名Tomcat的名稱,一般不做任何變動,為什麼叫catalina是因為Tomcat的前身名稱就是catalina

Connector:

         指定端口,http協定版本,逾時時間,重定向端口,請求的外來編碼,處理請求的線程數(最大/最小),

         逾時時間等配置,用于接收使用者代理與tomcat的連接配接

         可以有多個Connector存在

Engine:

         處理引擎,用于指定那個接受請求的Tomcat所在的主機名,其本質是一個Servlet引擎,當請求到達

         此處後,會調用servlet程式進行調用轉發,唯一一個引擎

         Realm:作為處理引擎中的子元件,負責安全上下文的處理,并比對到對應的context中

         Host:在引擎裡面存在着Host元件标簽,可以簡單了解每一個 Host元件标簽 都是一個處理程式的 模闆,而

         Engine在指定defaultHost時候至少要跟其中一個Host元件标簽裡的name保持一緻,代表指定處理

         該模闆!一個Host就是一個虛拟機

         Conext:每一個Context都代表了一個Web項目,配置了該項目的虛拟路徑,實體路徑,是否熱加載等功能

             docBase:實體路徑,表示該web應用程式的路徑或者是WAR檔案存放的路徑

                path:虛拟路徑,表示此web應用程式的url的字首,組成固定的HTTP請求:http://localhost:8080/path/xxx

                reloadable: 決定Tomcat是否會自動檢測web程式的/WEB-INF/lib 和/WEB-INF/classes目錄,實作熱部署,布爾值

         Value:實作檔案和請求的過濾功能

         Logger:  用于記錄Tomcat的運作日志

                className 指定logger使用的類名,此類必須實作org.apache.catalina.Logger 接口 

                prefix 指定log檔案的字首 , suffix 指定log檔案的字尾 

                timestamp 如果為true,則log檔案名中要加入時間

運作流程如下:

Tomcat啟動後,Service元件會一直監聽着維護(關閉)的端口。當有請求到達Connect的時候(8080),那麼Connector就會接受并判斷是否符合。如果符合則接通并轉發給Engine這Servlet引擎。引擎的子子產品會其進行上下文處理,檔案過濾等, 然後根據引擎維護的host參數連接配接向對應的Host元件标簽。Host标簽根據維護的Context進入項目,一個Context就是一個項目!由Context負責接收客戶請求和響應請求,這個過程中Context根據請求比對到對應的Servlet類,然後由這個Servlet類并構造HttpServletResponse和HttpServletRequest給到Servlet的doPost/doGet方法,執行完成後再原路把response容器傳回給tomcat!tomcat原路傳回給使用者代理!

注意:Service監聽的端口不是請求到達的端口而是tomcat關閉的端口

===========================================================================

Tomcat的實體結構

    |---bin     用于存放啟動和關閉tomcat腳本

    |---conf   存放不同的配置檔案(server.xml和web.xml和tomcat_users.xml)

    |---doc:存放Tomcat文檔(英文)

    |---lib/japser/common:存放Tomcat運作需要的庫檔案(JARS);

    |---logs:存放Tomcat執行時的LOG檔案;

    |---src:存放Tomcat的源代碼,一般的安裝包不會提供

    |---webapps:Tomcat的主要Web釋出目錄(編譯後的項目),Context指向的地方,ROOT是程式未啟動三角貓首頁圖檔等資訊的地方

    |---work:存放jsp編譯後産生的class檔案;

    |---temp:使用者存放tomcat在運作過程中産生的臨時檔案

繼續閱讀