為了在訪問web服務的時候,不需要輸入項目名,直接"/"就可以訪問的話,需要設置虛擬目錄或在ROOT下直接放項目
1、采用虛擬目錄的方式
在Host中添加 <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="/" reloadable="true"></Context>
或
在 conf/Catalina/localhost 中創建ROOT.xml配置
具體配置解釋:
1)crossContext多用戶共享session的配置
2)docBase項目的虛擬目錄,非webapps下
3)path 為瀏覽器訪問目錄
注意以下三點:
1)如果path為空或/的話,則會覆蓋/webapps/ROOT的項目,導致ROOT下的東西無法訪問
2)如果Context的docBase配置在非Webapps目錄下的話,有可能出現Cookie和session互竄的問題,比如用戶1登錄看到用戶2的登錄信息
3)如果配置了Context,並且docBase中的目錄在Webapps下(非ROOT),則會導致項目加載兩次
例如:<Context docBase="/wetalk/wss/apache-tomcat-7.0.62/webapps/AAA" path="" debug="0" reloadable="true"/>
因為項目啟動時,會自動加載Host中配置的Webapps目錄下的項目,且會再次加載Context配置的虛擬目錄
2、直接將項目放在webapps/ROOT目錄下
這種方式不用配置context就可以使用,比較方便
3、其他說明
1)另外tomcat會生成一個C:\Tomcat\conf\Catalina\localhost目錄,里面自動生成了一個ROOT.Xml(root大寫)文件,我們打開文件可以看到這些代碼: <?Xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true"> </Context> 2)注意:我們創建虛擬目錄的時候也是這樣來進行設置的,只使context這個標簽的path屬性不為空。 3)我們設置虛擬目錄和主目錄,都會在C:\Tomcat\conf\Catalina\localhost目錄下生成相應的Xml文件,因此,當我們在 server.Xml里面刪除了主目錄和虛擬目錄的設置后,如果系統還沒有生效,這時候我們就要察看一下這個目錄下的Xml文件是不是已經被刪除了,如果 沒有被刪除,他還是對tomcat起作用的,我們必須手動刪除。 4)基於第3點,通過測試我發現,每當我們訪問一個地址的時 候,tomcat首先是到C:\Tomcat\conf\Catalina\ localhost目錄下去察看有沒有存在主目錄或虛擬目錄的Xml文件,如果有Xml文件,就按Xml里的路徑進行訪問,如果沒有Xml文件,就到 server.Xml文件里去察看是否配置context標簽,如果配置了context標簽,則在C:\Tomcat\conf\Catalina\ localhost目錄下生成一個對應的Xml文件,以便於下次直接驗證而不再訪問server.Xml,與此同時打開context里指定的路徑,如 果 server.Xml里沒有配置context標簽,則返回訪問錯誤頁面。 5.基於第4點,我們其實可以直接在C:\Tomcat\conf\Catalina\localhost下建立一個Xml文件,用於主目錄或者虛擬目錄,而不需要去修改server.Xml就可以達到配置主目錄和虛擬目錄的目的,具體Xml的格式可以如下: <?Xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true"> </Context> 具體是主目錄的配置還是虛擬目錄的配置取決於path的值。另外主目錄文件名必須是ROOT.Xml(root大寫),而虛擬目錄的文件名稱和虛擬目錄的名稱一致並且為小寫,譬如: <?Xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="\cms" reloadable="true"> </Context> 以上則定義了一個名為:cms的虛擬目錄,同時要將以上文本保存為cms.Xml文件。