1. 程式人生 > >tomcat中Context的path和docBase屬性

tomcat中Context的path和docBase屬性

 

首先,我來做一有趣的實驗:

 

第一步:我在E盤建立了一個picture檔案包,裡面放一張圖片(cat.png)

第二步:我修改tomcatservice.xml配置,新增如下程式碼:

 

第三步:啟動tomcat,用瀏覽器訪問:http://127.0.0.1:8080/mytest/cat.png

(啟動成功)

 

 

怎麼可能呢?我訪問http://127.0.0.1:8080/mytest/cat.png,竟然成功顯示出了存放在我E盤裡面的圖面!

理由是:

<Context path="/mytest"  

docBase="E:\picture"  reloadable="true"/>

  docBase:設定訪問web的應用或設定本地路徑。

  Path:設定tomcat訪問應用的URL路徑。(URL路徑就是例如http://127.0.0.1:80……

 

通俗說就是:配置了上面內容後,以後你訪問http://127.0.0.1:8080/mytest Path內容)時,預設就是訪問的就是E:\picture docBase內容)裡面的內容。

 

所以,我們可以通過修改Contextpath屬性來指定url最終訪問的是哪個應用,而docBase指明該應用的具體

實體地址

 

【拓展】

①至於reloadable:

如果這個屬性設為truetomcat伺服器在執行狀態下會監視在WEB-INF/classesWEB-INF/lib目錄下class檔案的改動,如果監測到有class檔案被更新的,伺服器會自動重新載入Web應用。

在開發階段將reloadable屬性設為true,有助於除錯servlet和其它的class檔案,但這樣用加重伺服器執行負荷,建議在Web應用的發存階段將reloadable設為false

 

②關於以下tomcat自動生成的程式碼的說明:

<Context path="/Day1113web"

  docBase="Day1113web"  reloadable="true"/>

 

意思就是:當你訪問http://127.0.0.1:8080/Day1113web/...時,它預設訪問Day1113web/... 為什麼 docBase不寫明什麼盤呢?只寫Day1113web系統哪裡知道他什麼盤?  

因為:除非自己更改了,否則預設位置就是在tomcatwebapps!你的tomcatwebapps下當然有Day1113web這一個專案在!

 

所以你可以發現,你在tomcat下建立了一個新專案時,它自動會在service.xml中生成:

<Context path="/你建的專案名"  docBase="你建的專案名"  reloadable="true"/>