一右犹、Tomcat服務器点楼;
TOMCAT服務器的安裝與配置
1.常見服務器:WebLogic(BEA)宠纯、webSphere(IBM)对雪、Tomcat(Apache)
2.Tomcat 的下載與安裝
下載地址:http://tomcat.apache.org/
安裝目錄不能包含中文和空格
JAVA_HOME環(huán)境變量指定Tomcat運行時所要用的jdk所在的位置怜庸,注意当犯,配到目錄就行了,不用指定到bin
端口占用問題:netstat -ano命令查看端口占用信息
Catalina_Home環(huán)境變量:startup.bat啟動哪個tomcat由此環(huán)境變量指定割疾,如果不配置則啟動當前tomcat嚎卫,推薦不要配置此環(huán)境變量
3.Tomcat的目錄結構
bin--存放tomcat啟動關閉所用的批處理文件
conf--tomcat的配置文件,最終要的是server.xml
*實驗:修改servlet.xml,更改tomcat運行所在的端口號,從8080改為80
lib--tomcat運行所需jar包
logs--tomcat運行時產(chǎn)生的日志文件
temp--tomcat運行時使用的臨時目錄拓诸,不需要我們關注
webapps--web應用所應存放的目錄
work--tomcat工作目錄侵佃,
4.虛擬主機(一個真實主機可以運行多個網(wǎng)站,對于瀏覽器來說訪問這些網(wǎng)站感覺起來就像這些網(wǎng)站都運行在自己的獨立主機中一樣奠支,所以馋辈,我們可以說這里的每一個網(wǎng)站都運行在一個虛擬主機上,一個網(wǎng)站就是一個虛擬主機)
4.1配置虛擬主機
在server.xml中<Engine>標簽下配置<Host>,其中name屬性指定虛擬主機名倍谜,appBase指定虛擬主機所在的目錄
只在servlet.xml中配置Hosts迈螟,還不能是其他人通過虛擬主機名訪問網(wǎng)站,還需要在DNS服務器上注冊一把尔崔,我們可以使用hosts文件模擬這個過程
默認虛擬主機:在配置多個虛擬主機的情況下答毫,如果瀏覽器使用ip地址直接訪問網(wǎng)站時,該使用哪個虛擬主機響應呢季春?可以在<Engine>標簽上設置defaultHost來指定
5.web應用(web資源不能直接交給虛擬主機洗搂,需要按照功能組織用目錄成一個web應用再交給虛擬主機管理)
5.1web應用的目錄結構
web應用目錄
|
-html、css载弄、js耘拇、jsp
|
-WEB-INF
|
-classes
|
-lib
|
-web.xml
5.2 web.xml文件的作用:
某個web資源配置為web應用首頁
將servlet程序映射到某個url地址上
為web應用配置監(jiān)聽器
為web應用配置過濾器
但凡涉及到對web資源進行配置,都需要通過web.xml文件
*實驗:配置一個web應用的主頁
5.3 web應用的部署宇攻;
(1)在server.xml的<Host>標簽下配置<Context path="虛擬路徑" docBase="真實路徑">如果path=""則這個web應用就被配置為了這個虛擬主機的默認web應用
(2)在tomcat/conf/引擎名/虛擬主機名 之下建立一個.xml文件惫叛,其中文件名用來指定虛擬路徑,如果是多級的用#代替/表示尺碰,文件中配置<Context docBase="真實目錄">挣棕,如果文件名起為ROOT.xml則此web應用為默認web應用
(3)直接將web應用放置到虛擬主機對應的目錄下,如果目錄名起為ROOT則此web應用為默認web應用
~如果三處都配置默認web應用則server.xml > config/.../xx.xml > webapps
5.4雜項
(1)打war包:方式一:jar -cvf news.war * 方式二:直接用壓縮工具壓縮為zip包亲桥,該后綴為.war
(2)通用context和通用web.xml洛心,所有的<Context>都繼承子conf/context.xml,所有的web.xml都繼承自conf/web.xml
(3)reloadable讓tomcat自動加載更新后的web應用,當java程序修改后不用重啟题篷,服務器自動從新加載词身,開發(fā)時設為true方便開發(fā),發(fā)布時設為false番枚,提高性能
(4)Tomcat管理平臺法严,可以在conf/tomcat-users.xml下配置用戶名密碼及權限;
Tomcat的面試題:
1.Tomcat處理一個HTTP請求的過程 葫笼?
答:1) 請求被發(fā)送到本機端口8080深啤,被在那里偵聽的Coyote HTTP/1.1 Connector獲得
2) Connector把該請求交給它所在的Service的Engine來處理,并等待來自Engine的回應
3) Engine獲得請求localhost/yy/index.jsp路星,匹配它所擁有的所有虛擬主機Host
4) Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理溯街,因為該Host被定義為該Engine的默認主機)
5) localhost Host獲得請求/yy/index.jsp,匹配它所擁有的所有Context
6) Host匹配到路徑為/yy的Context(如果匹配不到就把該請求交給路徑名為”“的Context去處理)
7) path=”/yy”的Context獲得請求/index.jsp,在它的mapping table中尋找對應的servlet
8) Context匹配到URL PATTERN為*.jsp的servlet呈昔,對應于JspServlet類
9) 構造HttpServletRequest對象和HttpServletResponse對象挥等,作為參數(shù)調用JspServlet的doGet或doPost方法
10)Context把執(zhí)行完了之后的HttpServletResponse對象返回給Host
11)Host把HttpServletResponse對象返回給Engine
12)Engine把HttpServletResponse對象返回給Connector
13)Connector把HttpServletResponse對象返回給客戶browser
2.Tomcat作為Web服務器,它的處理性能直接關系到用戶體驗堤尾,下面是幾種常見的優(yōu)化措施肝劲?
1) 優(yōu)化tomcat參數(shù)
這里以tomcat7的參數(shù)配置為例,需要修改conf/server.xml文件郭宝,主要是優(yōu)化連接配置辞槐,關閉客戶端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" />