性能優化搞得好,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
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...