Tomcat的用途

總結:

這篇文章主要反思了Tomcat的作用。本文主要是自己的一個思考過程,不是嚴謹地介紹和詳細總結Tomcat使用方法的文章。最後嘗試利用tomcat的知識,以URL的形式來訪問文件夾(在瀏覽器的地址欄直接黏貼文件的路徑也可以訪問,但是這裏可以不用實際的路徑進行訪問)。該例子實用意義不大,主要是加深對tomcat的理解。

教材上說,Tomcat是Apache組織的Jakarta項目的一個重要子項目,它是Sun公司推薦的運行Servlet和JSP的容器。也就是說它是一個容器,但隨處也可見“Tomcat服務器”的說法。

事實上,Tomcat即是容器也是服務器。不過本文主要涉及Tomcat發揮容器功能的部分。Tomcat是用Java語言編寫的,需要運行在Java虛擬機上,所以一般需要先安裝JDK,以提供運行環境。

上面說過Tomcat是一個容器,但爲什麼開發出來的應用需要裝進Tomcat這個容器呢。忽略各個文件之間的跳轉,web應用本質只是一個裝有很多資源(java/html/jsp/js/css等各種格式文件)的文件夾。假如我們有一個web應用projectA,我們在某臺計算機A把這些文件寫好後,就希望其他設備能夠通過一些方式來訪問我們的資源。一種方法是通過在瀏覽器地址欄輸入URL來實現資源的訪問。

那麼從我們在計算機A上寫好某個文件夾到文件夾能夠被其他計算機所訪問,需要什麼呢。首先需要我們的互聯網。計算機B先通過互聯網找到計算機A。

而這樣做的前提是你這個電腦必須在互聯網這個網絡裏面,這樣別人才能訪問到你。也就是說一臺電腦必須要有IP地址才能稱爲服務器。但這樣也只是找到了IP地址而已,我們還需要找到對應的主機(注:一般主機是指一臺電腦,但在tomcat中,虛擬主機指的是計算機中的某個文件夾)。但就算找到了計算機A,我們怎麼知道要去哪裏尋找web應用projectA呢。Tomcat容器就是來解決這個問題的。在我看來,Tomcat的一個重要的功能就在於“映射”(通過配置文件實現)。


虛擬主機名的配置

首先確定一個虛擬的主機名。Tomcat默認使用localhost作爲虛擬主機名,並映射到webapps文件夾。在Tomcat安裝目錄下的server.xml文件夾的內容如下所示:

<Host appBase= "webapps" autoDeploy="true" name="localhost" unpackWARs="True">

如果也想要同時能夠訪問計算機A中的不同路徑下的文件,這時候就可以添加一個<Host>元素,把這個新的路徑添加進去,然後給它起一個虛擬的主機名字(關於虛擬主機名和路徑的配置,因爲是根據虛擬目錄來指定要訪問的路徑,如果虛擬目錄的路徑是絕對路徑,那麼這裏的路徑沒有意義,但是如果採用相對路徑的方式,那麼這裏的路徑就有意義。而虛擬的主機名除了在這裏進行設置外,還需要在hosts中進行設置,並且需要在catalina文件夾下新建一個同名的文件夾,虛擬目錄可以在這裏進行配置,這些內容會在下面具體展開)。

<Engine name="Catalina" defaultHost = "localhost">
  ...
<Host name= "newhost" appBase="d:\newhost">
  ...
</Host>
</Engine>

(注:還需要到Windows系統中hosts進行註冊,這樣ip地址才能映射到這個虛擬主機)


虛擬目錄的配置

然後就是配置虛擬目錄。例如想在url爲localhost/chapter01時跳轉到特定的目錄下。就需要在<Tomcat安裝目錄>\conf\Catalina\localhost目錄下新建一個chapter01.xml(命名任意)。輸入:

<Context path="/chapter01" docBase="d:\chapter01">

也就是說,從表面上來看,url中的localhost/chapter01貌似是指向localhost下面的chapter01文件夾,但其實上並非如此,這兩者仍然要分開進行指定。並且不一定存在父子文件夾的關係。除此以外,還可以指定默認頁面(例如指定welcome.html)。打開<Tomcat根目錄>\conf目錄下的web.xml文件。這時候需要在chapter01目錄中創建WEB-INF目錄,並在該目錄下創建一個web.xml文件。配置方法如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app ...>   
           <welcome-file-list>
                <welcome-file>welcome.html</welcome-file>
        </welcome-file-list>
     </web-app>

(也可以在<Tomcat安裝目錄>/conf目錄下的server.xml文件進行配置,但是需要進行重啓後才生效)

而tomcat的管理平臺又起到什麼作用呢。它列出了所有的web應用及其狀態。並且提供每個web的啓動、停止和卸載的功能。這意味着它可以選擇電腦中哪部分資源有效,哪部分資源無效。那麼這樣來看的話,其實tomcat就像酒店前臺,給你門卡讓你去找到對應的房間(web資源),並且決定哪些房間不能進,哪些可以進去

然後執行了startup.bat啓動Tomcat。啓動後其實就是把這些映射激活了。關閉後就相當於酒店前臺走了,來訪者(URL請求)不知如何是好。網上有人說啓動了tomcat後,CATALINA_PATH & CATALINA_BASE will refer to the resource location.也就是說知道去哪裏找我們的資源了。如果仔細看上面虛擬主機的配置內容,就會發現<Host>元素是放在<Engine>元素裏面的。而Engine的name就是Catalina。一旦啓動tomcat,就表明我們的配置能夠生效。文件夾projectA就不是簡單的一個文件夾了,而是變成了一個可以通過URL訪問得到的一個文件夾。按照這種思路的話,我們其實可以自己定義一些路徑(下文給出一個例子)。

所以tomcat像是一個橋樑,外界訪問服務器(某臺計算機)資源的時候,tomcat能夠找到對應的文件夾。所以當我們訪問localhost://index.html,他就知道去這臺電腦的哪個位置尋找資源index.html。當然,tomcat也有它力所難及的地方,例如編寫有組織的web應用就不是它的強項了。這也是我們後面要不停地用Eclipse等進行整合開發的原因。

一個簡單的案例(用URL請求訪問本地文件夾中的視頻)

假如我有視頻放在文件夾(E:\jpvideo)中,其中有一個文件名爲1.mp4,如果我想通過URL(例如:video/jpvideo/1.mp4)來訪問電腦上的這個文件夾的資源。那麼要怎麼做呢。方法如下:
a、首先來到tomcat安裝目錄下,找到server.xml。添加一個名爲“video”的虛擬主機。

  <Host appBase="e:\" name="video">
  </Host>

b、然後更改了hosts文件:(添加如下代碼)

127.0.0.1   video

c、配置虛擬目錄,方法是在<Tomcat安裝目錄>\conf\Catalina下面新建一個video文件夾,在video文件夾下面新建一個xml文件(名字任意),輸入如下內容。

<Context path = "/jpvideo" docBase="E:\jpvideo"/>
  • 注:由於此處使用的是絕對路徑,所以Host的appBase路徑的設置對實驗結果沒有影響

d、最後通過cmd輸入startup.bat來啓動tomcat,激活這些配置。

e、(驗證)在地址欄中輸入video/jpvideo/1.mp4,結果如下,可以直接打開視頻並播放。

發佈了81 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章