IDEA部署tomcat原理小解

2021-10-03 00:19:17 字數 1546 閱讀 8725

在tomcat的conf下有乙個server.xml檔案開啟編輯檔案在上圖所圈位置加入了一段**

1不難發現,其中docbase指的是專案路徑,path為虛擬路徑。這裡專案路徑就和虛擬路徑不一致了。大家可以聯想到乙個點:request有乙個很常用的方法,就是request.getcontextpath(),其實獲取的就是這裡的context標籤中屬性名為path的值。啟動tomcat,訪問http://localhost:8080/hi/hello.html即能正確連線資源hello.html。使用eclipse的同學不妨去看一下自己的conf下的server.xml,會發現之前的web專案都有在context標籤內配置。 

③以上兩種都不是idea的部署方式,idea的部署方式是第三種.。 

在tomcat的conf\catalina\localhost新建乙個xml檔案如下圖 

還是熟悉的配置,但是不需要在server.xml中修改,防止手殘,把主要配置改了。 

訪問http://localhost:8080/hey/hello.html即可訪問到資源。這裡要說明一下,第三章方法的虛擬路徑為xml檔案名字,而不是xml中配置的path,當你修改xml檔案中的path與xml檔案名字不一致時,以xml檔案名字作為虛擬路徑可以訪問到資源,而用path中配置作為虛擬路徑則訪問不到資源。 

2.idea的部署方式 

在idea中啟動tomcat時會看到下面這段日誌 

這裡使用的是之前做的小demo,不用在意。我們把路徑複製在計算機中開啟 

開啟下圖的xml檔案 

可以從配置中看出虛擬路徑配置的和xml檔案的名稱一致。這個虛擬路徑是我在idea的tomcat配置中的部署選項中配置的如下圖

而專案的檔案路徑則在d:\ideawork\mycrm\out\artifacts\mycrm_war_exploded。

這裡有乙個點蠻有意思: 

idea採用的是上面說的第三種部署方式,而第三種部署的虛擬路徑其實是xml檔名就算不配置context標籤中的path也能訪問到資源,那麼idea為什麼多此一舉配置了 

path而且path中的值和xml檔名一致,是單純的巧合嗎,有什麼意義? 

其實很簡單,前面提到request.getcontextpath獲得的是context標籤中屬性名為path的值。但是第三種部署的虛擬路徑其實是xml檔名,保持一致可以認為獲得的contextpath就是虛擬路徑。這樣就可以訪問到資源頁面

tomcat部署 idea 專案

啟動tomcat 預設localhost 8080 projectname 即可訪問,其中,projectname是專案名稱,下同。tomcat conf下修改server.xml,在中新增 projectname docbase projectname.war debug 0 privileged...

IDEA部署tomcat的相關知識

1.idea會為每乙個tomcat部署的專案單獨建立乙份配置檔案 檢視控制台的log using catalina base c users fqy intellijidea2018.1 system tomcat itcast 2.工作空間專案 和 tomcat部署的web專案 tomcat真正訪...

IDEA部署tomcat時 部署路徑的設定方式

在idea部署時會改變tomcat 的catalina.base的路徑,以本機 mac 為例,catalina.base的路徑為 users uc library caches intellijidea2018.2 tomcat unnamed servletdemo此目錄下包含配置資訊,其中ser...