Tomcat伺服器學習和使用(一),tomcat伺服器

來源:互聯網
上載者:User

Tomcat伺服器學習和使用(一),tomcat伺服器
一、Tomcat伺服器連接埠的配置

  Tomcat的所有配置都放在conf檔案夾之中,裡面的server.xml檔案是配置的核心檔案。

  如果想修改Tomcat伺服器的啟動連接埠,則可以在server.xml設定檔中的Connector節點進行的連接埠修改

例如:將Tomcat伺服器的啟動連接埠由預設的8080改成8081連接埠

Tomcat伺服器啟動連接埠預設配置

1 <Connector port="8080" protocol="HTTP/1.1"2                connectionTimeout="20000"3                redirectPort="8443" />

 

將Tomcat伺服器啟動連接埠修改成8081連接埠

1 <Connector port="8081" protocol="HTTP/1.1"2                connectionTimeout="20000"3                redirectPort="8443" />

  這樣就把原來預設Tomcat預設的的8080連接埠改成了8081連接埠了,需要注意的是,一旦伺服器中的*.xml檔案改變了,則Tomcat伺服器就必須重新啟動,重新啟動之後將重新讀取新的配置資訊。因為已經在server.xml檔案中將Tomcat的啟動連接埠修改成了8081,所以Tomcat伺服器啟動時就以8081連接埠啟動了,如所示:

  

  訪問Tomcat伺服器也必須以新的訪問連接埠去訪問:http://localhost:8081/,如所示:

  

二、Tomcat伺服器虛擬目錄的映射方式

  Web應用開發好後,若想供外界訪問,需要把web應用所在目錄交給web伺服器管理,這個過程稱之為虛似目錄的映射。那麼在Tomcat伺服器中,如何進行虛擬目錄的映射呢?總共有如下的幾種方式:

2.1、虛擬目錄的映射方式一:在server.xml檔案的host元素中配置

找到server.xml檔案的host元素,如所示:

  

  在<Host></Host>這對標籤加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />即可將在F盤下的JavaWebDemoProject這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat伺服器管理的,JavaWebApp是一個硬碟上不存在的目錄,是我們自己隨便寫的一個目錄,也就是虛擬一個目錄,所以稱之為"虛擬目錄",代碼如下:

1 <Host name="localhost"  appBase="webapps"2              unpackWARs="true" autoDeploy="true"3              xmlValidation="false" xmlNamespaceAware="false">4 5          <Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />6  </Host>

  其中,Context表示上下文,代表的就是一個JavaWeb應用,Context元素有兩個屬性,

  Ⅰ.path:用來配置虛似目錄,必須以"/"開頭。

  Ⅱ.docBase:配置此虛似目錄對應著硬碟上的Web應用所在目錄。

  使用瀏覽器訪問"/JavaWebApp"這個虛擬目錄下的1.jsp這個web資源,訪問結果如下:

  

  1.jsp可以正常訪問,這說明我們已經成功地將將在F盤下的JavaWebDemoProject這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上了,訪問"/JavaWebApp/1.jsp"就相當於訪問"F:\JavaWebDemoProject\1.jsp"

  注意:在Tomcat6之後中,不再建議在server.xml檔案中使用配置context元素的方式來添加虛擬目錄的映射,因為每次修改server.xml檔案後,Tomcat伺服器就必須要重新啟動後才能重新載入server.xml檔案。在Tomcat伺服器的文檔http://localhost:8080/docs/config/context.html中有這樣的說明:

  It is NOT recommended to place <Context> elements directly in the server.xml file. This is because it makes modifying the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.

