Tomcat 服務器

一 Tomcat服務器端口的配置

首先看一下Tomcat的目錄結構以及每一個目錄的主要做用 
Capture2.PNG-344.3kB 
Tomcat的全部配置都放在了conf文件夾中,裏面的server.xml是配置的核心文件。 
若是想要修改Tomcat的默認啓動端口,能夠修改server.xml的Connect配置的port屬性。
html

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

注意,一旦修改了conf的.xml文件,就要重啓tomcat,訪問Tomcat服務器時也要以新的訪問端口去訪問。 
Capture3.PNG-24.8kB 
bin目錄下的這兩個負責啓動和關閉tomcat服務器
java

 

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

web應用開發好以後,若想提供給外界訪問,須要將web應用所在目錄交給web服務器管理,這個過程就叫虛擬目錄的映射。Tomcat有如下幾種映射方式:web

 方式一:在server.xml的host元素中配置
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

在Host標籤下添加Context標籤,如:apache

<Host name="localhost"  appBase="webapps"
     unpackWARs="true" autoDeploy="true"
     xmlValidation="false" xmlNamespaceAware="false">

          <Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
 </Host>

這樣就能夠將F盤下的JavaWebDemoProject項目映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat服務器管理的,它自己是一個硬盤上不存在的目錄,也就是一個虛擬目錄。其中,Context表示上下文,表明的就是一個javaWeb應用,context有兩個屬性: 
1.path: 用來配置虛擬目錄,必須以"/"開頭 
2.docBase: 配置此虛擬目錄對應着硬盤上Web應用所在目錄 
Capture4.PNG-54.8kB 
這裏訪問/JavaWebApp/1.jsp就至關於訪問F:/JavaWebDemoProject/1.jsp 
注意,Tomcat6之後就不在建議經過這種方式來添加虛擬目錄的映射,由於每次修改server.xml以後都要重啓tomcat服務器來加載server.xml文件。
windows

方式二:Tomcat服務器自動映射

Tomcat服務器會自動管理webapps目錄下的全部web應用,並把它映射成虛擬目錄。也就是說,tomcat服務器的webapps目錄下的全部web應用,外界能夠直接訪問。 
所以能夠直接將F盤下的JavaWebDemoProject這個應用copy到tomcat服務器的webapps目錄下便可。如圖: 
Capture5.PNG-14.2kB 
這時Tomcat服務器就會自動爲JavaWebDemoProject這個應用映射一個同名的虛擬目錄"/JavaWebDemoProject",而後你就能夠用瀏覽器訪問這個資源了,如圖: 
Capture6.PNG-69.6kB
瀏覽器

方式三:添加配置文件

在Tomcat服務器的\conf\Catalina\locahost目錄下添加一個xml文件,虛擬目錄的名稱就是該xml文件名。 
以前在方法一中Context元素的path屬性跟這裏的xml文件名的做用是同樣的。如: 
Capture7.PNG-8.4kB 
在aa.xml文件中添加Context元素映射JavaWeb應用,代碼以下:
tomcat

<Context docBase="F:\JavaWebDemoProject" /> //在aa.xml中就不用path屬性了

訪問地址:http://localhost:8080/aa/1.jsp 
使用這種方式的好處是修改了配置文件以後不用重啓Tomcat服務器,Tomcat服務器會自動加載配置文件。
服務器

 

三 Tomcat服務器配置虛擬主機

配置虛擬主機其實就是配置一個網站。只須要修改conf文件下的server.xml,使用Host元素進行配置便可。app

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

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

這個配文件中的name="localhost"其實就是定義了一個name爲localhost的虛擬主機,這臺虛擬主機管理webapps文件夾下的全部web應用,這樣咱們就能夠經過"http://localhost:端口號/JavaWebAppName"來訪問了。若是使用以下的方式配置一個虛擬主機:webapp

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

也就是說,配置了一個name爲"www.gacl.cn"的虛擬主機,該虛擬主機管理着F:\JavaWebApps下的全部web應用。要想訪問"http://www.gacl.cn:端口號/JavaWebAppName",還須要在windows系統中註冊"www.gacl.cn"這個域名

 

windows系統中註冊域名

配置的主機要想經過域名被外部訪問,必須在DNS服務器或windows系統中註冊訪問網站時使用的域名。 
找到"C:\Windows\System32\drivers\etc"目錄下的hosts文件,以下圖所示: 
Capture8.PNG-12.6kB
將新添加的網站的域名和IP地址綁定在一塊兒,那麼咱們在瀏覽器中使用www.gacl.cn這個域名來訪問虛擬主機管理的那些web應用了。 
Capture9.PNG-22.2kB

