8分鐘講完 Tomcat架構及工作原理

https://www.bilibili.com/video/BV1J3411k7Xc/?spm_id_from=333.337.search-card.all.click&vd_source=36145f3620bdf21c0f1a843352e603fb

JavaWeb開發必看!Tomcat架構及工作原理(8分鐘)

分闡明了Tomcat的工作原理。

一、Tomcat的核心架構

00:16

Tomcat的目錄結構

(1)bin

在bin目錄下存放的是可執行的二進制文件——jar格式文件和批處理文件。

其中startup.bat用來啟動服務器,shutdown.bat用來停止服務器。

學習批處理文件的網站:

1.https://www.yiibai.com/batch_script/batch_script_files.html

2.https://blog.csdn.net/helaisun/article/details/93218241

(2)conf

00:38

conf目錄下存放的是配置文件,其中“server.xml”存放了一些服務器的關鍵配置信息。

(3)lib

00:47

lib目錄存放jar包。

(4)webapps

00:50

webapps目錄下存放了一臺主機的網絡內容。

(5)logs

logs目錄存放日志文件。

(6)temp

temp目錄存放臨時文件。

【特別注意】

這里說的主機指的是一臺Tomcat管理的虛擬主機,而并非是一臺物理上發電腦。

通常,我們在瀏覽器地址欄中輸入地址的第一部分就是虛擬主機的名字。

在這個意義上,域名就是虛擬主機的名字,每一個虛擬主機的內容都存放于自己的文件夾。

01:28

問題引入

視頻中的電腦的Tomcat管理了兩臺虛擬主機

一臺虛擬主機的名字叫localhost,對應的文件夾是Webapps,另一臺虛擬主機的名字叫CaptainJack,對應的文件夾是wptwebapps。

【問題】一臺電腦只有一個IP,都用8080端口,為什么能掛兩個網站?

二、Tomcat核心框架及其工作原理

查看conf文件夾下的server.xml

02:13

【代碼】

<?xml version="1.0" encoding="UTF-8"?>

Server

這是一個樹形目錄,Server根節點只會實例化一次。

02:30

Server容器下可以包含多個service節點,但通常只有一個,它的名字叫Catalina。

02:35

service類在Server容器中充當組件,它的作用就是對外提供服務。

02:40

Service內部包含一組連接器(Connector)和一個引擎(Engine),連接器負責通信,引擎負責處理請求。

02:52

注冊連接器時,需要指定監聽端口(port=“8090”),以及所采用的通信協議(protocol=“HTTP/1.1”)。

02:56

每個連接器監聽一個端口:

->采用HTTP協議的連接器的監聽端口是80端口

->采用HTTPS協議的監聽端口是443端口

【問】為什么要用協議傳輸信息?

->保證信息的完整性和避免語義產生二義性。

03:08

連接器的功能

1)監聽網絡接口

2)接收網絡請求

3)讀取請求中的網絡字節流

4)將請求字節流轉換成response對象

5)調用Servlet容器(指的是Engine),獲取response對象

6)將response對象轉換成響應字節流

7)將響應字節流發給瀏覽器

03:46

引擎

引擎也是一個容器,里面包含一個或多個host對象,即虛擬主機。

04:00


問題引入

在配置文件中應該指定虛擬主機的主機名(name=“localhost”),以及它的內容所存放的文件夾(appBase=“localhost”),視頻中的電腦注冊了兩臺虛擬主機。

04:29

【問】如何使瀏覽器訪問主機名時訪問本機的IP地址?

C:\Windows\System32\drivers\etc下的hosts文件的末尾增添“IP地址 域名”的條目,就可以在本地進行該域名解析。

了解更多:https://www.cnblogs.com/mybilibili/p/10536783.html

【注】這時,瀏覽器可以通過相同的IP地址和相同的端口號訪問到兩個不同的虛擬主機。

【問】為什么一臺電腦能部署多個網站?

05:06

通過網絡抓包可以發現,瀏覽器發出的HTTP請求消息里面包含有要訪問的主機名(在響應頭中)。

請求消息中的主機名被連接器給識別出來,并且放到了Request對象里面。

引擎通過Request對象里面的目標主機名,將Request對象派發給相應的主機來處理,因此一臺電腦能部署多個網站。

05:35

host

一臺虛擬主機中通常掛著多個應用,一個應用對應著一個context對象。

05:42

Context

在配置文件(server.xml)中,需要將應用設為主機的子節點。

配置應用節點context的時候,有兩個關鍵參數:

1)docBase(物理地址)

2)path(URL地址)

例如:

06:27

