一、Tomcat服務(wù)器;
TOMCAT服務(wù)器的安裝與配置
1.常見(jiàn)服務(wù)器:WebLogic(BEA)、webSphere(IBM)、Tomcat(Apache)
2.Tomcat 的下載與安裝
下載地址:http://tomcat.apache.org/
安裝目錄不能包含中文和空格
JAVA_HOME環(huán)境變量指定Tomcat運(yùn)行時(shí)所要用的jdk所在的位置,注意,配到目錄就行了,不用指定到bin
端口占用問(wèn)題:netstat -ano命令查看端口占用信息
Catalina_Home環(huán)境變量:startup.bat啟動(dòng)哪個(gè)tomcat由此環(huán)境變量指定,如果不配置則啟動(dòng)當(dāng)前tomcat,推薦不要配置此環(huán)境變量
3.Tomcat的目錄結(jié)構(gòu)

bin--存放tomcat啟動(dòng)關(guān)閉所用的批處理文件
conf--tomcat的配置文件,最終要的是server.xml
*實(shí)驗(yàn):修改servlet.xml,更改tomcat運(yùn)行所在的端口號(hào),從8080改為80
lib--tomcat運(yùn)行所需jar包
logs--tomcat運(yùn)行時(shí)產(chǎn)生的日志文件
temp--tomcat運(yùn)行時(shí)使用的臨時(shí)目錄,不需要我們關(guān)注
webapps--web應(yīng)用所應(yīng)存放的目錄
work--tomcat工作目錄,
4.虛擬主機(jī)(一個(gè)真實(shí)主機(jī)可以運(yùn)行多個(gè)網(wǎng)站,對(duì)于瀏覽器來(lái)說(shuō)訪問(wèn)這些網(wǎng)站感覺(jué)起來(lái)就像這些網(wǎng)站都運(yùn)行在自己的獨(dú)立主機(jī)中一樣,所以,我們可以說(shuō)這里的每一個(gè)網(wǎng)站都運(yùn)行在一個(gè)虛擬主機(jī)上,一個(gè)網(wǎng)站就是一個(gè)虛擬主機(jī))
4.1配置虛擬主機(jī)
在server.xml中<Engine>標(biāo)簽下配置<Host>,其中name屬性指定虛擬主機(jī)名,appBase指定虛擬主機(jī)所在的目錄
只在servlet.xml中配置Hosts,還不能是其他人通過(guò)虛擬主機(jī)名訪問(wèn)網(wǎng)站,還需要在DNS服務(wù)器上注冊(cè)一把,我們可以使用hosts文件模擬這個(gè)過(guò)程
默認(rèn)虛擬主機(jī):在配置多個(gè)虛擬主機(jī)的情況下,如果瀏覽器使用ip地址直接訪問(wèn)網(wǎng)站時(shí),該使用哪個(gè)虛擬主機(jī)響應(yīng)呢?可以在<Engine>標(biāo)簽上設(shè)置defaultHost來(lái)指定
5.web應(yīng)用(web資源不能直接交給虛擬主機(jī),需要按照功能組織用目錄成一個(gè)web應(yīng)用再交給虛擬主機(jī)管理)
5.1web應(yīng)用的目錄結(jié)構(gòu)
web應(yīng)用目錄
|
-html、css、js、jsp
|
-WEB-INF
|
-classes
|
-lib
|
-web.xml
5.2 web.xml文件的作用:
某個(gè)web資源配置為web應(yīng)用首頁(yè)
將servlet程序映射到某個(gè)url地址上
為web應(yīng)用配置監(jiān)聽(tīng)器
為web應(yīng)用配置過(guò)濾器
但凡涉及到對(duì)web資源進(jìn)行配置,都需要通過(guò)web.xml文件
*實(shí)驗(yàn):配置一個(gè)web應(yīng)用的主頁(yè)
5.3 web應(yīng)用的部署;
(1)在server.xml的<Host>標(biāo)簽下配置<Context path="虛擬路徑" docBase="真實(shí)路徑">如果path=""則這個(gè)web應(yīng)用就被配置為了這個(gè)虛擬主機(jī)的默認(rèn)web應(yīng)用
(2)在tomcat/conf/引擎名/虛擬主機(jī)名 之下建立一個(gè).xml文件,其中文件名用來(lái)指定虛擬路徑,如果是多級(jí)的用#代替/表示,文件中配置<Context docBase="真實(shí)目錄">,如果文件名起為ROOT.xml則此web應(yīng)用為默認(rèn)web應(yīng)用
(3)直接將web應(yīng)用放置到虛擬主機(jī)對(duì)應(yīng)的目錄下,如果目錄名起為ROOT則此web應(yīng)用為默認(rèn)web應(yīng)用
~如果三處都配置默認(rèn)web應(yīng)用則server.xml > config/.../xx.xml > webapps
5.4雜項(xiàng)
(1)打war包:方式一:jar -cvf news.war * 方式二:直接用壓縮工具壓縮為zip包,該后綴為.war
(2)通用context和通用web.xml,所有的<Context>都繼承子conf/context.xml,所有的web.xml都繼承自conf/web.xml
(3)reloadable讓tomcat自動(dòng)加載更新后的web應(yīng)用,當(dāng)java程序修改后不用重啟,服務(wù)器自動(dòng)從新加載,開(kāi)發(fā)時(shí)設(shè)為true方便開(kāi)發(fā),發(fā)布時(shí)設(shè)為false,提高性能
(4)Tomcat管理平臺(tái),可以在conf/tomcat-users.xml下配置用戶名密碼及權(quán)限;
Tomcat的面試題:
1.Tomcat處理一個(gè)HTTP請(qǐng)求的過(guò)程 ?
答:1) 請(qǐng)求被發(fā)送到本機(jī)端口8080,被在那里偵聽(tīng)的Coyote HTTP/1.1 Connector獲得
2) Connector把該請(qǐng)求交給它所在的Service的Engine來(lái)處理,并等待來(lái)自Engine的回應(yīng)
3) Engine獲得請(qǐng)求localhost/yy/index.jsp,匹配它所擁有的所有虛擬主機(jī)Host
4) Engine匹配到名為localhost的Host(即使匹配不到也把請(qǐng)求交給該Host處理,因?yàn)樵揌ost被定義為該Engine的默認(rèn)主機(jī))
5) localhost Host獲得請(qǐng)求/yy/index.jsp,匹配它所擁有的所有Context
6) Host匹配到路徑為/yy的Context(如果匹配不到就把該請(qǐng)求交給路徑名為”“的Context去處理)
7) path=”/yy”的Context獲得請(qǐng)求/index.jsp,在它的mapping table中尋找對(duì)應(yīng)的servlet
8) Context匹配到URL PATTERN為*.jsp的servlet,對(duì)應(yīng)于JspServlet類
9) 構(gòu)造HttpServletRequest對(duì)象和HttpServletResponse對(duì)象,作為參數(shù)調(diào)用JspServlet的doGet或doPost方法
10)Context把執(zhí)行完了之后的HttpServletResponse對(duì)象返回給Host
11)Host把HttpServletResponse對(duì)象返回給Engine
12)Engine把HttpServletResponse對(duì)象返回給Connector
13)Connector把HttpServletResponse對(duì)象返回給客戶browser
2.Tomcat作為Web服務(wù)器,它的處理性能直接關(guān)系到用戶體驗(yàn),下面是幾種常見(jiàn)的優(yōu)化措施?
1) 優(yōu)化tomcat參數(shù)
這里以tomcat7的參數(shù)配置為例,需要修改conf/server.xml文件,主要是優(yōu)化連接配置,關(guān)閉客戶端dns查詢。
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="500"
minSpareThreads="20"
acceptCount="100"
disableUploadTimeout="true"
enableLookups="false"
URIEncoding="UTF-8" />