Tomcat 虛擬目錄與主機名
阿新 • • 發佈:2019-02-17
虛擬目錄的 Why&& How
場景
- 你寫了個webApp,專案名叫
ASimpleWebApp
,然後你訪問的話,需要敲localhost:8080/ASimpleWebApp
,好麻煩是吧,名字好長。
對策
- 第一種方法,最簡單的方法,你可以將
webapps
目錄下的ASimpleWebApp
資料夾改個簡單名, - 第二種,高明的方法(或許高明一點),直接對Tomcat說:以後你將對
localhost:8080/A
的訪問全都對映到ASimpleWebApp目錄下。怎麼實現呢?
在<host></host>
標籤中加入(假設ASimpleWebApp所在的目錄是C:\apache-tomcat-7\webapps\ASimpleWebApp
<Context path="/A" docBase="D:\test" reloadable="true"></Context>
注意,這個ASimpleWebApp資料夾是可以隨便放的,也就是說不一定要放在Tomcat的webapps目錄下
也就是說你完全可以將ASimpleWebApp資料夾放到D盤,然後改為
<Context path="/A" docBase="D:\ASimpleWebApp" reloadable="true"></Context>
總結
- 仔細推敲下
虛擬目錄
這個詞,你會發現它的用途
虛擬目錄就是將其他目錄以對映的方式虛擬到該FTP伺服器的主目錄下,這樣,一個FTP伺服器的主目錄實質上就可以包括很多不同碟符、不同路徑的目錄,而不會受到所在盤空間的限制了。
- 還有一種比較好玩的玩法,例如我可以將
localhost:8080
直接對映到一個webapp,以後,只要敲上localhost:8080
就可以直接訪問那個webapp了,然後改下埠,8080
也可以去掉,server.xml下有一個
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
將8080改成80,然後以後直接敲localhost就可以了
主機名的 Why 與 How
場景
- 只有一臺伺服器,上邊執行著兩個webapp:Blog和Novel。訪問不同app要敲
www.kitrst.cn/Novel
或www.kitrst.cn/Blog
。沒感覺這種url比較“土”嗎? - 需求來了:(假設你有兩個域名,並且都對映到這個伺服器的IP上)
- 要將
novel.kitrst.cn
對映到一個名為Novel的webapp - 要將
blog.kitrst.cn
對映到一個名為Blog的webapp。
- 要將
看起來好像高大上了一點
對策
- HTTP協議中包含訪問的域名,也就是說,你可以對Tomcat說:
* 將訪問novel.kitrst.cn
的請求踢到Novel去,將訪問blog.kitrst.cn
的請求踢到Blog去* **。
然後就搞定了-_-
怎麼對Tomcat說呢? 小二, 再來兩斤Host
,上程式碼
<Host name="novel.kitrst.cn" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="C:\apache7.0.72\webapps\Novel" debug="0" reloadable="false"/>
</Host>
<Host name="blog.kitrst.cn" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="C:\apache7.0.72\webapps\Blog" debug="0" reloadable="false"/>
</Host>
總結
通過主機名可以實現多域名對映(讓你的webapp看起來高大上一點)
當然,肯定還有其他用途的,具體請自行摸索
OK,收攤走人