部署描述檔案

Web容器使用部署描述檔案(Deployment Descriptor,DD)初始化Web應用程式的組件。Web容器在啟動時讀取該檔案,對應用程式配置,所以有時也將該檔案稱為配置檔案

基本介紹

  • 中文名:部署描述檔案
  • 外文名:The deployment descriptor files
  • 類別:檔案
  • 受益人:檔案受益者
DD檔案的定義,<servlet>元素,<servlet-name>元素,<servlet-class>元素,<init-param>元素,<load-on-startup>元素,<servlet-mapping>元素,<welcome-file-list>元素,

DD檔案的定義

為了保證跨Web容器的可移植性,部署描述檔案的文檔類型定義(Document Type Definition,DTD)的標準由Sun公司制定。
<web-app>元素是部署描述檔案的根元素,其他是<web-app>的子元素。有的元素還可以有子元素。每個元素都有起始元素和結束元素。
DTD的定義中,帶問號(?)的元素可以出現0次或1次,帶星號(*)的元素可以出現0次或多次,帶加號(+)的元素可以出現一次或多次,不帶符號的元素只能出現一次。

<servlet>元素

在<web-app>下面定義的每個<servlet>元素為Web應用程式定義了一個Servlet,下面是<servlet>元素的DTD定義:
<!ELEMENT servlet (description?, icon?, display-name?, servlet-name, (servlet-class|jsp-file), init-param*, load-on-startup?, security-role-ref*)>
下面的代碼展示了在部署描述檔案中<servlet>元素的一個典型的使用:
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.demo.HelloServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-name>元素

該元素用來定義Servlet名稱,該元素是必選項。定義的名稱在DD檔案中應該唯一。可以通過ServletConfig的getServletName()方法檢索Servlet名。

<servlet-class>元素

該元素指定Servlet類的完整名稱,即需要帶包的名稱,例如com.demo.HelloServelet。容器將使用該類創建Servlet實例。Servlet類以及它所依賴的所有類都應該在Web應用程式的類路徑中。WEB-INF目錄中的classes目錄和lib目錄中的JAR檔案被自動添加到容器的類路徑中,因此如果把類放到這兩個地方就不需要設定類路徑。這裡也可以使用<jsp-file>元素指定一個JSP檔案代替<servlet-class>元素。
注意:可以使用相同的Servlet類定義多個Servlet,如可以使用com.demo.HelloServlet類定義另一個名為welcomeServlet的Servlet。這樣容器將使用一個Servlet類創建多個實例,每個實例有一個名字。

<init-param>元素

該元素定義向Servlet傳遞的初始化參數。在一個<servlet>元素中可以定義任意多個<init-param>元素。每個<init-param>元素必須有且僅有一組<param-name>和<param-value>子元素。<param-name>定義參數名,<param-value>定義參數值。Servlet可以通過ServletConfig接口的getInitParameter()方法檢索初始化參數。

<load-on-startup>元素

一般情況下,Servlet是在被請求時由容器裝入記憶體的。也可以使Servlet在容器啟動時就裝入記憶體。<load-on-startup>元素指定是否在Web應用程式啟動時載入該Servlet。該元素的值是一個整數。如果沒有指定該元素或其內容為一個負數,容器將根據需要決定何時裝入Servlet。如果其內容為一個整數,則在Web應用程式啟動時載入該Servlet。對不同的Servlet,可以指定不同的值,這可以控制容器裝入這些Servlet的順序,值小的先裝入。

<servlet-mapping>元素

<servlet-mapping>元素定義一個映射,它指定哪個URL模式被該Servlet處理。容器使用這些映射根據實際的URL訪問合適的Servlet。下面是<servlet-mapping>元素的DTD定義:
<!ELEMENT servlet-mapping (servlet-name, url-pattern)>
<servlet-name>元素應該是使用<servlet>元素定義的Servlet名,而<url-pattern>可以包含要與該Servlet關聯的模式字元串。下面是在DD檔案中使用<servlet-mapping>元素的例子:
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/helloServlet/hello/*</url-pattern>
</servlet-mapping>
如果一個請求URL串與“/helloServlet/hello/*”匹配,容器將使用名為“helloServlet”的Servlet為用戶提供服務。

<welcome-file-list>元素

通常在瀏覽器的地址欄中輸入一個Web網站名稱,而沒有指定特定的檔案,也能看到頁面,這個頁面就是歡迎頁面,檔案名稱通常為index.html。
在Tomcat中,如果訪問的URL是目錄,並且沒有特定的Servlet與這個URL模式匹配,那么它將在該目錄中首先查找index.html檔案,如果找不到將查找index.jsp檔案,如果找到上述檔案,將該檔案返回給客戶。如果找不到(包括目錄也找不到),Tomcat將向客戶傳送404錯誤信息。
假設有一個Web應用程式,它的默認的歡迎頁面是index.html,還有一些目錄都有自己的歡迎頁面,如default.jsp。可以在DD檔案<web-app>元素中使用<welcome-file-list>元素指定歡迎頁面的查找列表,如下所示:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>home.html</welcome-file>
<welcom-file>default.jsp</welcome-file>
</welcome-file-list>
經過上述配置,如果客戶使用目錄訪問該應用程式,Tomcat將在指定的目錄中按<welcome-file>指定的檔案的順序查找檔案,如果找到則把檔案傳送給客戶。

相關詞條

熱門詞條

聯絡我們