性能優化搞得好,Tomcat少不了。| 博學谷狂野架構師

来源:https://www.cnblogs.com/jiagooushi/archive/2023/03/16/17222699.html
-Advertisement-
Play Games

Tomcat基本使用 什麼是Web伺服器 web伺服器的定義 其實並沒有標准定義,一般認為Web伺服器一般指網站伺服器,是指駐留於網際網路上某種類型電腦的程式,可以向瀏覽器等Web客戶端提供文檔,也可以放置網站文件,讓全世界瀏覽;可以放置數據文件,讓全世界下載。 Web伺服器的特點 伺服器是一種被動 ...


Tomcat基本使用

img

什麼是Web伺服器

web伺服器的定義

其實並沒有標准定義,一般認為Web伺服器一般指網站伺服器,是指駐留於網際網路上某種類型電腦的程式,可以向瀏覽器等Web客戶端提供文檔,也可以放置網站文件,讓全世界瀏覽;可以放置數據文件,讓全世界下載。

img

Web伺服器的特點

  • 伺服器是一種被動程式:只有當Internet上運行其他電腦中的瀏覽器發出的請求時,伺服器才會響應。
  • 伺服器一般使用HTTP(超文本傳輸協議)與客戶機瀏覽器進行信息交流,這就是人們常把它們稱為HTTP伺服器的原因。
  • Web伺服器不僅能夠存儲信息,還能在用戶通過Web瀏覽器提供的信息的基礎上運行腳本和程式

什麼是Tomcat

Tomcat是由Apache軟體基金會屬下Jakarta項目開發的Servlet容器,是開發和調試JSP程式的首選,實現了對Servlet和JavaServer Page的支持,並提供Web伺服器的一些特有功能。

Tomcat是一款開源輕量級Web應用伺服器,是一款優秀的Servlet容器實現。

Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程式或服務連接器,用Java編寫的伺服器端程式,具有獨立於平臺和協議的特性,主要功能在於互動式地瀏覽和生成數據,生成動態Web內容。

Servlet嚴格來講是指Java語言實現的一個介面,一般情況下我們說的Servlet是指任何實現了這個Servlet介面的類。

  • 實例化並調用init()方法初始化該 Servlet,一般 Servlet 只初始化一次(只有一個對象)
  • service()(根據請求方法不同調用doGet() 或者 doPost(),此外還有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy())。
  • 當 Server 不再需要 Servlet 時(一般當 Server 關閉時),Server 調用 Servlet 的 destroy() 方法。

簡單總結下,tomcat是一個中間件,在B/S架構中,瀏覽器發出的http請求經過tpmcat中間件,轉發到最終的目的伺服器上,響應消息再通過tomcat返回給瀏覽器。

tomcat所做的事情主要有:開啟監聽埠監聽用戶的請求,解析用戶發來的http請求然後訪問到你指定的應用系統,然後你返回的頁面經過tomcat返回給用戶。

Apache,Nginx和Tomcat的區別

  • Apache全稱是 Apache Http Server Project, Tomcat全稱是 Apache Tomcat。
  • Apache和 Nginx用於處理靜態資源, tomcat用來處理動態資源。
  • Apache和Nginx相比,Nginx適合做前端伺服器,適合做負載均衡。

一般情況下,使用的時候,都是 Apache+Tomcat一起使用或者 Nginx+tomcat一起使用。

典型的Servlet的處理流程

  1. 第一個到達伺服器的HTTP請求被委派到Servlet容器。
  2. Servlet容器在調用service()方法之前載入Servlet。
  3. 然後Servlet容器處理由多個線程產生的多個請求,每個線程執行一個單一的Servlet實例的service()方法。

Tomcat版本介紹

Tomcat版本 6 7 8 8.5 9
JDK ≥5.0 ≥6.0 ≥7.0 ≥7.0 ≥8.0
Servlet 2.5 3 3.1 3.1 4
JSP 2.1 2.2 2.3 2.3 2.3
EL 2.1 2.2 3 3 3
WebScoket N/A 1.1 1.1 1.1 1.1

