Tomcat 介紹及使用教程

来源:https://www.cnblogs.com/helong-123/archive/2022/03/30/16075857.html
-Advertisement-
Play Games

鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1. Tomcat 介紹 Apache Tomcat 是由 Apache Software Foundation(ASF)開發的一個開源 Java WEB 應用伺服器。 由於 Tomcat 是由 Java 語言實現的,因此需要運行在 Java 虛 ...


鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站

1. Tomcat 介紹

Apache Tomcat 是由 Apache Software Foundation(ASF)開發的一個開源 Java WEB 應用伺服器。

由於 Tomcat 是由 Java 語言實現的,因此需要運行在 Java 虛擬機上,所以使用前要先安裝 JDK,以提供運行環境

Tomcat 實現了幾個 Java EE 規範,包括 Java Servlet、Java Server Pages(JSP)、Java Expression Language 和 Java WebSocket 等。在下載好 Tomcat 後,可以在它的 lib 目錄中看到相關的 Java EE 規範 API 源碼的引用

file

Tomcat 實現的幾個 Java EE 規範中,有一個很重要的規範 Servlet,通過它我們可以運行自己編寫的 Servlet 應用程式處理動態請求,即實現動態頁面

Tomcat 的 Connector 組件實現了 HTTP 請求的解析,可以把 Tomcat 看作是一個 HTTP 伺服器,Tomcat 可以通過 Connector 組件接收 HTTP 請求並解析,然後把解析後的信息交給 Servlet 處理:

  • 對於靜態資源(html/css/js 等)請求:Tomcat 提供預設的 Servlet 來處理響應
  • 對於動態請求:可以映射到自己編寫的 Servlet 應用程式來處理

2. 下載安裝

這裡以 Tomcat 8 為例,在 Linux 系統中演示下載安裝 Tomcat 的方法。

註意: 由於 Tomcat 運行在 Java 虛擬機上,因此在安裝 Tomcat 之前要先下載好 JDK

2.1 Linux 中安裝

cd /opt

通過 wget 方式來下載 Tomcat 的安裝包

wget https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.77/bin/apache-tomcat-8.5.77.tar.gz

將下載的 Tomcat 壓縮包進行解壓

tar xzf apache-tomcat-8.5.77.tar.gz

之後通過 startup.sh 運行 Tomcat 伺服器

/opt/apache-tomcat-8.5.77/bin/startup.sh

2.2 訪問 Tomcat

當我們運行 Tomcat 之後,就可以在瀏覽器中通過 伺服器IP埠號 來進行訪問。

如果你是使用的伺服器,那麼 IP 地址就為伺服器的公網 IP
如果你是使用的自己的主機,那麼 IP 地址就為 127.0.0.1
Tomcat 的預設埠號為 8080(可以在 conf 目錄中手動修改)

註意: 如果你想要訪問其他人的 Tomcat,要麼他人 Tomcat 使用的是外網 IP,要麼你和他的外網必須相同,即在同一區域網下。只有這兩種情況你才能訪問到他人的 Tomcat,否則就訪問不了

當前我們使用的 IP 協議是 IPv4,這個協議下的 IP 地址是一個32位、4個位元組的整數,由於該數字並不大,但是全世界聯網的設備已經超過了這個數字,因此想要每台主機都有一個獨立的 IP 地址是不夠的。

因此就採用了 NAT 機制,即多台主機使用一個外網 IP,外網是不同重覆的,並且每個相同的外網下的不同主機都有自己獨自的內網 IP。如此一來,就很好的解決了 IP 地址不夠的問題。

3. Tomcat 的目錄結構

當安裝好 Tomcat 後,打開它的文件夾,可以看到以下目錄

file

  • bin: 存放各種啟動、關閉和其它程式的腳本(.sh 文件是針對 Unix 系統使用的,.bat 文件是針對 Windows 系統使用的,* 相同的程式的功能是一樣的)

  • conf: 配置文件及相關數據文件存放的目錄,如存放 server.xml、tomcat-users.xml、web.xml

  • lib: Tomcat 使用的庫文件存放的目錄,如存放 Servlet 規範的 API

  • logs: 預設日誌文件存放的目錄,如存放訪問日誌(可以通過 server.xml 文件將日誌配置到其它目錄)

  • temp: 臨時文件的工作目錄,如上傳大文件時的緩存數據會存儲在這裡

  • webapps: 存放 web 應用、用來程式部署的目錄(可以通過 server.xml 文件配置)

一個具有獨立完整功能的網站,可以稱為一個 web 應用。一個 Tomcat 的伺服器上可以同時部署多個這樣的 web 應用。這些 web 應用以目錄的形式被存放到 webapps 目錄中

  • work: Tomcat 的工作目錄,如存放 JSP 編譯後的類文件

4. Tomcat 的配置文件

在 Tomcat 的 conf 目錄中,存放了 Tomcat 的配置文件,打開該目錄,可以看到主要有以下幾個配置文件

