Tomcat設置虛擬目錄的方法

http://blog.csdn.net/zjml2412/article/details/49962939


tomcat版本:apache-tomcat-7.0.42

參考:http://blog.csdn.net/pangdingshan/article/details/7214786

一、虛擬根目錄

1.    Tomcat 的默認根目錄:D:\apache-tomcat-7.0.42\webapps\ROOT

2.    只能有一個默認根目錄

3.   一個 默認根目錄只能映射一個 “文件系統目錄”

啓動Tomcat後,在瀏覽器地址欄輸入:http://localhost:8080/,訪問的其實就是tomcat虛擬根目錄下的index.jsp文件。

二、tomcat怎麼設置了虛擬根目錄?

在D:\apache-tomcat-7.0.42\conf目錄下的server.xml文件的Host元素中,name屬性:主機名稱,appBase屬性:基準目錄 ,基準目錄下的Root 目錄被自動設置爲根目錄

1
2
3
4
<Host name="localhost"  appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <!-- ... -->
</Host>

三、如果修改虛擬根目錄?

在Host元素裏,添加Context元素:

1
<Context path="" docBase="D:\test"></Context>

path: 爲空代表網站根目錄

docBase:可以設置絕對路徑,也可設置相對路徑,相對路徑是相對 appBase 屬性所設的目錄而言的

此時再訪問:http://localhost:8080/,出現404錯誤頁面。因爲在test目錄下存在1.html文件,在地址欄輸入:http://localhost:8080/1.html,可以訪問成功。

如果想即使不輸入1.hmtl也能默認訪問該文件,則需修改:D:\apache-tomcat-7.0.42\conf目錄下web.xml文件的<welcome-file-list>元素,將index.hmtl改爲1.html,那麼訪問http://localhost:8080/時就會默認訪問1.html

四、虛擬目錄(根目錄的子目錄)

  • 可以設置多個虛擬目錄

  • 一個文件系統目錄(docBase)可以被映射成多個虛擬目錄(path),即不同的path可以對應相同的docBase

  • 虛擬目錄名稱(path)可以是多級目錄結構的形式

  • 一個虛擬目錄就是一個獨立的web應用程序

五、如何設置虛擬目錄?

第1種:修改server.xml(建議使用第二種)

在server.xml文件的Host元素中,嵌套下面兩條語句:

1
2
<Context path="/test1" docBase="D:\test" reloadable="true"></Context>       
<Context path="/test2/test" docBase="D:\test" reloadable="true"></Context>

path: 表示虛擬目錄的名稱(前面的正斜槓“/”可以省略)

docBase:可以設置絕對路徑,也可設置相對路徑,相對路徑是相對 appBase 屬性所設的目錄而言的

reloadable:表示修改應用程序後,tomcat自動幫你部署(reload),不用重新啓動

(注意,設置debug屬性後,在tomcat6.0.39不會出現警告,而在tomcat7.0.42會出現警告)

添加後重啓tomcat

輸入:http://localhost:8080/test1/1.html,可以成功訪問。

輸入:http://localhost:8080/test2/test/1.html,也可以成功訪問

上面例子也說明:一個文件系統目錄(docBase)可以被映射成多個虛擬目錄(path),虛擬目錄名稱(path)可以是多級目錄結構的形式(/test2/test)

第2種:不修改server.xml,http://my.oschina.net/liangzhenghui/blog/184088



在tomcat文件夾的 conf\catalina\localhost增加project .xml文件
文件內容:
<Context path="/project" reloadable="true" docBase="E:\javastudio\oob" workDir="E:\javastudio\oob\work" />
  • docBase是項目文件夾的web-inf文件夾的上一層目錄
  • workDir是指Tomcat解析Jsp轉換爲Java文件,並編譯爲class存放的文件夾,設置 在項目文件夾裏面,可以避免移植到其他地方首次讀取jsp文件需要重新解析 。一般格式:項目文件夾\work
  • reloadable是指可以重新加載,一般設置爲true,方便使用,不需要經常重啓Tomcat。
以後啓動Tomcat,在瀏覽器輸入 http://localhost:8080/project就能訪問該項目的welcome文件。
 
***************
爲什麼要不修改server.xml呢?在Tomcat6的doc幫助文檔中,官方是不提倡修改 server.xml來添加虛擬目錄的!
       而我認爲,以上使用的方法,非常方便於項目的移植,移植後,只有修改docBase和workDir的值就行了,甚至可以去掉workDir這個屬性!
 

***************


又發現了一篇不錯的文章

轉自:http://blog.csdn.net/yiluoak_47/article/details/12503737


首先,我們要知道虛擬目錄的好處。虛擬目錄不同於原始的Tomcat運行方式,原始的方式是把項目拷貝到webapps下,然後啓動tomcat,就可以訪問webapps下的項目。我們使用eclipse配置tomcat,實際上的原理也是這種方式。

但這種方式的弊端在於,webapps下的項目不是最新的動態,一旦我們修改了eclipse工作目錄下的項目,並不能立刻的反應到 tomcat/webapps下。所以我們不得不編譯項目後,清除webapps下的緩存,甚至要移除項目,然後在放進去。這樣來回折騰,大大降低了工作 效率。我們只要改動一個小地方,就要重複的進行一次上面的工作。

聰明的人,總是懶惰的。我們想到能不能改變一下當前的方式,有一種更好的方式呢?這時候,虛擬目錄就浮現出來。

虛擬目錄的作用是把Web的發佈目錄直接定位到eclipse工作目錄下,實現實時更新,實時使用。

 

要配置虛擬目錄,我們需要在Tomcat/conf/catalina/localhost下根據項目命名“項目名.xml”,裏面的內容:

<?xml version="1.0" encoding="UTF-8"?> <Context path="/cecb2b" docBase="E:\workspace\cecb2b\webContent" workDir="E:\workspace\cecb2b\word" reloadable="true" debug="1"></Context>

 

屬性解釋:

  path:網絡訪問名

  docBase:項目實際路徑

  wordDir:指定jsp轉換爲Java的存放目錄。這樣配置,免得移植的時候重新編譯jsp

  reloadable:指定當class文件變化的時候,是否重新加載

  debug:是否是調試模式

 

這樣,Web發佈目錄就直接指向了eclipse工作目錄下的項目。我們在eclipse下修改代碼,只要一構建,tomcat自動重新加載。我們就不用來回移除項目了。

 

最後,我們還可以修改cong/web.xml中的:

        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>

把false改爲true。

 

 最後,我們需要注意的是,用eclipse創建Web項目,一定要是動態Web項目,然後在修改項目的一些屬性:

1、去掉Project--Build Automatically(自動構建)

2、屬性--Builders--除了Java Builder全部勾去(這樣項目構建速度大大加快)。

3、屬性--Java Build Path--Source--項目名/WebContent/WEB-INF/classes

 

 注意,tomcat7.0和以往不同:

<Context path="/vsearch" docBase="E:/workspace/vsearch2012/WebContent" reloadable="true" debug="5" crossContext="true" /> 

需要注意,xml文件名必須和path的名相同!


發佈了23 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章