這篇文章將為大家詳細(xì)講解有關(guān)tomcat之目錄映射的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
10多年的古田網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整古田建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“古田網(wǎng)站設(shè)計(jì)”,“古田網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。web應(yīng)用的概念:一個(gè)web應(yīng)用包含了許多我們做好的web資源,里面或許包括了多個(gè)靜態(tài)web資源和動(dòng)態(tài)web資源,如html、css、js文件,jsp文件,Java程序,jar包和配置文件等等,如我在Tomcat的【webapps】目錄下的自定義目錄【fjdingsdapp】中包含了一個(gè)1.html文件,那么這個(gè)在【fjdingsdapp】整個(gè)可以運(yùn)行文件中的所有資源可以稱為是我開發(fā)的一個(gè)web應(yīng)用程序,簡(jiǎn)稱web應(yīng)用,而單單【fjdingsdapp】這個(gè)包含所有我開發(fā)的web資源稱為我的web應(yīng)用所在目錄。
而我們將web應(yīng)用開發(fā)好之后,若想供外界訪問,那么久需要把web應(yīng)用所在目錄交給服務(wù)器管理,這個(gè)過程稱為虛擬目錄的映射。
服務(wù)器的虛擬目錄映射有三種方式:
第一種(不推薦):
雖然這種方式不推薦,但是可以用來(lái)設(shè)置自己開發(fā)的web應(yīng)用的首頁(yè),無(wú)需再鍵入虛擬目錄名和資源名作為URL路徑。
在server.xml文件中找到Host標(biāo)簽元素,在其下使用Context標(biāo)簽,注意這是在操作XML文件,XML文件是區(qū)分大小寫的,一個(gè)Context標(biāo)簽就代表一個(gè)web應(yīng)用。
假設(shè)我的Tomcat服務(wù)器在【F】盤,其【webapps】目錄中沒有我的web應(yīng)用,而我的web應(yīng)用放在【D】盤的【myWebApp】目錄中,該目錄下有一個(gè)1.html文件,要想在瀏覽器中能訪問到我的這個(gè)web應(yīng)用,我在Tomcat的server.xml文件中找到Host標(biāo)簽,添加Context標(biāo)簽并配置屬性(注意這是無(wú)結(jié)束標(biāo)簽,要注意結(jié)束方式/),如下示例:
HostappBase="webapps"autoDeploy="true"name="localhost"unpackWARs="true" Contextpath=""docBase="D:\myWebApp"/ /Host
path屬性:虛擬目錄的名稱,也就是對(duì)外訪問路徑,本地硬盤中不一定有這個(gè)目錄,但是如果path屬性有值,在瀏覽器地址欄必須輸入。這里為缺省值。
docBase屬性:web應(yīng)用所在目錄,這個(gè)是硬盤中必須存在的,在這個(gè)目錄中放的是我們的web資源。
每次配置server.xml文件后,必須重啟Tomcat服務(wù)器。
由于我們?cè)O(shè)置了Context的path屬性為缺省值,因此在地址和端口之后只需要輸入資源名即可:
如果path屬性有值,比如path=123 (隨便寫的)
Contextpath="123"docBase="D:\myWebApp"/
那么瀏覽器在輸入時(shí)必須有這個(gè)路徑才能訪問到對(duì)應(yīng)的文件:
結(jié)尾:一個(gè)Context標(biāo)簽即代表一個(gè)web應(yīng)用,因此在Host標(biāo)簽下可以有多個(gè)web應(yīng)用,但是這些Context中的path屬性只能有一個(gè)是缺省值。Context元素在配置文件中除用于映射虛擬目錄之外,還可以用于為web應(yīng)用配置一些資源,例如配置web應(yīng)用使用的數(shù)據(jù)庫(kù)連接池,javamailsession等(這些配置以后會(huì)介紹到)。
之所以不推薦這種方法,這是因?yàn)樵赥omcat服務(wù)器的說明上已經(jīng)表明這種方法需要經(jīng)常性的修改server.xml文件,而每次修改都需要重啟服務(wù)器
看到如下的說明:
================================================
第二種:
同樣在Tomcat對(duì)于Context標(biāo)簽的說明中,有這么一種方式:
這是另一種定義Context標(biāo)簽的方式,無(wú)需在Host標(biāo)簽下定義,這種方式的好處是不需要每次都要重啟Tomcat,那么這種方式應(yīng)該怎么做呢?
首先,我們需要自定義一個(gè)XML文件,而這個(gè)XML文件的文件名(除去".xml"的部分)將會(huì)作為今后瀏覽器輸入的路徑名,類似于這個(gè)文件名是虛擬目錄名稱(即對(duì)外訪問路徑),我們需要在這個(gè)自定義的XML文件中添加Context元素,這種方式就不需要添加path屬性了,因?yàn)槲募呀?jīng)代替了。
其次,在上圖中有這么一段路徑:$CATALINA_BASE/conf/[enginename]/[hostname]/directory
,我設(shè)的正是Tomcat的主目錄,而conf正好也是Tomcat下的配置文件目錄名,那么[enginename]和[hostname]對(duì)應(yīng)的目錄是什么呢?我們打開server.xml文件,看到里面有的Engine和Host這兩個(gè)標(biāo)簽(Host就是第一種方式中所說的那個(gè))
EnginedefaultHost="localhost"name="Catalina"
...(此處省略其他內(nèi)容)
HostappBase="webapps"autoDeploy="true"name="localhost"unpackWARs="true" /Host /Engine
可以看到這兩個(gè)標(biāo)簽中正好都有name屬性,Engine元素的name屬性值為Catalina,Host元素的name屬性值為localhost,正好是【conf】目錄下的【Catalina】目錄,和【Catalina】目錄下的【localhost】目錄:
在【localhost】目錄中,就是我們要放置的自定義XML文件。
現(xiàn)在,我的web應(yīng)用所在目錄為【D】盤中的【myWebApp】目錄中,而這回不需要去server.xml文件中配置路徑,我在Tomcat目錄下的【conf】--【Catalina】--【localhost】下創(chuàng)建一個(gè)rr.xml文件:
在D盤下放置我的web應(yīng)用
在指定的Tomcat路徑中放置我的XML配置文件,將會(huì)映射到我的web應(yīng)用
在rr.xml文件中的代碼就一行:
ContextdocBase="D:\myWebApp"/
之前說過,自定義的XML文件名是作為對(duì)外訪問路徑,所以要想在瀏覽器中訪問我的web應(yīng)用,就該這么輸入,能看到:
當(dāng)然這還沒完,繼續(xù)開著服務(wù)器不要關(guān),我們?cè)谠赥omcat目錄下的【conf】--【Catalina】--【localhost】下再創(chuàng)建一個(gè)"dsd.xml"文件,內(nèi)容同rr.xml文件,將瀏覽器的路徑修改,可以看到:
是的,這種方式能避免經(jīng)常重啟Tomcat服務(wù)器。
由自定義的XML文件可以通過文件名來(lái)增加多級(jí)訪問路徑,以#相隔,例如:
那么瀏覽器地址欄應(yīng)該這么輸入:
當(dāng)然,第一種方式還有缺省的類型,那么第二種方式是否也能這樣呢,那就需要定義一個(gè)ROOT.xml文件了,對(duì),文件名就叫ROOT,必須全部大寫,在ROOT.xml中的內(nèi)容依然還是為
ContextdocBase="D:\myWebApp"/
那么瀏覽器就可以省略虛擬目錄名(對(duì)外訪問路徑),如下:
Context的最后:
Context標(biāo)簽有一個(gè)reloadable屬性,能運(yùn)行Tomcat自動(dòng)加載更新后的web應(yīng)用,尤其是在web應(yīng)用中有新的Java程序更新時(shí),但是這個(gè)屬性是要避免使用的,通常web應(yīng)用都是比較大的,如果設(shè)置了這個(gè)屬性,Tomcat服務(wù)器容易卡死,因此不建議使用。
第三種:
讓Tomcat自動(dòng)映射,Tomcat會(huì)自動(dòng)管理其【webapps】目錄下的所有web應(yīng)用,并把這些web應(yīng)用所在目錄映射成虛擬目錄。因此我們只要講自己開發(fā)好的web應(yīng)用放置在Tomcat的【webapps】目錄下即可。而對(duì)外訪問的路徑名稱就是web應(yīng)用所在目錄的名稱。
如我在【webapps】目錄下創(chuàng)建一個(gè)自定義目錄【mywebapp】,里面含有一個(gè)3.html文件,
----
那么在瀏覽器中輸入地址:
通過這種方式,也無(wú)需重啟服務(wù)器。
那么通過這種方式可以指定web應(yīng)用所在目錄的默認(rèn)頁(yè)面,在目錄【mywebapp】下定義一個(gè)index.html。文件名一定是index才行,其他文件名會(huì)查找不到,這時(shí)在瀏覽器中只需要鍵入地址和web應(yīng)用所在目錄(已作為虛擬目錄)即可,無(wú)需鍵入對(duì)應(yīng)資源名(不需要再多加index.html):
關(guān)于“tomcat之目錄映射的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。