Servlet規範

Servlet 2.X

項目目錄結構必須要有WEB-INF,web.xml等文件夾和文件,在web.xml中配置servlet,filter,listener,以web.xml為java web項目的統一入口。

Servlet 3.x

項目中可以不需要WEB-INF,web.xml等文件夾和文件,在沒有web.xml文件的情況下,通過註解實現servlet,filter,listener的聲明,當使用註解時,容器自動進行掃描。

8.5版本特點

Tomcat8.5進行了大量的代碼重構,對比與7.0的版本,也符合Tomcat未來的代碼架構體系。但是Tomcat的核心和主體架構還是一直保持這樣的。

  • 支持Servlet3.1
  • 預設採用NIO,移除BIO
  • 支持NIO2(AIO)
  • 支持HTTP/2協議
  • 預設採用非同步日誌處理

為什麼要使用8.5的版本,首先這個版本比較新,因為太老的版本比如6.0的版本Servlet不支持3所以會導致部署SpringBoot等項目有問題,同時這個版本是在9.0出現以後發佈的一個中間版本,主體架構延續8.0,同時又實現了部分9.0的新特性。

Tomcat啟動

Tomcat 下載

Tomcat下載地址:https://tomcat.apache.org/download-80.cgi

img

一般啟動

startup.bat 啟動 Tomcat

  1. 通常下載解壓版即可,解壓後可以直接使用,安裝版使用不靈活。
  2. 直接到 %Tomcat_HOME%/bin 目錄下麵運行 startup.bat ( linux 中是 startup.sh )文件即可開啟 Tomcat,預設埠 8080,瀏覽器輸入 localhost:8080 即可訪問。
  3. 這樣做的好處是能直接從視窗中實時的看到項目中所有輸出的內容,以及拋出的異常與錯誤等,適合於調試階段
  4. Windws 系統中可以將 startup.bat 創建快捷方式,然後放到啟動文件夾中,這樣就會開機自起。

img

啟動日誌如下

img

啟動成功可以訪問到的Tomcat首頁 http://localhost:8080/

img

為什麼有這個預設首頁:Tomcat“買一送一”的思想。預設Tomcat啟動後載入webapps中的項目

img

IDEA中啟動

IDEA中配置Tomcat
  1. 點擊Run—EDit Configurations…

img

  1. 點擊左側“+”號,找到Tomcat Server—Local

若是沒有找到Tomcat Server 可以點擊最後一行 34 items more

img

  1. 在Tomcat Server -> Unnamed -> Server -> Application server項目下,點擊 Configuration ,找到本地 Tomcat 伺服器,再點擊 OK按鈕。

img

IDEA發佈項目
  1. 點擊Deployment選項卡配置需要發佈的服務

img

  1. 選擇需要發佈的war

img

  1. 然後點擊ok就可以了

img

  1. 運行項目

img

  1. 然後就可以通過瀏覽器訪問頁面了

img

嵌入式啟動

SpringBoot中一個main方法嵌入式啟動Tomcat

COPY@SpringBootApplication
@Import(MybatisConfig.class)
public class AdminApplication {
    //相當於啟動了Tomcat的8080埠
    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }
}

img

Tomcat關閉

第一種:Ctrl+C鍵 關閉Tomcat伺服器
第二種:點擊Tomcat視窗的右上角關閉按鈕 (暴力停止伺服器)
第三種:找到tomcat目錄/bin/shutdown.bat文件,雙擊執行關閉Tomcat。

Tomcat項目部署

隱式部署

直接丟文件夾、war、jar到webapps目錄,tomcat會根據文件夾名稱自動生成虛擬路徑,簡單,但是需要重啟Tomcat伺服器,包括要修改埠和訪問路徑的也需要重啟。

顯式部署

添加context元素

在Tomcat的conf目錄下的server.xml中的Host加入一個Context(指定路徑和文件地址)

COPY<Context path="/test" docBase="D:/work/spring_mvc_test.war" />