這樣就能夠訪問了。 
Capture10.PNG-56.9kB

 

四 瀏覽器與服務器交互

當咱們在瀏覽器的地址欄中輸入URL地址,如"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去訪問服務器上的1.jsp事,服務器和瀏覽器都作了什麼呢,咱們又是怎樣看到1.jsp這個web資源裏的內容的呢? 
整個交互過程以下: 
1. 瀏覽器根據主機名"www.gacl.cn"去操做系統的hosts文件查找主機名對應的IP地址; 
2. 若是沒找到,就去互聯網上DNS服務器上查找"www.gacl.cn"這臺主機對應的IP地址; 
3. 找到這臺主機對應的IP地址後,就用IP地址鏈接到Web服務器; 
4. 瀏覽器鏈接到Web服務器後,就使用http協議向服務器發送請求,發送請求的過程當中,瀏覽器會向Web服務器以stream的形式傳輸數據,告訴web服務器要訪問裏面的哪一個web應用下的web資源,以下圖所示: 
Capture11.PNG-13.9kB 
這個就是瀏覽器向web服務器發送請求時傳輸的數據: 
GET /JavaWebDemo1/1.jsp:瀏覽器以get的方式向服務器發送請求,請求的是avaWebDemo1裏的1.jsp這個Web資源。 
Host: www.gacl.cn:8080: 訪問的是www.gacl.cn對應的IP地址,和8080端口。 
5. 瀏覽器作完上面4步以後,開始等待,等待web服務器把本身想要訪問的1.jsp這個資源傳輸給它; 
6. 服務器接收到瀏覽器傳輸的數據以後,開始進行解析,將讀到的內容再以stream的形式傳輸給瀏覽器,如圖: 
Capture12.PNG-6.5kB 
HTTP/1.1 200 OK:使用的HTTP協議1.1的版本,200表示請求成功 
這個就是Web服務器傳輸給瀏覽器的數據。 
7. 瀏覽器拿到服務器傳輸給它的數據後,將數據展示出來,如圖: 
Capture13.PNG-58.5kB

 

五 Tomcat的體系結構

JavaWeb學習總結 三 ——Tomcat服務器學習和使用 二    孤傲蒼狼   博客園.png-57.7kB 
Tomcat服務器的啓動是基於server.xml這個文件的,Tomcat啓動時先啓動一個Server,Server裏就會啓動Service,Service裏啓動多個Conntector(鏈接器),每個鏈接器都在等待客戶機的鏈接,當有用戶使用瀏覽器去訪問服務器上的web資源時,首先是鏈接到Connector,Connector是不處理用戶請求的,而是將用戶請求直接交給Engine(引擎)去處理,Engine接收到請求後就會解析到用戶想要訪問的Host,而後將請求交給相應的Host,Host收到請求後就會解析用戶想要訪問這個Host下面的哪個web應用,一個web應用對應了一個Context。 
整個的過程跟server.xml的配置是對應的:

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/.keystore" keystorePass="123456"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
      <Host name="www.gacl.cn" appBase="F:\JavaWebApps">
        <Context path="" docBase="F:\JavaWebApps\JavaWebDemo1"/>
      </Host>

    </Engine>
  </Service>
</Server>

 

六 JavaWeb應用的組成結構

一個JavaWeb項目,不一樣類型的文件有嚴格的存放規則,不然不只可能會使web應用沒法訪問,還會致使web服務器啓動報錯。 
Capture14.PNG-33kB

WebRoot:web應用所在目錄,通常狀況下虛擬目錄要配置到此文件夾當中。 
WEB-INF:此文件夾必須位於WebRoot文件夾裏面,並且必須以這樣的形式去命名,字母都要大寫。 
web.xml:配置文件,有格式要求,此文件必須以這樣的形式去命名,而且必須放置到WEB-INF文件夾中。

 

七 項目打包

JAVA中使用jar命令將項目打包成一個war包,具體的使用方法以下: 
Capture15.PNG-36.5kB
如,將JavaWebDemoProject這個JavaWeb應用打包成war包 
Capture16.PNG-55.3kB
執行完以後,會獲得JavaWebDemoProject.war文件,而後將這個war包放到Tomcat服務器的webapps目錄下,當服務器啓動時,就會自動將該目錄下的war包解壓。

相關文章
相關標籤/搜索