一,簡介 html
Tomcat是一個實現了JAVA EE標準的最小的WEB服務器,是Apache 軟件基金會的Jakarta 項目中的一個核心項目,由Apache、Sun 和其餘一些公司及我的共同開發而成。由於Tomcat 技術先進、性能穩定,並且開源免費,於是深受Java 愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web 應用服務器。學習JavaWeb開發通常都使用Tomcat服務器,該服務器支持所有JSP以及Servlet規範,啓動界面如圖: web
Tomcat的體系結構 apache
Tomcat服務器的啓動是基於一個server.xml文件的,Tomcat啓動的時候首先會啓動一個Server,Server裏面就會啓動Service,Service裏面就會啓動多個"Connector(鏈接器)",每個鏈接器都在等待客戶機的鏈接,當有用戶使用瀏覽器去訪問服務器上面的web資源時,首先是鏈接到Connector(鏈接器),Connector(鏈接器)是不處理用戶的請求的,而是將用戶的請求交給一個Engine(引擎)去處理,Engine(引擎)接收到請求後就會解析用戶想要訪問的Host,而後將請求交給相應的Host,Host收到請求後就會解析出用戶想要訪問這個Host下面的哪個Web應用,一個web應用對應一個Context。 windows
完整的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 "%r" %s %b" /> </Host> </Engine> </Service> </Server>
二,下載和安裝Tomcat服務器 tomcat
官方下載地址:http://tomcat.apache.org/ , 服務器
百度雲下載(包含版本6-9):連接: https://pan.baidu.com/s/1nvspdd3 密碼: quww app
解壓後就可使用了 webapp
三,Tomcat目錄層次結構 jsp
四,啓動/測試Tomcat服務器
雙擊 bin 目錄下的 startup.bat 文件啓動Tomcat服務器
打開瀏覽器,輸入localhost:8080,能顯示以下界面表明安裝成功。
五,Tomcat服務器啓動常見問題
一、JAVA_HOME環境變量設置問題
要想雙擊bin目錄下的startup.bat文件啓動Tomcat服務器,首先要作的就是在windows中設置JAVA_HOME環境變量,由於Tomcat服務器的啓動須要用到這個JAVA_HOME環境變量,若是windows中不存在JAVA_HOME環境變量,則Tomcat服務器是沒法啓動的。
二、端口占用問題
由於Tomcat服務器啓動時是須要默認是使用8080端口的,若是這個8080端口被別的應用程序佔用了,那麼Tomcat服務器就沒法正常啓動,看到的現象就是"Tomcat服務器啓動界面會打印出異常錯誤信息,而後就自動關閉了",咱們直接前往日誌文件logs/catalina.xxxx-xx-xx.log,如圖所示:
日誌信息裏面清楚的記錄了Tomcat服務器的運行狀況,由於8080端口被佔用而沒法正常啓動,就會記錄如上圖所示的異常信息,經過查看異常信息,就可知道Tomcat服務器爲何不可以正常啓動了!
六,Tomcat服務器端口設置
在server.xml配置文件中的Connector節點進行的端口修改。例如:將Tomcat服務器的啓動端口由默認的8080改爲8081端口
Tomcat服務器啓動端口默認配置
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
將Tomcat服務器啓動端口修改爲8081端口
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
這樣就把原來默認Tomcat默認的的8080端口改爲了8081端口了,須要注意的是,一旦服務器中的*.xml文件改變了,則Tomcat服務器就必須從新啓動,從新啓動以後將從新讀取新的配置信息。由於已經在server.xml文件中將Tomcat的啓動端口修改爲了8081,因此Tomcat服務器啓動時就以8081端口啓動了,以下圖所示:
七,Tomcat服務器虛擬目錄的映射方式
Web應用開發好後,若想供外界訪問,須要把web應用所在目錄交給web服務器管理,這個過程稱之爲虛似目錄的映射。那麼在Tomcat服務器中,如何進行虛擬目錄的映射呢?總共有以下的3種方式:
1,方式一:在server.xml文件的host元素中配置
Tomcat的logs/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>這對標籤加上<Context path="/JavaWebApp" docBase="D:\JavaWebs" />便可將在D盤下的JavaWebs這個JavaWeb應用映射到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat服務器管理的,JavaWebApp是一個硬盤上不存在的目錄,是咱們本身隨便寫的一個目錄,也就是虛擬的一個目錄,因此稱之爲"虛擬目錄",代碼以下:
<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 "%r" %s %b" /> <Context path="/JavaWebApp" docBase="D:\JavaWebs" /> </Host>
其中,Context表示上下文,表明的就是一個JavaWeb應用,Context元素有兩個屬性,
path:用來配置虛似目錄,必須以"/"開頭。
docBase:配置此虛似目錄對應着硬盤上的Web應用所在目錄。
使用瀏覽器訪問"/JavaWebApp"這個虛擬目錄下的1.jsp這個web資源,訪問結果以下:
注意:在Tomcat6以後中,再也不建議在server.xml文件中使用配置context元素的方式來添加虛擬目錄的映射,由於每次修改server.xml文件後,Tomcat服務器就必需要從新啓動後才能從新加載server.xml文件。
2,方式二:讓tomcat服務器自動映射
tomcat服務器會自動管理webapps目錄下的全部web應用,並把它映射成虛似目錄。換句話說,tomcat服務器webapps目錄中的web應用,外界能夠直接訪問。
例如:把D盤下的JavaWebs這個JavaWeb應用直接copy到tomcat服務器webapps目錄中,以下圖所示:
此時Tomcat服務器就會自動爲JavaWebs這個JavaWeb應用映射一個同名的虛擬目錄"/JavaWebs"
後臺日誌:
以下圖所示:
3,方式三
在tomcat服務器的\conf\Catalina\localhost目錄下添加一個以xml做爲擴展名的文件,xml文件的名字能夠任意取,好比JavaWebs.xml
在JavaWebs.xml文件中添加Context元素映射JavaWeb應用,代碼以下:
<Context docBase="D:\JavaWebs" />
注意:在Context元素中並無指明path屬性來設置虛擬目錄的名稱,那麼"F:\JavaWebs"映射的虛擬目錄名稱是什麼呢,就是當前正在編輯的這個xml文件的名稱JavaWebs。
注意:使用這種方式映射虛擬目錄的最大好處是修改了配置文件後不用重啓Tomcat服務器