1. 程式人生 > >詳細解說Tomcat 設定虛擬路徑的幾種方法及為什麼設定虛擬路徑

詳細解說Tomcat 設定虛擬路徑的幾種方法及為什麼設定虛擬路徑

說明:此次使用的是Tomcat 7.0

 

很多朋友都會很疑惑,既然我們都知道在Tomcat伺服器上部署專案只要將專案打包,然後放到webapps目錄下就可以了,為什麼還需要配置虛擬路徑?的確,把專案放到webapps目錄下非常方便,至少在部署一個專案時,直接把專案扔到webapps目錄下所進行的操作會比設定虛擬路徑容易的多。但是如果考慮到長久性的操作以及多個專案呢?

 設定虛擬路徑的優勢我總結有兩點,當然這只是很普通、很常見的兩點優勢:第一、我們開發一個專案,在未定版之前需要進行無數次的修改,如果部署測試專案的時候直接將專案打成war包放到webapps目錄下,那麼每一次版本變更都需要將新的版本放到webapps目錄下覆蓋原先的版本,這樣對於我們測試專案來說是不是非常麻煩呢?如果建立一個虛擬路徑,直接對映到專案原件,這樣一來在測試階段是不是非常的方便?(當然這點對於使用整合開發環境工具的開發者來說可以忽略);第二、Tomcat是一個伺服器,既然是一個伺服器是不是就有容量這麼一說呢?雖然這個容量是你說了算,但是再怎麼大是不是也有碟符容量限制?如果將所有的專案都部署到webapps目錄下,當專案比較大而且專案較多的時候是不是需要考慮一下碟符的感受呢?所以使用虛擬路徑也可以為搭載Tomcat伺服器的碟符分壓!

 

==============這真的只是一條分割線 ==============

好了,廢話就不多說了,直接切入正題!

如何設定虛擬路徑呢?網上有很多的帖子,但是很多都只提到2-3中方法,其實在Tomcat7的官方文件中給出了5種設定的方法,下面我們就來看一下其中的4中,因為有一種實在是不常用:

 

方法1(修改配置檔案):這是最最最常見的一種方法

在Tomcat7的安裝目錄下找到conf目錄,在該目錄下有一個server.xml檔案,這個檔案的任務是配置整個伺服器資訊。例如修改埠號,新增虛擬主機…… 開啟這個檔案,找到HOST標籤,

 

在這個標籤中處插入以下程式碼:

<Context path="/yang" docBase="f:\mysite1\xxx.war" debug="0" reloadable="true" crossContext="true" />

說明:

path:指定訪問該 Web 應用的 URL 入口。
docBase:指定 Web 應用的檔案路徑,可以給定絕對路徑,也可以給定相對於<Host>的appBase 屬性的相對路徑,如果 Web 應用採用開放目錄結構,則指定 Web 應用的根目錄,如果 Web 應用是個 war 檔案,則指定 war 檔案的路徑。(指定專案所在地址)


reloadable:如果這個屬性設為 true,tomcat 伺服器在執行狀態下會監視在WEB-INF/classes 和 WEB-INF/lib 目錄下 class 檔案的改動,如果監測到有 class 檔案被更新的,伺服器會自動重新載入 Web 應用。
crossContext:如果想在應用內呼叫 ServletContext.getContext()來返回在該虛擬主機上執行的其他 web application 的 request dispatcher,設為 true。在安全性很重要的環境中設為 false,使得 getContext()總是返回 null。預設值為 false。
Debug:與這個 Engine 關聯的 Logger 記錄的除錯資訊的詳細程度。數字越大,輸出越詳細。如果沒有指定,預設為 0。
這個方法一般在設定後都需要重啟伺服器才有效(有時候即使設定了reloadable=“true” 也需要重新啟動)

 

-----------------------------------------------------------------------------------------------------------------------------------------------

 

方法2(新增配置檔案):推薦使用,不需要重啟伺服器

在Tomcat根目錄下的/conf/Catalina/localhost/ 路徑下新建一個filename.xml,並在該xml中編寫語句

<Context docBase="F:\Java\JavaWebWorkspace\news"/>

即可建立虛擬站點,虛擬站點名為filename。注意docbase指向你自己的應用程式目錄,各引數參見方法1中的<Context>標籤的引數(注意此檔名將作為Context中的path屬性值,不管檔案裡的path屬性值如何設定也是無效的 )。

如果需要分層虛擬站點,可以將檔名改成a#b#c,訪問分層虛擬站點時用localhost:8080/a/b/c

----------------------------------------------------------------------------------------------------------------------------------------------

方法3:

在Tomcat根目錄下的conf目錄context.xml檔案中插入

<Context path="/zhang" docBase="f:\mysite1" debug="0" reloadable="true" crossContext="true" />

注意,這個虛擬路徑修改方法會讓所有的站點都能載入,https://localhost:8080/zhang

使用這個之前最好將service.xml中的列表設定開啟。

   -----------------------------------------------------------------------------------------------------------------------------------------------
方法4:

在Tomcat根目錄下的路徑/conf/Catalina/localhost/context.xml.default ,在這裡進行配置,這個虛擬路徑修改方法會讓該主機下的所有的站點都能載入,同上。

 

本文轉自部落格:https://blog.csdn.net/jdjdndhj/article/details/52693652