原文鏈接:http://www.cnblogs.com/xdp-gacl/p/3734395.html
Tomcat服務(wù)端口配置
Tomcat的所有配置都放在conf文件夾之中,里面的server.xml文件是配置的核心文件朗和。
如果想修改Tomcat服務(wù)器的啟動(dòng)端口善绎,則可以在server.xml配置文件中的Connector節(jié)點(diǎn)進(jìn)行的端口修改
Tomcat服務(wù)器啟動(dòng)端口默認(rèn)配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
將Tomcat服務(wù)器啟動(dòng)端口修改成8081端口
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
這樣就把原來(lái)默認(rèn)Tomcat默認(rèn)的的8080端口改成了8081端口了钦铺,需要注意的是殊校,一旦服務(wù)器中的*.xml文件改變了张漂,則Tomcat服務(wù)器就必須重新啟動(dòng)晶默,重新啟動(dòng)之后將重新讀取新的配置信息。因?yàn)橐呀?jīng)在server.xml文件中將Tomcat的啟動(dòng)端口修改成了8081航攒,所以Tomcat服務(wù)器啟動(dòng)時(shí)就以8081端口啟動(dòng)了磺陡,如下圖所示:
訪問(wèn)Tomcat服務(wù)器也必須以新的訪問(wèn)端口去訪問(wèn):http://localhost:8081/,如下圖所示:
Tomcat虛擬目錄映射
Web應(yīng)用開(kāi)發(fā)好后,若想供外界訪問(wèn)币他,需要把web應(yīng)用所在目錄交給web服務(wù)器管理坞靶,這個(gè)過(guò)程稱之為虛似目錄的映射。
那么在Tomcat服務(wù)器中蝴悉,如何進(jìn)行虛擬目錄的映射呢彰阴?總共有如下的幾種方式:
-
虛擬目錄的映射方式一:在server.xml文件的host元素中配置
找到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 "%r" %s %b" />
</Host>
在<Host></Host>
這對(duì)標(biāo)簽加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
即可將在F盤(pán)下的JavaWebDemoProject這個(gè)JavaWeb應(yīng)用映射到JavaWebApp這個(gè)虛擬目錄上拍冠,JavaWebApp這個(gè)虛擬目錄是由Tomcat服務(wù)器管理的尿这,JavaWebApp是一個(gè)硬盤(pán)上不存在的目錄,是我們自己隨便寫(xiě)的一個(gè)目錄倦微,也就是虛擬的一個(gè)目錄,所以稱之為"虛擬目錄"正压,代碼如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
</Host>
其中欣福,Context表示上下文,代表的就是一個(gè)JavaWeb應(yīng)用焦履,Context元素有兩個(gè)屬性:
path:用來(lái)配置虛似目錄拓劝,必須以"/"開(kāi)頭。
docBase:配置此虛似目錄對(duì)應(yīng)著硬盤(pán)上的Web應(yīng)用所在目錄嘉裤。
使用瀏覽器訪問(wèn)"/JavaWebApp"這個(gè)虛擬目錄下的1.jsp這個(gè)web資源郑临,訪問(wèn)結(jié)果如下:
1.jsp可以正常訪問(wèn),這說(shuō)明我們已經(jīng)成功地將將在F盤(pán)下的JavaWebDemoProject這個(gè)JavaWeb應(yīng)用映射到JavaWebApp這個(gè)虛擬目錄上了屑宠,訪問(wèn)"/JavaWebApp/1.jsp"就相當(dāng)于訪問(wèn)"F:\JavaWebDemoProject\1.jsp"
注意:在Tomcat6之后中厢洞,不再建議在server.xml文件中使用配置context元素的方式來(lái)添加虛擬目錄的映射,因?yàn)槊看涡薷膕erver.xml文件后典奉,Tomcat服務(wù)器就必須要重新啟動(dòng)后才能重新加載server.xml文件
-
虛擬目錄的映射方式二:讓tomcat服務(wù)器自動(dòng)映射
tomcat服務(wù)器會(huì)自動(dòng)管理webapps目錄下的所有web應(yīng)用躺翻,并把它映射成虛擬目錄。
換句話說(shuō)卫玖,tomcat服務(wù)器webapps目錄中的web應(yīng)用公你,外界可以直接訪問(wèn)。
例如:把F盤(pán)下的JavaWebDemoProject這個(gè)JavaWeb應(yīng)用直接copy到tomcat服務(wù)器webapps目錄中假瞬,如下圖所示:
此時(shí)Tomcat服務(wù)器就會(huì)自動(dòng)為JavaWebDemoProject這個(gè)JavaWeb應(yīng)用映射一個(gè)同名的虛擬目錄"/JavaWebDemoProject"陕靠,然后就可以使用瀏覽器訪問(wèn)這個(gè)JavaWeb應(yīng)用的資源了,如下圖所示:
虛擬目錄的映射方式三:自定義xml
參考Tomcat服務(wù)器文檔:
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服務(wù)器的\conf\Catalina\localhost目錄下添加一個(gè)以xml作為擴(kuò)展名的文件脱茉,xml文件的名字可以任意取剪芥,比如下面的aa.xml,注意這一句話"The context path and version will be derived from the base name of the file"琴许,這一句話的意思翻譯過(guò)來(lái)就是"context元素的path屬性源自于是這個(gè)xml文件的名字"粗俱,上面提到過(guò),Context元素的path屬性是用來(lái)配置虛似目錄的名稱的,所以虛擬目錄的名稱就是這個(gè)xml文件的名稱寸认。
$CATALINA_BASE
指的就是tomcat服務(wù)器根目錄签财,[enginename]
指的是Tomcat服務(wù)器使用的引擎名稱,Tomcat使用的引擎是Catalina
在aa.xml文件中添加Context元素映射JavaWeb應(yīng)用偏塞,代碼如下:
<Context docBase="F:\JavaWebDemoProject" />
注意
:在Context元素中并沒(méi)有指明path屬性來(lái)設(shè)置虛擬目錄的名稱唱蒸,那么"F:\JavaWebDemoProject"映射的虛擬目錄名稱是神馬呢,就是當(dāng)前正在編輯的這個(gè)xml文件的名稱aa灸叼。
使用這種方式映射虛擬目錄的最大好處是修改了配置文件后不用重啟Tomcat服務(wù)器神汹,比如將aa.xml修改成bb.xml,Tomcat服務(wù)器會(huì)自動(dòng)Undeploying context [/aa]古今,然后自動(dòng)信息: Deploying configuration descriptor D:\apache-tomcat-7.0.53\conf\Catalina\localhost\bb.xml
Tomcat服務(wù)器配置虛擬主機(jī)
配置虛似主機(jī)就是配置一個(gè)網(wǎng)站屁魏。
在Tomcat服務(wù)器配置一個(gè)虛擬主機(jī)(網(wǎng)站),需要修改conf文件夾下的server.xml這個(gè)配置文件捉腥,使用Host元素進(jìn)行配置氓拼,打開(kāi)server.xml,可以看到Tomcat服務(wù)器自帶的一個(gè)名稱為localhost的虛擬主機(jī)(網(wǎng)站)抵碟,如下所示:
<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 "%r" %s %b" />
</Host>
平時(shí)我們將開(kāi)發(fā)好的JavaWeb應(yīng)用放到webapps文件夾下桃漾,然后就可以使用"http://localhost:端口號(hào)/JavaWebAppName"的方式去訪問(wèn)了,其實(shí)訪問(wèn)的就是name是"localhost"的那臺(tái)虛擬主機(jī)(Host)拟逮,這臺(tái)虛擬主機(jī)管理webapps文件夾下的所有web應(yīng)用撬统。
例如:http://localhost:8080/JavaWebDemoProject/1.jsp,這個(gè)URL地址訪問(wèn)的就是名稱是localhost的那臺(tái)虛擬主機(jī)下的JavaWebDemoProject這個(gè)應(yīng)用里面的1.jsp這個(gè)web資源敦迄。
我們可以使用如下的方式配置一個(gè)虛擬主機(jī)恋追,例如:
<Host name="www.gacl.cn" appBase="F:\JavaWebApps">
</Host>
這里我們新配置一個(gè)虛擬主機(jī),虛擬主機(jī)的name是"www.gacl.cn"罚屋,虛擬主機(jī)"www.gacl.cn"現(xiàn)在管理著JavaWebApps文件夾下的所有web應(yīng)用几于,平時(shí)我們?cè)诨ヂ?lián)網(wǎng)上使用域名"www.baidu.com"訪問(wèn)百度的網(wǎng)站時(shí),其實(shí)就是在訪問(wèn)一個(gè)名稱是"www.baidu.com"的虛擬主機(jī)沿后,所以當(dāng)我們要訪問(wèn)name是"www.gacl.cn"的這個(gè)虛擬主機(jī)時(shí)沿彭,就可以使用"域名(www.gacl.cn)"去訪問(wèn),注意一下appBase="F:\JavaWebApps"尖滚,這里的JavaWebApps文件夾代表的不是一個(gè)項(xiàng)目的根目錄喉刘,而是一個(gè)存放了一個(gè)或者多個(gè)JavaWeb應(yīng)用的文件夾,如下圖所示:
就好像是Tomcat服務(wù)器的webapps文件夾一樣漆弄,里面存放了很多的JavaWeb應(yīng)用
windows系統(tǒng)中注冊(cè)域名
配置的主機(jī)(網(wǎng)站)要想通過(guò)域名被外部訪問(wèn)睦裳,必須在DNS服務(wù)器或windows系統(tǒng)中注冊(cè)訪問(wèn)網(wǎng)站時(shí)使用的域名,找到"C:\Windows\System32\drivers\etc"目錄下的hosts文件撼唾,如下圖所示:
編輯這個(gè)文件廉邑,將新添加的網(wǎng)站的域名和IP地址綁定在一起,這樣我們就可以在瀏覽器中使用www.gacl.cn這個(gè)域名去訪問(wèn)name是www.gacl.cn那個(gè)虛擬主機(jī)里面管理的那些web應(yīng)用了
使用瀏覽器通過(guò)域名"www.gacl.cn"訪問(wèn)"www.gacl.cn"這個(gè)虛擬主機(jī)下的JavaWebDemo1這個(gè)web應(yīng)用下的1.jsp這個(gè)web資源,"www.gacl.cn"這個(gè)虛擬主機(jī)開(kāi)放了一個(gè)8080端口蛛蒙,用戶只能通過(guò)這個(gè)8080端口去訪問(wèn)JavaWebDemo1這個(gè)web應(yīng)用下的1.jsp這個(gè)web資源
瀏覽器與服務(wù)器交互的過(guò)程
當(dāng)我們打開(kāi)瀏覽器糙箍,在瀏覽器的地址欄中輸入U(xiǎn)RL地址"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去訪問(wèn)服務(wù)器上的1.jsp這個(gè)web資源的過(guò)程中,瀏覽器和服務(wù)器都做了神馬操作呢牵祟,我們是怎么在瀏覽器里面看到1.jsp這個(gè)web資源里面的內(nèi)容的呢深夯?
瀏覽器和服務(wù)器做了以下幾個(gè)操作:
- 瀏覽器根據(jù)主機(jī)名"www.gacl.cn"去操作系統(tǒng)的Hosts文件中查找主機(jī)名對(duì)應(yīng)的IP地址。
- 瀏覽器如果在操作系統(tǒng)的Hosts文件中沒(méi)有找到對(duì)應(yīng)的IP地址诺苹,就去互聯(lián)網(wǎng)上的DNS服務(wù)器上查找"www.gacl.cn"這臺(tái)主機(jī)對(duì)應(yīng)的IP地址咕晋。
- 瀏覽器查找到"www.gacl.cn"這臺(tái)主機(jī)對(duì)應(yīng)的IP地址后,就使用IP地址連接到Web服務(wù)器收奔。
- 瀏覽器連接到web服務(wù)器后掌呜,就使用http協(xié)議向服務(wù)器發(fā)送請(qǐng)求,發(fā)送請(qǐng)求的過(guò)程中坪哄,瀏覽器會(huì)向Web服務(wù)器以Stream(流)的形式傳輸數(shù)據(jù)质蕉,告訴Web服務(wù)器要訪問(wèn)服務(wù)器里面的哪個(gè)Web應(yīng)用下的Web資源,如下圖所示:
這就是瀏覽器向Web服務(wù)器發(fā)請(qǐng)求時(shí)向服務(wù)器傳輸?shù)臄?shù)據(jù)损姜,解釋一下GET /JavaWebDemo1/1.jsp HTTP/1.1
這里面的內(nèi)容饰剥,
GET
:告訴Web服務(wù)器殊霞,瀏覽器是以GET的方式向服務(wù)器發(fā)請(qǐng)求摧阅。
/JavaWebDemo1/1.jsp
:告訴Web服務(wù)器,瀏覽器要訪問(wèn)JavaWebDemo1應(yīng)用里面的1.jsp這個(gè)Web資源绷蹲。
HTTP/1.1:
告訴Web服務(wù)器棒卷,瀏覽器是以HTTP協(xié)議請(qǐng)求的,使用的是1.1的版本祝钢。
瀏覽器做完上面4步工作后比规,就開(kāi)始等待,等待Web服務(wù)器把自己想要訪問(wèn)的1.jsp這個(gè)Web資源傳輸給它拦英。
服務(wù)器接收到瀏覽器傳輸?shù)臄?shù)據(jù)后蜒什,開(kāi)始解析接收到的數(shù)據(jù),服務(wù)器解析"GET /JavaWebDemo1/1.jsp HTTP/1.1"里面的內(nèi)容時(shí)知道客戶端瀏覽器要訪問(wèn)的是JavaWebDemo1應(yīng)用里面的1.jsp這個(gè)Web資源疤估,然后服務(wù)器就去讀取1.jsp這個(gè)Web資源里面的內(nèi)容灾常,將讀到的內(nèi)容再以Stream(流)的形式傳輸給瀏覽器,如下圖所示:
這個(gè)就是Web服務(wù)器傳輸給瀏覽器的數(shù)據(jù)铃拇。
- 瀏覽器拿到服務(wù)器傳輸給它的數(shù)據(jù)之后钞瀑,就可以把數(shù)據(jù)展現(xiàn)給用戶看了,如下圖所示:
看到的這個(gè)"JavaWebDemo1"就是瀏覽器解析服務(wù)器發(fā)送回來(lái)的數(shù)據(jù)后的效果
服務(wù)器發(fā)送回來(lái)的數(shù)據(jù):
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 102
Date: Mon, 19 May 2014 14:25:14 GMT
<html>
<head>
<title>JavaWebDemo1</title>
</head>
<body>
JavaWebDemo1
</body>
</html>
這就是瀏覽器和服務(wù)器的交互過(guò)程慷荔。