Wrapper

通常一個應用又包含多個不同的Servlet,每個Servlet可以有一個或多個實例。

同一個Servlet的所有實例被放在容器wrapper中進行管理。

【注】Engine host Context Wrapper都是容器

總結

通過這些容器,電腦上的Servlet被進行了詳細的分類管理。

連接器給出的request(請求對象)里面,包含了他要訪問的servlet的詳細路徑,具體地說就是主機名、應用名(路徑)和servlet名(路徑),因此各級容器收到了對象之后,就能夠把它正確的派發給下一級容器,最后達到目標servlet對象。

這個request對象的層層轉發過程,本質上是函數的層層調用過程。

調用完成之后,連接器將得到一個response對象,連接器將response對象轉換為字節流返回給瀏覽器,這就是Tomcat的核心架構和工作原理。

【問】什么是類、組件、容器?

類:

https://baike.baidu.com/item/%E7%B1%BB/6824577

組件:具有高內聚,低耦合的特性

https://blog.csdn.net/touzani/article/details/1619472

容器:

https://www.cnblogs.com/qcloud1001/p/9273549.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87294.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87294.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87294.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C盤爆滿元兇!WinSxS組件解密

C盤爆滿元兇!WinSxS組件解密 WinSxS是什么?核心功能與重要性目錄為何瘋狂膨脹?安全清理權威指南優先使用微軟官方工具:DISM工具清理效果與性能影響重要風險提示總結C盤爆滿元兇!WinSxS組件解密你是否也遇到過: C盤空間頻頻告急,檢查發現WinSxS文件夾竟獨占數十GB空間?想…

