初始Tomcat(Tomcat的基礎介紹)

目錄

一、Tomcat的基本介紹

1、Tomcat是什么?

2、Tomcat的配置文件詳解

3、Tomcat的構成組件

4、Tomcat的頂層架構

5、Tomcat的核心功能

6、Tomcat的請求過程


一、Tomcat的基本介紹

1、Tomcat是什么?

  1. Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。
  2. 對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。
  3. 際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。
  4. 不過,Tomcat處理靜態HTML的能力不如Apache服務器。

2、Tomcat的配置文件詳解

目錄名字

功能

bin

存放啟動和關閉 Tomcat 的腳本文件,比較常用的是 catalina.sh、startup.sh、shutdown.sh 三個文件

conf

存放 Tomcat 服務器的各種配置文件,比較常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四個文件。

conf

子目錄

注意:

配置文件對于大小寫敏感

文件名

說明

server.xml

主配置文件 全局生效

web.xml

每個webapp只有“部署"后才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認部署相關的配置,每個web應用也可以使用專用配置文件,來覆蓋全局文件

context.xml

用于定義所有web應用均需加載的Context配置,此文件為所有的webapps提供默認配置,每個web應用也可以使用自已專用的配置,它通常由專用的配置文件context.xml來定義,其存放位置為WEB-INF/目錄中,覆蓋全局的文件

tomcat-users.xml

用戶認證的賬號和密碼文件

catalina.policy

當使用security選項啟動omcat時,用于為tomcat設置安全策略

catalina.properties

Tomcat環境變量的配置,用于設定類加載器路徑,以及一些與JVM調優相關參數

logging.properties

Tomcat日志系統相關的配置,可以修改日志級別和日志路徑等

lib

存放 Tomcat 服務器的 jar 包,一般不作任何改動,除非連接第三方服務,

比如 redis,那就需要添加相對應的 jar 包

logs

存放 Tomcat 日志

temp

存放 Tomcat 運行時產生的文件

webapps

存放項目資源的目錄

work

Tomcat 工作目錄,一般清除 Tomcat 緩存的時候會使用到(升級版本時注意要刪除里面的緩存)

3、Tomcat的構成組件

Tomcat 由一系列的組件構成,其中核心的組件有三個:

3.1? Web 容器:完成 Web 服務器的功能。(https請求)

  • 負責底層的HTTP協議

3.2? Servlet 容器:名字為 catalina,用于處理 Servlet 代碼。(具體的任務)

  • Servlet 是Java Servlet 的簡稱,可以理解為是一個服務連接器,是用 Java 編寫的服務器端程序,具有獨立于平臺和協議的特性, 簡單的理解:servlet 就是一個中間件,包含了接口和方法,將客戶端和數據庫連接,從而實現動態網頁的創建。

3.3? JSP 容器:用于將 JSP 動態網頁翻譯成 Servlet 代碼

  • JSP 全稱 Java Server Pages,是一種動態網頁開發技術。它使用 JSP 標簽在HTML網頁中插入 Java 代碼。標簽通常以 <% 開頭,以 %> 結束。
  • JSP 是一種 Java servlet,主要用于實現 Java web 應用程序的用戶界面部分。
  • JSP 通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然后動態地創建網頁。
  • 因此 Tomcat 是 Web 應用服務器,也是一個 Servlet/JSP 容器。Tomcat 作為 Servlet 容器,負責處理客戶請求,把請求傳送給 Servlet,并將 Servlet 的響應傳送回給客戶。