img

即/test這個虛擬路徑映射到了D:/work/spring_mvc_test目錄下(war會解壓成文件),修改完servler.xml需要重啟tomcat 伺服器。

創建xml文件

在Tomcat的conf/Catalina/localhost中創建xml文件,訪問路徑為文件名

在localhost目錄下新建demo.xml

COPY<Context docBase="D:/work/spring_mvc_test" />

不需要寫path,虛擬目錄就是文件名demo,path預設為/demo,添加demo.xml不需要重啟 tomcat伺服器。

三種方式比較

  • 隱式部署:可以很快部署,需要人手動移動Web應用到webapps下,在實際操作中不是很人性化
  • 添加context元素 : 配置速度快,需要配置兩個路徑,如果path為空字元串,則為預設配置,每次修改server.xml文件後都要重新啟動Tomcat伺服器,重新部署.
  • 創建xml文件:伺服器後臺會自動部署,修改一次後臺部署一次,不用重覆啟動Tomcat伺服器,該方式顯得更為智能化。

本文由傳智教育博學谷狂野架構師教研團隊發佈。

如果本文對您有幫助,歡迎關註點贊;如果您有任何建議也可留言評論私信,您的支持是我堅持創作的動力。

轉載請註明出處!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前期準備 1、首先需要安裝並配置好本地JDK(WIN+R輸入cmd,輸入java -version如下圖) 2、下載maven到本地(鏈接Maven – Download Apache Maven) 其他歷史版本在這裡找:Index of /maven/maven-3 (apache.org) ...
  • 進入官網 Dcat Admin - Php後臺開發框架 這裡要選擇1.x 下麵來安裝框架 安裝完laravel之後,需要修改.env文件,設置資料庫鏈接設置正確 安裝 dcat-admin composer require dcat/laravel-admin 然後運行下麵的命令來發佈資源: php ...
  • 1.系統簡介 需求:進入系統顯示系統功能界面,功能如下: 1、添加學員 2、刪除學員 3、修改學員信息 4、查詢學員信息 5、顯示所有學員信息 6、退出系統 系統共6個功能,用戶根據自己需求選取。 2.步驟分析 顯示功能界面 用戶輸入功能序號 根據用戶輸入的功能序號,執行不同的功能(函數) 定義函數 ...
  • 大數據時代,各行各業對數據採集的需求日益增多,網路爬蟲的運用也更為廣泛,越來越多的人開始學習網路爬蟲這項技術,K哥爬蟲此前已經推出不少爬蟲進階、逆向相關文章,為實現從易到難全方位覆蓋,特設【0基礎學爬蟲】專欄,幫助小白快速入門爬蟲,本期為抓包工具的使用。 抓包工具概述 抓包工具,顧名思義,就是抓取網 ...
  • 緩存擊穿是指緩存中沒有的數據,而查詢非常頻繁的數據,導致大量的請求落到了資料庫上,因此很容易導致資料庫連接數暴增,甚至導致宕機。 下麵是 PHP 解決緩存擊穿問題的一般解決方案: // 獲取 Key $key = 'my_key'; // 根據 Key 從 Redis 中獲取數據 $data = $ ...
  • 自定義 Spring 通用日誌註解 1. 註解@Metrics @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD, ElementType.TYPE}) public @interface Metrics { /** * ...
  • 面向對象設計與構造第一單元 問題:表達式的化簡 表達式中僅含有$x,y,z$三種未知數 表達式僅含有$+,-,*,**,\sin,\cos,dx,dy,dx$幾種運算 - $dx,dy,dz$分別表示對$x$求導,對$y$求導,對$z$求導。 - 表示乘方,例如$23=2^3=8$ 包含若幹自定義函 ...
  • SpringBoot實現國際化中英文翻譯 配置IDEA 1.設置編碼為UTF-8 2.在resources目錄下創建 i18n 文件夾 internationalization簡寫 ​ 在文件夾中創建配置文件login.properties ​ 再創建login_zh_CN.properties 配 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...