1. 程式人生 > >Tomcat 虛擬目錄與主機名

Tomcat 虛擬目錄與主機名

虛擬目錄的 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/Novelwww.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,收攤走人