file

  • catalina.policy: 當基於 -securty 選項啟動 Tomcat 實例時會讀取此配置文件。此文件是 Java 的安全策略配置文件,用於配置訪問 codebase(代碼庫)或某些 Java 類的許可權
  • catalina.properties: Java 屬性定義文件,設定類載入器路徑、安全包列表和一些調整性能的參數信息
  • context.xml: 為部署與此 Tomcat 實例上的 web 應用程式提供的預設配置文件,每個 webapp 都可以使用獨有的 context.xml,通常放置於 webapp 目錄的 META-INF 子目錄中,常用於定義會話管理器,Realm 和 JDBC 等
  • logging.properties: 定義日誌相關的配置信息,如日誌級別、文件路徑等
  • server.xml: Tomcat 核心配置文件,包含 Service、Connector、Engine、Realm、Valve、Hosts 主組件的相關配置信息
  • tomcat-users.xml: 包含 Realm 認證時用到的相關角色、用戶和密碼等信息;Tomcat 自帶的 manager 預設情況下會用到此文件;在 Tomcat 中添加火刪除用戶,為用戶指定角色等將通過編輯此文件實現
  • web.xml: 為部署與 Tomcat 實例上的所有 web 應用程式提供部署描述符,通常用於為 webapp 提供預設的 servlet 定義和基本的 MUIME 映射表

5. WEB 應用部署目錄結構

部署應用程式時,一般會將其打包成一個 war 包,然後放到 Tomcat 的應用程式部署目錄 webapps 中。而 web 應用程式有特定的組織格式,是一種層次型目錄結構,通常包含了 servlet 代碼文件、HTML、JSP 頁面文件、類文件、部署描述符文件等等,相關說明如下:

  • /: 表示 web 應用程式的根目錄,可以存放 HTML、JSP 頁面以及其他客戶端瀏覽器必須可見的其他文件(如 JS、CSS、圖像文件)。在較大的應用程式中,還可以選擇將這些文件劃分為子目錄層次結構

  • /WEB-INF: 表示 web 應用程式的所有私有資源目錄,用戶瀏覽器不可能訪問到的,通常 web.xml 和 context.xml 均放置於此目錄。

  • /WEB-INF/web.xml: 表示 web 應用程式的私有的部署描述符,描述組成應用程式的 servlet 和其他組件(如 filter),以及相關初始化參數和容器管理的安全性約束。

  • /WEB-INF/classes: 表示 web 應用程式自有的 Java 程式類文件及相關資源存放目錄。

  • /WEB-INF/lib: 表示 web 應用程式自有的 JAR 文件,其中包含應用程式所需的 Java 類文件及相關資源(如第三方類庫或 JDBC 驅動程式)

6. 部署靜態頁面

什麼是靜態頁面?

靜態頁面就是內容始終固定的頁面,即使用戶不同、時間不同、輸入的參數不同,頁面內容也不會發生變化。除非網站的開發人員修改源代碼,否則頁面的內容始終不變。

6.1 部署單個 HTML

可以將自己寫好的單個 HTML 部署到 Tomcat 中,方法如下:

  • 先創建好 html 文件(hello.html)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>將 HTML 部署到 Tomcat 上</title>
</head>
<body>
    <div>hello</div>
</body>
</html>
  • 將創建好的 html 文件拷貝到 Tomcat 的 webapps/Root 目錄中

file

啟動 Tomcat,在瀏覽器的網址欄輸入 127.0.0.1:8080/hello.html 就可以訪問到剛剛部署的 HTML

file

6.2 部署帶有 CSS、JavaScript、圖片的 HTML

實際開發中,HTML 可能不僅僅是單一文件,還會依賴一些其它資源,如 CSS、JavaScript、圖片等等。

可以將自己寫好的帶有 CSS、JavaScript 或圖片的 HTML 部署到 Tomcat 中,方法如下:

  • 創建好 html 文件(hello.html)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>將 HTML 部署到 Tomcat 上</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <img src="彌豆子.jpg" alt="彌豆子">
    <script src="app.js"></script>
</body>
</html>
  • 創建好 css 文件(style.css)