Individual Context elements may be explicitly defined:

  • In an individual file at /META-INF/context.xml inside the application files. Optionally (based on the Host's copyXML attribute) this may be copied to $CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to application's base file name plus a ".xml" extension.
  • In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.
  • Inside a Host element in the main conf/server.xml.
2.2、虛擬目錄的映射方式二:讓tomcat伺服器自動對應

   tomcat伺服器會自動管理webapps目錄下的所有web應用,並把它映射成虛似目錄。換句話說,tomcat伺服器webapps目錄中的web應用,外界可以直接存取。

  例如:把F盤下的JavaWebDemoProject這個JavaWeb應用直接copy到tomcat伺服器webapps目錄中,如所示:
  

  此時Tomcat伺服器就會自動為JavaWebDemoProject這個JavaWeb應用映射一個同名的虛擬目錄"/JavaWebDemoProject",然後就可以使用瀏覽器訪問這個JavaWeb應用的資源了,如所示:

  

2.3、虛擬目錄的映射方式三

  參考Tomcat伺服器文檔:

  In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.

  意思就是:在tomcat伺服器的\conf\Catalina\localhost目錄下添加一個以xml作為副檔名的檔案,xml檔案的名字可以任意取,比如下面的aa.xml,注意這一句話"The context path and version will be derived from the base name of the file",這一句話的意思翻譯過來就是"context元素的path屬性源自於是這個xml檔案的名字",上面提到過,Context元素的path屬性是用來配置虛似目錄的名稱的,所以虛似目錄的名稱就是這個xml檔案的名稱。

  $CATALINA_BASE指的就是tomcat伺服器根目錄,[enginename]指的是Tomcat伺服器使用的引擎名稱,Tomcat使用的引擎是Catalina

  

  在aa.xml檔案中添加Context元素映射JavaWeb應用,代碼如下:

1 <Context docBase="F:\JavaWebDemoProject" />

  注意:在Context元素中並沒有指明path屬性來設定虛擬目錄的名稱,那麼"F:\JavaWebDemoProject"映射的虛擬目錄名稱是神馬呢,就是當前正在編輯的這個xml檔案的名稱aa。

  

  使用這種方式映射虛擬目錄的最大好處是修改了設定檔後不用重啟Tomcat伺服器,比如將aa.xml修改成bb.xml,Tomcat伺服器會自動Undeploying context [/aa],然後自動資訊: Deploying configuration descriptor D:\apache-tomcat-7.0.53\conf\Catalina\localhost\bb.xml

  

三、Tomcat伺服器配置虛似主機3.1、配置虛擬機器主機

  配置虛似主機就是配置一個網站。
  在Tomcat伺服器配置一個虛擬機器主機(網站),需要修改conf檔案夾下的server.xml這個設定檔,使用Host元素進行配置,開啟server.xml,可以看到Tomcat伺服器內建的一個名稱為localhost的虛擬機器主機(網站),如所示:

  

  平時我們將開發好的JavaWeb應用放到webapps檔案夾下,然後就可以使用"http://localhost:連接埠號碼/JavaWebAppName"的方式去訪問了,其實訪問的就是name是"localhost"的那台虛擬機器主機(Host),這台虛擬機器主機管理webapps檔案夾下的所有web應用。

  例如:http://localhost:8080/JavaWebDemoProject/1.jsp,這個URL地址訪問的就是名稱是localhost的那台虛擬機器主機下的JavaWebDemoProject這個應用裡面的1.jsp這個web資源。
   我們可以使用如下的方式配置一個虛擬機器主機,例如:    

1 <Host name="www.gacl.cn" appBase="F:\JavaWebApps">2       3 </Host>

  這裡我們新配置一個虛擬機器主機,虛擬機器主機的name是"www.gacl.cn",虛擬機器主機"www.gacl.cn"現在管理著JavaWebApps檔案夾下的所有web應用,平時我們在互連網上使用網域名稱"www.baidu.com"訪問百度的網站時,其實就是在訪問一個名稱是"www.baidu.com"的虛擬機器主機,所以當我們要訪問name是"www.gacl.cn"的這個虛擬機器主機時,就可以使用"網域名稱(www.gacl.cn)"去訪問,注意一下appBase="F:\JavaWebApps",這裡的JavaWebApps檔案夾代表的不是一個項目的根目錄,而是一個存放了一個或者多個JavaWeb應用的檔案夾,如所示:

   

就好像是Tomcat伺服器的webapps檔案夾一樣,裡面存放了很多的JavaWeb應用

   

3.2、windows系統中註冊網域名稱

  配置的主機(網站)要想通過網域名稱被外部存取,必須在DNS伺服器或windows系統中註冊訪問網站時使用的網域名稱,找到"C:\Windows\System32\drivers\etc"目錄下的hosts檔案,如所示:

  

  編輯這個檔案,將新添加的網站的網域名稱和IP地址綁定在一起,這樣我們就可以在瀏覽器中使用www.gacl.cn這個網域名稱去訪問name是www.gacl.cn那個虛擬機器主機裡面管理的那些web應用了

  

  使用瀏覽器通過網域名稱"www.gacl.cn"訪問"www.gacl.cn"這個虛擬機器主機下的JavaWebDemo1這個web應用下的1.jsp這個web資源,"www.gacl.cn"這個虛擬機器主機開放了一個8080連接埠,使用者只能通過這個8080連接埠去訪問JavaWebDemo1這個web應用下的1.jsp這個web資源

   

四、瀏覽器與伺服器互動的過程4.1、瀏覽器與伺服器互動圖

  當我們開啟瀏覽器,在瀏覽器的地址欄中輸入URL地址"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去訪問伺服器上的1.jsp這個web資源的過程中,瀏覽器和伺服器都做了神馬操作呢,我們是怎麼在瀏覽器裡面看到1.jsp這個web資源裡面的內容的呢?

瀏覽器和伺服器做了以下幾個操作:

  1、瀏覽器根據主機名稱"www.gacl.cn"去作業系統的Hosts檔案中尋找主機名稱對應的IP地址。

  2、瀏覽器如果在作業系統的Hosts檔案中沒有找到對應的IP地址,就去互連網上的DNS伺服器上尋找"www.gacl.cn"這台主機對應的IP地址。

  3、瀏覽器尋找到"www.gacl.cn"這台主機對應的IP地址後,就使用IP地址串連到Web伺服器。

  4、瀏覽器串連到web伺服器後,就使用http協議向伺服器發送請求,發送請求的過程中,瀏覽器會向Web伺服器以Stream(流)的形式傳輸資料,告訴Web伺服器要訪問伺服器裡面的哪個Web應用下的Web資源,如所示:

  

  這就是瀏覽器向Web伺服器發請求時向伺服器傳輸的資料,解釋一下"GET /JavaWebDemo1/1.jsp HTTP/1.1"這裡面的內容,

    GET:告訴Web伺服器,瀏覽器是以GET的方式向伺服器發請求。

    /JavaWebDemo1/1.jsp:告訴Web伺服器,瀏覽器要訪問JavaWebDemo1應用裡面的1.jsp這個Web資源。

    HTTP/1.1:告訴Web伺服器,瀏覽器是以HTTP協議請求的,使用的是1.1的版本。

  5、瀏覽器做完上面4步工作後,就開始等待,等待Web伺服器把自己想要訪問的1.jsp這個Web資源傳輸給它。

  6、伺服器接收到瀏覽器傳輸的資料後,開始解析接收到的資料,伺服器解析"GET /JavaWebDemo1/1.jsp HTTP/1.1"裡面的內容時知道用戶端瀏覽器要訪問的是JavaWebDemo1應用裡面的1.jsp這個Web資源,然後伺服器就去讀取1.jsp這個Web資源裡面的內容,將讀到的內容再以Stream(流)的形式傳輸給瀏覽器,如所示:

  

  這個就是Web伺服器傳輸給瀏覽器的資料。

7、瀏覽器拿到伺服器傳輸給它的資料之後,就可以把資料展現給使用者看了,如所示:

  

  看到的這個"JavaWebDemo1"就是瀏覽器解析伺服器發送回來的資料後的效果

伺服器發送回來的資料:

 1 HTTP/1.1 200 OK 2 Server: Apache-Coyote/1.1 3 Content-Type: text/html;charset=ISO-8859-1 4 Content-Length: 102 5 Date: Mon, 19 May 2014 14:25:14 GMT 6  7 <html> 8     <head> 9         <title>JavaWebDemo1</title>10     </head>11     <body>12         JavaWebDemo113 14     </body>15 </html>

  這就是瀏覽器和伺服器的互動過程。

五、JavaWeb應用的組成結構

  開發JavaWeb應用時,不同類型的檔案有嚴格的存放規則,否則不僅可能會使web應用無法訪問,還會導致web伺服器啟動報錯

  

  WebRoot →Web應用所在目錄,一般情況下虛擬目錄要配置到此檔案夾當中。

    ┝WEB-INF:此檔案夾必須位於WebRoot檔案夾裡面,而且必須以這樣的形式去命名,字母都要大寫。

      ┝web.xml:設定檔,有格式要求,此檔案必須以這樣的形式去命名,並且必須放置到WEB-INF檔案夾中。

  web.xml的格式可以直接從Tomcat中參考得到:找到Tomcat目錄下的webapps\ROOT\WEB-INF這個目錄下的web.xml檔案,把這個檔案拷貝到我們建立的WEB-INF檔案夾中,並修改這個web.xml檔案,把裡面的注釋刪除掉,只留下如下所示的代碼即可:

web.xml :

 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" 3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5    version="2.5"> 6  7   <display-name>Welcome to Tomcat</display-name> 8   <description> 9      Welcome to Tomcat10   </description>11 12 </web-app>

  這就是web.xml這個檔案的格式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.