生活随笔
收集整理的這篇文章主要介紹了
Tomcat运行原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Tomcat服務器本質
Tomcat是運行在JVM中的一個進程。通過處理scoket通信 (Socket) 來運行。Web項目的本質,是一大堆的資源文件和方法。Web項目沒有入口方法(main方法),意味著Web項目中的方法不會自動運行起來。Web項目部署進Tomcat的webapp中,那就是希望Tomcat去調用寫好的方法去為客戶端返回需要的資源和數據。Tomcat一定有一個main方法。Tomcat可以運行起來,并調用寫好的方法。對于Tomcat而言,它并不知道我們會有什么樣的方法,這些都只是在項目被部署進webapp下后才確定的,由此分析,必然用到了Java的反射來實現類的動態加載、實例化、獲取方法、調用方法。但是我們部署到Tomcat的中的Web項目必須是按照規定好的接口來進行編寫,以便進行調用。
Tomcat體系架構
Service組件
Service主要用于關聯一個引擎和與此引擎相關的連接器,每個連接器通過一個特定的端口和協議接收入站請求交將其轉發至關聯的引擎進行處理。各Server的定義不能使用同一個端口,這意味著如果在同一個物理機上啟動了多個Server實例,必須配置它們使用不同的端口。Connector組件
Tomcat應該考慮工作情形并為相應情形下的請求分別定義好需要的連接器才能正確接收來自于客戶端的請求。一個引擎可以有一個或多個連接器,以適應多種請求方式。Engine組件
Engine是Servlet處理器的一個實例,即servlet引擎Host組件
位于Engine容器中,用于接收請求并進行相應處理的主機或虛擬主機Context組件
Context在某些意義上類似于apache中的路徑別名,一個Context定義用于標識tomcat實例中的一個Web應用程序
Tomcat 處理一個HTTP請求的過程
用戶在瀏覽器中輸入網址localhost:8080/test/index.jsp,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得;Connector把該請求交給它所在的Service的Engine(Container)來處理,并等待Engine的回應;Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host;Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認主機),名為localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理);path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL Pattern為*.jsp的Servlet,對應于JspServlet類;構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet()或doPost(),執行業務邏輯、數據存儲等;Context把執行完之后的HttpServletResponse對象返回給Host;Host把HttpServletResponse對象返回給Engine;Engine把HttpServletResponse對象返回Connector;Connector把HttpServletResponse對象返回給客戶Browser
參考(https://www.cnblogs.com/small-boy/p/8042860.html)
總結
以上是生活随笔為你收集整理的Tomcat运行原理的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。