img {
    width: 500px;
    height: 300px;
  • 創建好 js 文件(app.js)
console.log("hello");
  • 準備好圖片(彌豆子.jpg)

file

  • 將以上幾個文件都拷貝到 Tomcat 的 webapps/ROOT 目錄中

file

  • 啟動伺服器,在瀏覽器的網址欄輸入 127.0.0.1:8080/hello.html 就可以訪問到剛剛部署的 HTML

file

6.3 部署 HTML 到單獨的目錄中

實際開發中,HTML 文件可能不止一個,依賴的資源也比較多,很雜亂。因此直接全部拷貝到 webapps/ROOT 目錄中就不太合適。

可以創建一個單獨的目錄,和 ROOT 目錄併列,來存放我們要部署到 Tomcat 中的內容,方法如下:

  • 在 webapps 目錄中創建一個新的文件夾(這裡為 HelloApp),併在該文件中,將 HTML 的依賴再通過創建新的目錄來進行合理的分類(如 css、js、img 等)

  • 將 6.2 中的那些文件全部拷貝到該文件中,並按照新建的目錄進行分類(註意:可能要調整一些資源的路徑)

file

  • 啟動 Tomcat,在瀏覽器的網址欄輸入 127.0.0.1:8080/HelloApp/hello.html 就可以訪問到剛剛部署的 HTML

file

6.4 部署博客系統頁面

這裡就以這個博客系統的頁面為例,將其部署到 Tomcat 上

  • 首先在 webapps 目錄下創建一個目錄(這裡為 blog)

  • 將寫的博客系統頁面的文件拷貝進來

file

  • 啟動 Tomcat,在瀏覽器的網址欄輸入 127.0.0.1:8080/blog/blog_list.html 就可以訪問到剛剛部署的博客系統

file

6.5 部署博客系統到雲伺服器

上面已經介紹瞭如何將 HTML 文件等 web 程式部署到本地的 Tomcat 上,但是僅僅如此,其他人是無法訪問到這些頁面的。

因此,可以將 web 程式部署到雲伺服器的 Tomcat 的 webapps 目錄中,這樣你部署的程式其他人也可以看到。方式如下:

  • 首先將你要部署的程式的目錄打一個 zip 壓縮包(這裡以上述博客系統頁面為例)

file

  • 通過 xshell 連接上雲伺服器,並切換到 Tomcat 的 webapps 目錄中

file

  • 將 blog.zip 拖拽到 xshell 中(也可以使用其它方式,如使用 xftp)

file

  • 拖拽成功後,將 blog.zip 進行解壓縮
unzip. blog.zip

file

  • 最後在瀏覽器中的網址欄搜索 http://:8080/blog/blog_list.html 就可以訪問到該頁面,大家也可以訪問到的!

本文轉自:https://blog.csdn.net/weixin_51367845/article/details/123429050


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

-Advertisement-
Play Games
更多相關文章
  • 內容概要 web 開發模式 API 介面 postman 測試軟體的使用 restful 規範 drf 的安裝與使用 cbv 的 View 源碼分析 APIView 源碼分析 drf 的 Request 類 drf 的 APIView 類執行過程 內容詳細 web 開發模式 1、前後端不分離 在開發 ...
  • Nacos作為配置中心,必然需要保證服務節點的高可用性,那麼Nacos是如何實現集群的呢? 下麵這個圖,表示Nacos集群的部署圖。 Nacos集群工作原理 Nacos作為配置中心的集群結構中,是一種無中心化節點的設計,由於沒有主從節點,也沒有選舉機制,所以為了能夠實現熱備,就需要增加虛擬IP(VI ...
  • 一 概述 GEM標准定義了通信鏈路上的半導體設備的行為。 SECS-II標准定義了在主機和設備之間交換的消息和相關數據項。GEM標準則定義了在哪種情況下應該使用哪些SECS-II消息以及由此產生的結果行為。圖1.1說明瞭GEM、SECS-II和其他通信替代方案之間的關係。 GEM為所有半導體設備定義 ...
  • Paint in 3D Paint in 3D用於在游戲內和編輯器里繪製所有物體。所有功能已經過深度優化,在WebGL、移動端、VR 以及更多平臺用起來都非常好用! 它支持標準管線,以及 LWRP、HDRP 和 URP。通過使用GPU 加速,你的物體將以難以置信的速度被繪製。代碼還經過深度優化來防止 ...
  • 內核代碼統一使用緩衝塊間接和塊設備(如磁碟)交換數據,緩衝區數據通過塊設備驅動程式和塊設備交換數據。 ...
  • 一:安裝依賴軟體Erlang 安裝包otp_src_22.3.tar.gz,下載到部署伺服器tar -zxvf解壓 mv otp_src_22.3 ./erlang變更文件夾名字 可能需要安裝的依賴包 yum -y install make gcc gcc-c++ kernel-devel m4 n ...
  • 高速緩衝 概念 高速緩衝區是記憶體中的一塊記憶體,在塊設備與內核其它程式之間起著一個橋梁作用。內核程式如果需要訪問塊設備中的數據,都需要經過高速緩衝區來間接的操作。 高速緩衝區結構 高速緩衝區被劃分為1k大小的緩衝塊,與磁碟塊大小一致。高速緩衝區主要包含兩部分內容,緩衝塊頭結構(buffer_head, ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 一、clearos介紹 ClearOS是一個基於CentOS和Red Hat Enterprise Linux的簡單,開源,價格合理的Linux操作系統。 它設計用於中小型企業作為伺服器或網路網關。 二、clearos安裝 下載地址:develo ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...