背景

在討論如何組織原始碼目錄之前,很有必要對現有web站點的組織結構進行測試,特別是2.2版本的API,在伺服器版本上是不同的,所以在2.2之後的版本中,所有的伺服器版本都要求能夠使用標準的壓縮web站點格式,這就是下面所要進行討論的。

一個web應用程式,就是一個標準格式的多個目錄和檔案的層次組織,這種層次組織,可以在非壓縮包到時候被訪問,每一個目錄和檔案,在檔案系統中都是單獨存在的,或者是在壓縮包環境下,比如一個.war檔案,非壓縮包格式在環境部署過程中很有用,而壓縮包格式在釋出環境是很有用。

Web應用程式的層次結構的最頂層結構,也就是應用程式的根節點,在這個目錄下,應該放置組成應用程式使用者入口的html檔案和jsp檔案。當系統管理員將該應用程式部署在其他的伺服器上時,需要為tomcat設定一個上下文context路徑,如果管理員設定的上下文路徑為/catalog,則請求的URL為/catalog/index.html,對應的就是根節點目錄下的index.html檔案。

標準的目錄結構

為了促進建立一個壓縮格式的web應用程式,最好是將應用程式的可執行檔案(tomcat用來執行應用程式的)放置在WAR格式所需的目錄下,為了實現這一點,需要在根目錄下包含以下幾個內容:

  1. html、jsp等檔案,html和jsp等檔案,必須是client瀏覽器能直接訪問的檔案,比如JS檔案等,樣式檔案等。如果應用程式站點很大,需要將這些檔案分佈在其他的子組織結構中,如果應用站點不大,一般只用一個目錄,來存放這些檔案;
  2. /web-inf/web.xml檔案,應用程式的部署描述,這是一些xml檔案,用來描述組成應用程式的各種小程式,同時還包含一些初始化引數、以及容器安全管理內容。在下面的子章節中會詳細介紹。
  3. /web-inf/classes/目錄,在這個目錄中包含了應用程式的所有java類檔案以及其他資原始檔,包含程式類和非程式類,並不是包含在jar檔案中。如果這些類檔案是以java包的形式組織的,則需要在/web-inf/classes/體現這些java包的層次結構,比如一個java類名稱為com.mycompany.mypackage.MyServlet,則在該目錄下的名稱為/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class.

  4. /web-inf/lib/目錄,該目錄下包含了應用程式所需的jar檔案和java類檔案,比如第三方類檔案或者是JDBC檔案。

當向tomcat中安裝應用程式時,在/web-inf/classes和/web-inf/lib/下的類檔案和jar檔案,對於應用程式中的其他類來說,都是可見的。也就是說如果在這倆目錄下安裝了所有必須的庫類檔案,則在應用程式安裝過程中就會簡單一下,不需要調整系統的類檔案路徑。

 
 

共享庫檔案

和其他程式容器一樣,tomcat也支援一種機制,一次安裝庫jar檔案,然後在所有已經安裝的應用程式中呼叫,而不需要在這些應用程式中重新定義包含。在tomcat安裝中,預設的用於共享程式碼的目錄為$CATALINA_HOME/lib在這裡的jar檔案可以被所有的web站點和內部程式碼可見,將用於應用程式和內部tomcat使用的JDBC驅動器放置在該目錄下是一個比較好的選擇。

 
 

Web應用程式部署描述檔案XML

如上文中所說,/web-inf/web.xml中包含了應用程式部署描述,正如副檔名所示,這是一個XML檔案,定義了整個伺服器所需要知道的引數。

TOMCAT context描述檔案

當需要定義tomcat的某些特定配置選項,比如訪問日誌,資料來源、管理配置或者其他引數時,可以在/meta-inf/context.xml中進行定義。在該XML檔案中,最少要包含一個環境因素,該環境因子可以是部署web應用程式的主機的主機引數的子引數。