一般這種需求的前提多是一個tomcat只發布一個web項目, 直接通過根路徑來訪問項目, 一共有三種方法實現.
方式1
簡單粗暴, 將webapps下的ROOT文件夾刪除, 將項目命名為ROOT.war; 或者將項目下的文件及文件夾全部拷貝到ROOT文件夾中, 兩種方式一樣效果.
方式2
修改server.xml, 在Host標簽下增加項目的配置, 如:
<Engine name="Catalina" defaultHost="localhost"...>
...
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/opt/myweb" reloadable="true" />
...
</Host>
...
</Engine>
保險起見, 也刪掉webapps里的ROOT文件夾.
方式3
同方式2, 先刪ROOT文件夾. 通過外部xml來指定發布的項目, 我比較喜歡這種方式, 很久之前一直使用這種方式發布項目. 在{TOMCAT_HOME}/conf/Catalina/localhost下創建ROOT.xml, 內容如:
ROOT.xml
<?xml version="1.0" encoding="utf-8"?>
<Context path="" docBase="D:/projects/myweb" crossContext="true" reloadable="false">
</Context>
path配置成空串表示可以通過根來訪問項目, 如果配置成path="abc", 就是用abc訪問項目, 等等. 其實不想通過根來訪問項目的話, xml的文件名就是發布后項目的訪問名, 無需配置path屬性.