畢業設計(啟智模塊化機器人的組裝與K5的使用

記錄一下 畢業設計的部分筆記 準備清空文件發到csdn做一個紀念0.0 物聯網畢業設計 機器的組裝與K5的使用 基礎文件的學習 首先安裝K5 和文件包中的JLink驅動 并且文件實例里的代碼必須加上x后綴否則 只能用K4 來打開 供電&#xff1a;整個系統都需要電池運轉 build 存放…

從0開始學習R語言--Day37--CMH檢驗

對于有多個特征的數據&#xff0c;我們一般的處理方式是構建特征函數&#xff0c;計算每個特征向量的系數&#xff0c;從而將其影響納入到研究量中&#xff0c;但對于簡單的問題&#xff0c;也這樣做的話未免有點小題大做。這時我們可以考慮用CMH來分析變量在每個特征下的影響&…

搜索選擇DFS還是BFS

1. DFS&#xff08;深度優先搜索&#xff09;&#xff1a;優先進行深度縱向搜索&#xff0c;DFS所需的內存少于BFS所需的內存&#xff0c;利用堆棧實現&#xff0c;適合找最短路徑。 2. BFS&#xff08;廣度優先搜索&#xff09;&#xff1a;優先進行廣度橫向搜索&#xff0c;…

三格電子——電力協議轉換器

Modbus 轉 IE104 網關型號 SG-TCP-IEC104 &#xff0c;是三格電子推出的工業級網關&#xff08;以下簡稱網 關&#xff09;&#xff0c;主要用于 Modbus RTU/TCP/ASCII 數據采集、 DLT645-1997/2007 數據采集&#xff0c;可接多功 能電力儀表、溫控儀、電表等&#xf…

UE5 瞄準偏移(AimOffset)功能詳解

什么是AimOffset? AimOffset(瞄準偏移)是一種特殊的動畫混合空間(類似于 Blend Space),它通過將多個預設姿勢疊加到一個基礎動作上,實現角色根據視角方向進行上下左右的動畫混合。簡單來說,AimOffset 在射擊游戲中常用來處理角色持槍瞄準時的動作,比如抬頭、低頭、左…

在Ubuntu24上安裝ollama

安裝ollama之前&#xff0c;建議檢查顯卡驅動是否安裝完成。如果還未安裝顯卡驅動&#xff0c;建議先安裝顯卡驅動再安裝ollama。 安裝curl sudo apt update sudo apt -y install curl進入ollama的下載網站 https://ollama.com/download/linux 復制安裝腳本&#xff0c;并在…

【Kafka使用方式以及原理】

Kafka生產者發送消息的方式 Kafka生產者發送消息主要通過以下三種方式&#xff1a; 同步發送 生產者發送消息后&#xff0c;會阻塞等待Broker的響應&#xff0c;確認消息是否成功寫入。這種方式可靠性高&#xff0c;但吞吐量較低。代碼示例&#xff1a; ProducerRecord<S…

【ChatTTS】ChatTTS使用體驗

ChatTTS 使用體驗&#xff1a;初始使用真的十分驚艷。可以嘗試官網調用試一試。部署的好處是&#xff0c;遇到好聽的音色可以把參數自動存儲在本地。 苦惱&#xff1a;相同參數生成的音色不一致&#xff0c;需要多次調整&#xff0c;但最終效果非常滿意。 ? GitHub Star數變化…

華為云Flexus+DeepSeek征文| 基于華為云Dify-LLM高可用平臺開發運維故障處理智能體

華為云FlexusDeepSeek征文&#xff5c; 基于華為云Dify-LLM高可用平臺開發運維故障處理智能體 1. 概述2. 創建工作流2.1. 創建開始節點2.2. 創建搜索節點2.3. 創建LLM大模型節點2.4. 創建結束節點 3. 測試工作流4. 應用發布5. 總結 1. 概述 Dify是一款開源的LLM應用開發平臺&am…

vue中scss下載方式與引入方式

1. scss下載 npm install sass-loader --save-devnpm install node-sass --save-dev 2. 在style標簽里面加入lang“scss” 測試下&#xff01;

Day04_C語言IO進程線程

01.思維導圖 02.創建一個分支線程&#xff0c;在主線程中拷貝文件的前一部分&#xff0c;主線程拷貝文件的后一部分 #include <25051head.h> void* callback(void *arg) {off_t size*(off_t*)arg;//打開一個文件讀//打開一個文件寫int fd_r2open("./my.txt",O_…

金牛區數字文創夢工廠:國際數字影像產業園的先行服務

在金牛區數字文創夢工廠的實踐中&#xff0c;先行服務作為創新引擎&#xff0c;為企業提供預啟動階段的全方位支持。其核心理念是通過前置化咨詢和資源整合&#xff0c;降低試錯成本&#xff0c;賦能產業升級。 先行服務的三大核心優勢 通過主動介入項目啟動前環節&#xff0…

使用RSA對網址url欄加密以及二維碼的網址內容加密

JSEncrypt 庫 &#xff1a; - 引入了 jsencrypt/bin/jsencrypt.min - 需要在項目中安裝 jsencrypt 包 npm install jsencrypt import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密鑰對生成 http://web.chacuo.net/netrsakeypairconst publicKey MFwAAQconst privateKe…

如何用 Kafka Manager 實現 Kafka 集群全面監控

1. 前言:為什么需要 Kafka 集群監控? Apache Kafka 是現代大數據架構中不可或缺的組件,廣泛用于日志收集、流處理、消息隊列等場景。隨著 Kafka 集群規模的增長和業務復雜度的提升,對 Kafka 的實時監控變得尤為重要。 1.1 Kafka 在大數據架構中的核心地位 Kafka 被廣泛應…

MyBatis架構原理解析:核心對象與執行流程深度剖析

一、開篇&#xff1a;理解MyBatis的核心價值 在當今Java持久層框架生態中&#xff0c;MyBatis憑借其靈活的SQL控制能力和簡潔的ORM實現成為企業級應用的首選。與JPA的全自動ORM不同&#xff0c;MyBatis采用半自動化映射理念&#xff0c;在保持SQL靈活性的同時&#xff0c;通過…

移遠通信攜手高通:以全棧車載解決方案,共繪智能出行新藍圖

6月26日至27日&#xff0c;2025高通汽車技術與合作峰會于蘇州盛大舉辦。本次峰會以 “我們一起&#xff0c;行穩智遠” 為主題&#xff0c;全方位呈現智能汽車全棧技術、全產業鏈生態與全場景體驗。作為高通長期穩定的戰略合作伙伴&#xff0c;移遠通信攜全棧車載智能解決方案深…

拿來就能用的python 課程 1

拿來就能用的python 課程 引言 python是很多人入門計算機語言的首選。 但是繁文縟節&#xff0c;很多人從怎么裝python開始學起&#xff0c;然后python計算&#xff0c;然后什么是函數&#xff0c;然后什么是類&#xff0c;然后就因為太難放棄了。&#xff08;說的是不是你&a…

openssh-server

默認地&#xff0c;Ubuntu桌面版不帶SSH服務器 1 檢查服務是否存在 ls /usr/sbin/sshd2 安裝服務 apt install openssh-server3 關閉防火墻 ufw disable 4 啟動服務 service ssh start

html虛擬滾動,解決dom渲染過多卡頓的問題

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><title>極簡虛擬滾動</title><style>.container {width: 300px;height: 300px;border: 1px solid #ccc;overflow: auto;position: relative;}.pl…