4、Tomcat的頂層架構

  1. Tomcat中最頂層的容器是Server,代表著整個服務器,一個Server可以包含至少一個Service,用于具體提供服務。
  2. Service主要包含兩個部分:Connector和Container。Tomcat的心臟就是這兩個組件,這兩個組件的作用:Connector用于處理連接相關的事情,并提供Socket與Request和Response相關的轉化; Conta iner用于封裝和管理Servlet,以及具體處理Request請求。
  3. 一個Tomcat中只有一個Server,一個Server可以包含多個Service,一個Service只有一個Container,但是可以有多個Connectors,因為一個服務可以有多個連接,如同時提供Http和Https鏈接,也可以提供向相同協議不同端口的連接。
  4. 多個Connector和一個Container就形成了一個Service,有了Service就可以對外提供服務了,但是Service還要一個生存的環境,必須要有人能夠給它生命、掌握其生死大權,那就非Server莫屬了!所以整個Tomcat的生命周期由Server控制。另外,上述的包含關系或者說是父子關系,都可以在tomcat的conf目錄下的server .xml配置文件中看出。
  5. server.xm1中定義<Server port="8005" shutdown="SHUTDOWN">這會讓Tomcat6啟動一個server實例(即一個JVM),它監聽在8005端口以接收“SHUTDOWN”命令,如果接收到了就會關閉Tomcat。各Server的定義不能使用同一個端口,這意味著如果在同一個物理機上啟動了多個Server實例,必須配置它們使用不同的端口。

5、Tomcat的核心功能

Tomcat 的核心功能有兩個,分別是負責接收和反饋外部請求的連接器 Connector,和負責處理請求的容器 Container。 其中連接器和容器相輔相成,一起構成了基本的 web 服務 Service。每個 Tomcat 服務器可以管理多個 Service。

  1. Connector:負責對外接收和響應請求。它是Tomcat與外界的交通樞紐,監聽端口接收外界請求,并將請求處理后傳遞給容器做業務處理,最后將容器處理后的結果響應給外界。
  2. Container:負責對內處理業務邏輯。其內部由 Engine、Host、Context和Wrapper 四個容器組成,用于管理和調用 Servlet 相關邏輯。
  3. Service:對外提供的 Web 服務

Container 結構分析:

每個 Service 會包含一個 Container 容器。在 Container 內部包含了 4 個子容器:

4個子容器的作用分別是:

  1. Engine:引擎,用來管理多個虛擬主機,一個 Service 最多只能有一個 Engine;
  2. Host:代表一個虛擬主機,也可以叫站點,通過配置 Host 就可以添加站點;
  3. Context:代表一個 Web 應用,包含多個 Servlet 封裝器;
  4. Wrapper:封裝器,容器的最底層。每一 Wrapper 封裝著一個 Servlet,負責對象實例的創建、執行和銷毀功能。

Engine、Host、Context 和 Wrapper,這四個容器之間屬于父子關系。

容器 由一個引擎可以管理多個虛擬主機。每個虛擬主機可以管理多個 Web 應用。每個 Web 應用會有多個 Servlet 封裝器。

6、Tomcat的請求過程

  1. 用戶在瀏覽器中輸入該網址,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得;
  2. Connector把該請求交給它所在的Service的Engine (Container) 來處理,并等待Engine的回應;
  3. Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host;
  4. Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認主機),名為localhostHost獲得請求/test/index.jsp,匹配它所擁有的所有Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“”的Context去處理);
  5. path="/test"的Context獲得請求/ index. jsp,在它的mapping table中尋找出對應的Servlet。Context 匹配到URLPattern為* .jsp的Servlet,對應于JspServlet類;
  6. 構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet()或doPost(),執行業務邏輯、數據存儲等
  7. Context把執行完之后的HttpServletResponse對象返回給Host; .
  8. Host把HttpServletResponse對象返回給Engine;
  9. Engine把HttpServletResponse對象返回Connector;
  10. Connector把HttpServletResponse對象返回給客戶Browser

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

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

相關文章

【數據庫管理系統】Mysql 8.0.36入門級安裝

下載地址 官方網址&#xff1a;MySQL 注意事項 建議不要安裝最新版本&#xff0c;一般找mysql5.0或mysql8.0系列版本即可&#xff1b;mysq1官網有.zip和.msi兩種安裝形式&#xff1b;zip是壓縮包&#xff0c;直接解壓縮以后使用的&#xff0c;需要自己配置各種東西&#xff…

