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文件
- docBase是項目文件夾的web-inf文件夾的上一層目錄
- workDir是指Tomcat解析Jsp轉換爲Java文件,並編譯爲class存放的文件夾,設置 在項目文件夾裏面,可以避免移植到其他地方首次讀取jsp文件需要重新解析 。一般格式:項目文件夾\work
- reloadable是指可以重新加載,一般設置爲true,方便使用,不需要經常重啓Tomcat。
***************
又發現了一篇不錯的文章
轉自: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的名相同!