基本概念:
tomcat是一個輕量級web應用服務器,servlet的容器,底層是Socket的一個程序
目的:
學過html,css之後,我們會知道自己寫的頁面只能自己訪問,別人不能遠程訪問,Tomcat就是提供能夠讓別人訪問自己寫的頁面的一個程序
適用場景:
中小型系統和併發訪問用戶不是很多的場合
目錄結構:
運行流程:
-
圖解簡易版:
- 具體版:
1.通過腳本startup,調用java命令,參數時tomcat自己的main主函數
2.在main中處理邏輯,包括:解析webapps下所有的項目(綁定項目和項目url)
(1)通過web.xml找到servlet配置信息,通過反射初始化servlet(有了new出來的servlet對象-->指項目中實現HServlet的相關接口的類對象
(a)檢查web.xml中是否有metadata-complete=‘true’,默認是false
(b)如果=false,還要進一步處理:target/artifactId-version/WEB-INF/calsses 中的所有類搜索servlet相關注解
(c)通過反射實例化這些servlet相關的
(2)調用 servlet 的 init() 進行初始化操作(ps:servlet生命週期中只初始化一次)
(3)綁定對應項目的servlet和url(ps:url會在項目中的web.xml中設置)
3.接收http請求,就可以根據請求url找到對應的servlet
(1)請求url:http://ip:port/項目名/服務路徑
(2)tomcat接收請求,根據項目名找到項目,
(3)根據服務路徑找到servlet(根據之前建立的映射關係)
(4)調用servlet.service() 處理請求 (ps:tomcat是基於線程池處理多任務的方式,因此每次請求都要經過這個步驟:新建任務處理請求,不一定是新建線程,是否新建線程要根據線程池內部的上下文來決定)