tomcat詳解(新手勿進)

1. tomcat下載

官網下載地址:https://tomcat.apache.org/download-70.cgi

2.介紹

tomcat是一個servlet容器,是專門部署javaweb程序的應用,通過他我們就可以根據訪問路徑來決定調用哪個方法了

3.tomcat目錄結構

tomcat目錄結構bin目錄主要時存放的一些可執行程序,重點知道startup時啓動服務器的,shutDown是關閉服務器的,爲什麼同名的有另個呢?因爲一個是爲了windows上運行的,另一個是在shell上運行的。
在這裏插入圖片描述conf目錄:
conf重點關注context.xml logging.xml server.xml web.xml

對於我們每個web程序來說 都會配置一個叫做web.xml的文件
我們的每一個部署在tomcat上的webapp,都會對應tomcat上的一個servletContext,可以理解爲 tomcat整體維護了一張表,key值是路徑 value值是不同的servletContext,假設我們請求的路徑是:
http://localhost:8080/app1
首先域名由本地DNS解析出來,然後把請求發送到本地的8080端口,
tomcat啓動的時候會依賴配置文件server.xml,我們看一下server.xml的配置信息
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述首先listener就是tomcat啓動時候要加載的相關jar包,這個我們不關心
第二張圖有個connector port 8080
這個標籤的作用就是監聽8080上面的請求,一旦由請求過來首先解析傳過來的請求

第三張圖中有
Host name=“localhost” 、這個host就是我們可以增加改變的 默認的是localhost,也就是說假設域名是localhost,那麼就交給這個host來處理:

假設我們又新增host Host name=“www.baidu.com” 那麼所有http:// www.baidu.com:8080的請求都會交給我們新配的這個host來處理,如果我們訪問的是http:// www.com:8080 但是我們沒有配這個www.com的host,那麼就會交給默認的Host name=“localhost” 來處理。

那麼對於同一個機器來說如何配置不同的應用對應不同的host呢?
我們知道想要tomcat識別我們的程序,我們需要把這個war包放在webapps目錄下,那麼爲什麼我們要放在這個包下呢?因爲host配置的是
<Host name=“localhost” appBase=“webapps” 也就是說這個host獲取webapps目錄下去找對應的應用,那麼假設我們想把我們的程序在www.baidu下訪問該怎麼配置呢?

<Host name=“www.baidut” appBase=“apps”
配置以上之後,把我們的程序放在apps目錄下就行了。
以上就是server.xml的作用


接下來說context.xml
上面的server.xml 作用可以簡單的理解爲路由 域名(可用於配置多站點)
那麼我們會在同一個域名下部署多個應用,這個應用路由就是由context.xml來決定的,換句話說一個應用對應一個context.xml

假設我們有個應用名字叫index
那麼http://localhost:8080/index 這個請求就會路由到我們的應用程序index上

以上就是context.xml的作用


接下來說web.xml
對於我們的web程序,肯定會有許多的controller,分別攔截不同的請求,例如/login /check等等,這些請求不同應用不一樣,那麼他是維護在哪裏呢?就是web.xml

web.xml負責建立不同路徑對不同方法的映射
http://localhost:8080/index/login 這個訪問請求就會路由到host名字是localhost的host中的context名字是index中的web.xml配置的/login映射的方法中處理

綜上所述我們可以理解爲我們的http請求對應的tomcat配置是:
http://host:端口號/context(應用名)/web.xml中的path
瞭解了以上內容,我們在重新理解tomcat的工作流程:

  1. 首先加載server.xml文件 獲取要監聽的端口號和默認的處理host
  2. 然後加載全局的context.xml與web.xml 指定全局行爲 位於/conf
  3. 然後加載應用本身的context.xml與web.xml

其他:
server.xml只會在tomcat啓動時被加載一次
context.xml會定期掃描,一旦改變了就會重新加載,改變的標識是文件的時間戳改變了
context在不同的目錄下有不同的作用範圍:全局的 host的 應用的

現在我們重新再一次重現http請求同時在補充一下tomcat遺漏的知識點:
首先http請求經過DNS解析之後到達我們的服務器的指定端口,tomcat監聽指定的端口後將獲取請求然後解析 處理 返回給客戶端.

瀏覽器發送請求http://localhost:8080/xyd/login —》DNS解析—》發送到指定主機的8080端口—》請求被toncat監聽8080端口的connector獲得-----》connector封裝request請求與response請求並建立一個線程發送request與response對象給tomcat執行引擎並等待返回結果---->執行引擎根據url進行匹配 匹配規則是host:context:servlet目標程序----》執行返回結果—》。。。。。原路返回給請求端。

host中配置context
< host>
< context></ context>
</ host>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章