912. 排序數組(堆排序)

堆排序&#xff1a; 聲明全局堆長度建堆&#xff08;大頂堆&#xff09;從最后一個元素開始向前遍歷&#xff0c;進行&#xff1a;1. 交換最后元素和堆頂元素&#xff1b;2. 全局堆長度-1&#xff1b;3. 調整大頂堆&#xff08;從第0個位置開始&#xff09; 建堆&#xff1a;…

【遞歸搜索回溯專欄】前言與本專欄介紹

本專欄內容為&#xff1a;遞歸&#xff0c;搜索與回溯算法專欄。 通過本專欄的深入學習&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn個人主頁&#xff1a;小小unicorn ?專欄分類&#xff1a;遞歸搜索回溯專欄 &#x1f69a;代碼倉庫&#xff1a;小小unicorn的代…

分享6個解決msvcp110.dll丟失的方法,全面解析msvcp110.dll文件

msvcp110.dll 是一個動態鏈接庫 (DLL) 文件&#xff0c;屬于 Microsoft Visual C 庫的一部分&#xff0c;具體來說是 Microsoft Visual C 2012 版本的運行時組件。這個 DLL 文件包含了在 Windows 環境下運行用 C 編寫的程序所必需的一些函數和資源。當一個應用程序是使用 Visua…

視頻拉流推流技術梳理

概況 視頻的整個流程主要分為推流和拉流 攝像頭場景&#xff1a; 攝像頭捕捉視頻畫面&#xff0c;推流到服務器&#xff0c;服務器分發到CDN&#xff0c; 客戶端從CDN地址拉流&#xff0c;客戶端進行播放 直播場景&#xff1a; 主播通過手機&#xff0c;電腦等客戶端&…

G8-ACGAN理論

本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客 原作者&#xff1a;K同學啊|接輔導、項目定制 我的環境&#xff1a; 1.語言&#xff1a;python3.7 2.編譯器&#xff1a;pycharm 3.深度學習框架Pytorch 1.8.0cu111 一、對比分析 前面的文章介紹了CGAN&#xf…

java基礎(4)注解,集合,

注解 什么是注解&#xff08;Annotation&#xff09;&#xff1f;注解是放在Java源碼的類、方法、字段、參數前的一種特殊“注釋” // this is a component: Resource("hello") public class Hello {Injectint n;PostConstructpublic void hello(Param String name…

經典文獻閱讀之--CamMap(基于SLAM地圖對不共視相機進行外參標定)

0. 簡介 由于多相機之間通常存在有限或無重疊的視場&#xff0c;因此在估計外參相機參數時面臨著一定的挑戰&#xff0c;為了解決這個問題&#xff0c;本文提出了CamMap&#xff1a;一種新穎的6自由度外參標定流程。根據三個操作規則&#xff0c;使一個多相機系統單獨捕捉一些…

【Linux進程】進程狀態(運行阻塞掛起)

目錄 前言 1. 進程狀態 2. 運行狀態 3. 阻塞狀態 4. 掛起狀態 5. Linux中具體的狀態 總結 前言 在Linux操作系統中&#xff0c;進程狀態非常重要&#xff0c;它可以幫助我們了解進程在系統中的運行情況&#xff0c;從而更好地管理和優化系統資源&#xff0c;在Linux系統中&am…

【Python筆記-設計模式】迭代器模式

一、說明 迭代器模式是一種行為設計模式&#xff0c;讓你能在不暴露集合底層表現形式&#xff08;列表、棧和樹等&#xff09;的情況下遍歷集合中所有的元素。 (一) 解決問題 遍歷聚合對象中的元素&#xff0c;而不需要暴露該對象的內部表示 (二) 使用場景 需要對聚合對象…

SpringBoot實現短鏈跳轉

