Tomcat基礎教程(四)


一、將Web應用部署到Tomcat中

為什么要部署?將Web應用部署到Tomcat中,那么Tomcat就能找到相應的Web應用,當Tomcat啟動時就會加載和初始化Web應用,而在Tomcat啟動后,客戶端就看可以使用相應的URL通過Tomcat訪問到Web應用了。

部署的方式有兩種:1)直接將Web應用結構目錄添加到Tomcat的webapps目錄 2)使用Context元素

1. 接將Web應用結構目錄添加到Tomcat的webapps目錄

在Tomcat目錄結構中,有一個叫做webapps的文件夾,由之前所講,它會存放Web應用,一個文件夾代表一個Web應用。而在Tomcat啟動時,它會默認加載webapps文件夾下面的所有Web應用。

2. 使用Context元素

根據教程(二)中的Tomcat服務器架構圖知道,Context表示Host中的一個Web應用,每個Web應用可以是一個war(Web Application Archive)文件或者文件系統中的一個文件夾。一個Host可以有多個web應用,且他們必須要有唯一的上下文路徑來區分。如果某個Web應用的上下文路徑字符串是空串,則該Web應用就成為其所在虛擬主機的默認Web應用,所有請求URL沒有與Host中其他任何一個Web應用上下文路徑匹配的客戶請求都會被分發到該Web應用。

Context元素屬性列表如下:

元素 屬性 Mandatory Description
Context docBase Y 表示Web應用的根路徑。若為war文件,屬性值為該文件的路勁,若為目錄,則為Web應用根目錄路徑
  path N Web應用的上下文路徑
  reloadable N true/false(Default)。表示是否允許Tomcat服務器監視Web應用中/WEB-INF/classes和/WEB-INF/lib目錄的變化
  workDir N 指定一個目錄路徑來作為該Web應用的臨時工作目錄。若未指定該屬性,則會使用Tomcat下的work目錄
  unpackWAR N

true/false,如果設置成true則Tomcat在運行壓縮的Web應用(war文件)會先將它解壓縮

舉例:<Context docBase="D:\\webAppBase\application" path ="/app1" workDir="D:\\WebAppBase\application\work">

將Context元素配置到Tomcat服務器中有如下方法:

1)在server.xml中添加Context元素 - 添加到Host節點內部,作為Host的元素。優點:簡單直觀;缺點:如果有很多Web應用,要配置很多Context元素,這樣會使server.xml很難閱讀和維護

2)添加到${TOMCAT_HOME}\conf\context.xml文件中 - 該文件是用於配置所有Web應用的Context元素。優點:將Context元素從server.xml中獨立出來;缺點:當應用多了則不易維護

3)為每個虛擬主機的所有Web應用使用一個獨立的配置文件 - ${CATATINA_HOME}/conf/[enginename]/[hostname]/context.xml.default - 即在虛擬主機中建立該文件,然后添加Context元素

4)為每個Web應用使用獨立的配置文件 - 在${CATATINA_HOME}/conf/[enginename]/[hostname]目錄中可以通過使用xml文件來為每個Web應用定義Context,文件名為Web應用的上下文路徑

 

二、配置Web應用

每個Web應用都有一個對Web應用進行配置的web.xml(特有部署描述符),存在WEB-INF的文件夾中;而在Tomcat的conf文件夾中也有web.xml(通用部署描述符),用來設置通用的配置。當通用部署描述符和特有部署描述符有沖突時,特有部署描述符的配置項優先。

Web應用部署描述符

根元素web-app,其可以包含若干個子元素,而每個子元素都對應於Web應用某個方面的配置,且他們的順序是任意的。

web-app根元素有如下屬性:version, id, metadata-complete。比較常用的是version,表明Web描述文件兼容的最好版本。

web-app根元素下最常用的子元素:

  • welcome-file-list: 定義一個welcome文件列表
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

welcome-file-list會定義目錄的默認訪問文件,當客戶端請求的URL指向一個目錄而非文件時,則就會訪問默認訪問文件,而這個list中定義的文件是有訪問順序的,按照顯示順序優先返回,若前面的文件不存在,則依次訪問后面的文件。

  • servlet和servlet-mapping: 這兩個元素主要用於在Web應用中添加Servlet。servlet元素用於定義Servlet的名稱,實現類等屬性,servlet-mapping用於定義servlet的路徑映射方式。
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <!-- can have multiple init-param -->
    <load-on-startup>3</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jspx</url-pattern>
</servlet-mapping>

在上面的servlet元素中,其名字是jsp,所使用的java類為org.apache.jasper.servlet.JspServlet,其中的<init-param>元素為java類所要用到的參數;而<load-on-startup>元素中定義一個整數值,如果值為0或正整數,則表明該Servlet會在Tomcat服務器啟動時必須被加載和初始化,若為負整數或該配置項不存在時Tomcat可以選擇不在啟動時加載和初始化Servlet。

在<servlet-mapping>元素中定義servlet名字為jsp的路徑映射方式 -- <url-pattern>,該元素定義了一個請求URL模板,請求URI與該模板匹配時請求將被分配到對於的Servlet。在該段xml代碼中,定義了訪問*.jsp和*.jspx的文件都將被分配到名字為jsp的Servlet進行處理。

  • filter和filter-mapping: 這兩個元素主要用於在Web應用中添加過濾器。filter元素用於定義過濾器的名稱,實現類等屬性,filter-mapping用於定義filter的路徑映射方式。
  • mime-mapping: 該元素定義在Web應用中如何根據文件名后綴映射出文件的mime類型
<mime-mapping>
    <extension>htm</extension>
    <mime-type>text/html</mime-type>
</mime-mapping>

Note: MIME是Multipurpose Internet Mail Extensions(多用途Internet郵件擴展)的簡稱,其被用於判斷二進制文件的內容和打開方式。

  • session-config: 用於配置session的一些參數,例如session的超時時間
<session-config>
    <session-timeout>30</session-timeout>
</session-config>


總結: Tomcat中可以部署多個Web應用,而其通過應用的上下文路徑來區分各個Web應用。部署Web應用可以通過添加Context元素。我們可以通過配置Tomcat中的web.xml或者Web應用自身的web.xml來對Web應用進行配置。


免責聲明!

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



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