1. 程式人生 > >JavaWeb學習總結(二)——Tomcat服務器學習和使用(一)

JavaWeb學習總結(二)——Tomcat服務器學習和使用(一)

是我 direct 導致 brush app 好處 無法訪問 更改 sch

一、Tomcat服務器端口的配置

Tomcat的所有配置都放在conf文件夾之中,裏面的server.xml文件是配置的核心文件。

如果想修改Tomcat服務器的啟動端口,則可以在server.xml配置文件中的Connector節點進行的端口修改

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

更改其中的port即可改變啟動端口

需要註意的是,一旦服務器中的*.xml文件改變了,則Tomcat服務器就必須重新啟動,重新啟動之後將重新讀取新的配置信息。

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

Web應用開發好後,若想供外界訪問,需要把web應用所在目錄交給web服務器管理,這個過程稱之為虛似目錄的映射

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

找到server.xml文件的host元素,在<Host></Host>這對標簽加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />即可將在F盤下的JavaWebDemoProject這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat服務器管理的,JavaWebApp是一個硬盤上不存在的目錄,是我們自己隨便寫的一個目錄,也就是虛擬的一個目錄,所以稱之為"虛擬目錄"。

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

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

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

註意:在Tomcat6之後中,不再建議在server.xml文件中使用配置context元素的方式來添加虛擬目錄的映射,因為每次修改server.xml文件後,Tomcat服務器就必須要重新啟動後才能重新加載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服務器的\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文件的名稱。

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

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

使用這種方式映射虛擬目錄的最大好處是修改了配置文件後不用重啟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應用。

我們可以使用如下的方式配置一個虛擬主機,例如:

<Host name="www.gacl.cn" appBase="F:\JavaWebApps">
       
</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應用

在conf\server.xml 裏配置主機 Host 標簽 ,在appBase這個屬性裏給出所有web應用的文件夾名

在conf\Catalina\主機名裏配置 虛擬目錄的映射 , 創建 虛擬目錄名.xml,在Context標簽的docBase這個屬性裏給出真實目錄名,也就是真實的web應用的路徑

3.2、mac OS中註冊域名

sudo vim /etc/hosts

輸入密碼後就可以添加 ip 和 域名的映射

使用瀏覽器通過域名"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、瀏覽器拿到服務器傳輸給它的數據之後,就可以把數據展現給用戶看了

這就是瀏覽器和服務器的交互過程。

五、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 :

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

</web-app>

這就是web.xml這個文件的格式

JavaWeb學習總結(二)——Tomcat服務器學習和使用(一)