目錄 1.背景介紹 2.短鏈跳轉的意義 3.SpringBoot中的代碼實現 1.建議短鏈-長鏈的數據庫表&#xff1a;t_url_map: 2.映射實體 3.Dao層實現 4.Service層實現 5.Controller層實現 3.結果測試 4.問題 1.背景介紹 短鏈跳轉是一種通過將長鏈接轉換為短鏈接的方式&…

南方電網的能源棋局上,蔚來換電扮演什么角色?

2 月 26 日&#xff0c;南網儲能科技與蔚來能源簽署協議&#xff0c;將充換電站、儲能站、可調負載等聚合資源連接到虛擬電廠平臺&#xff0c;推動換電站作為分布式儲能在虛擬電廠項目上的應用。 蔚來換電站是國內首個智慧微電網型分布式換電設施&#xff0c;可透過換電訂單預…

軟考-系統集成項目管理中級-信息系統建設與設計

本章重點考點 1.信息系統的生命周期 信息系統建設的內容主要包括設備采購、系統集成、軟件開發和運維服務等。信息系統的生命周期可以分為四個階段:立項、開發、運維和消亡。 2.信息系統開發方法 信息系統常用的開發方法有結構化方法、原型法、面向對象方法等 1)結構化方法 …

AI智能分析網關V4:抽煙/打電話/玩手機行為AI算法及場景應用

抽煙、打電話、玩手機是人們在日常生活中常見的行為&#xff0c;但這些行為在某些場合下可能會帶來安全風險。因此&#xff0c;對于這些行為的檢測技術及應用就變得尤為重要。今天來給大家介紹一下TSINGSEE青犀AI智能分析網關V4抽煙/打電話/玩手機檢測算法及其應用場景。 將監控…

java項目打包運行報異常:xxxxx-1.0-SNAPSHOT.jar中沒有主清單屬性

pom.xml中加入這段話即可 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.4</version><executions><execution><…

安泰ATA-7050高壓放大器在微流控細胞分選中的應用

微流控細胞分選是一種用于分離和鑒定生物樣本中特定類型細胞的技術&#xff0c;其原理基于將生物細胞通過微通道進行操縱和區分。微流控細胞分選的原理主要基于流體力學、電氣學、光學和熱力學等多學科的交叉應用。通過設計具有特定尺寸和性質的微通道網絡&#xff0c;可實現對…

RV1126芯片概述

RV1126芯片概述 前言1 主要特性2 詳細參數 前言 1 主要特性 四核 ARM Cortex-A7 and RISC-V MCU250ms快速開機2.0Tops NPU14M ISP with 3幀 HDR支持3個攝像頭同時輸入4K H.264/H.265 視頻編碼和解碼 2 詳細參數

萬人在線直播:構建高效穩定的音視頻架構

萬人在線大型直播音視頻架構解析 隨著網絡技術的發展,大型直播已成為人們生活中不可或缺的一部分。萬人在線直播音視頻架構是實現高清、流暢直播的關鍵。本文將深入探討這一架構的核心組成部分及其運作機制。 直播客戶端作為架構的基石,負責音視頻數據的采集、編碼、推流、…

永磁同步電機無感FOC(龍伯格觀測器)算法技術總結-仿真篇

文章目錄 1、觀測器的引入2、β軸向下的電機觀測器數學模型3、β軸向下的轉子點角度及速度觀測4、Simulink仿真模型搭建4.1模型總覽4.2 Luenberger觀測器模塊4.2.1 I_alpha觀測4.2.2 I_beta觀測4.2.3 e_alpha、e_beta觀測4.2.4 鎖相環 4.3 速度設定4.4 速度觀測結果4.5 電角度觀…

express+mysql+vue,從零搭建一個商城管理系統6--數據校驗和登錄

提示&#xff1a;學習express&#xff0c;搭建管理系統 文章目錄 前言一、修改models/user.js二、修改routes下的user.js三、Api新建user/login接口四、刪除數據庫原有數據&#xff0c;添加新驗證規則的用戶四、用戶登錄總結 前言 需求&#xff1a;主要學習express&#xff0c;…