本文為 Java 常見框架與伺服器 系列文,第 3 篇:
- Web 伺服器與應用伺服器的區別與搭配——打造高效能 Web 架構
- 什麼是 Servlet?——Java Web 開發的核心技術
- Tomcat 入門指南:從零開始了解 Java Web 伺服器 👈進度
- Apache 軟體基金會 (ASF) 完整指南:新手入門必讀
- 新手入門:什麼是 JBoss?完整指南
- 新手指南:什麼是 Red Hat?完整介紹與應用解析
- 新手指南:什麼是 WebLogic?完整介紹與應用解析
- 新手指南:什麼是 WebSphere?完整介紹與應用解析
- Spring 框架新手指南:深入理解 Spring 的核心概念與應用
- Spring MVC 初學者指南:深入了解 Spring 的強大框架
對於剛接觸 Java Web 開發的初學者來說,Tomcat 是一個經常聽到的詞彙。
它是許多 Java 開發者的首選伺服器,能夠輕鬆部署和執行 Java Web 應用程式。
但究竟 Tomcat 是什麼?它的功能是什麼?我們又該如何使用它呢?
這篇文章將會帶領新手一步步了解 Tomcat 的基本概念、安裝方法、運行方式與實際應用,讓你能夠輕鬆掌握這個 Java Web 伺服器的運作方式。
什麼是 Tomcat?
Tomcat 的定義
Apache Tomcat(簡稱 Tomcat)是一款開源的 Java Web 應用伺服器,由 Apache Software Foundation(ASF) 所維護。
它主要負責執行 Java Servlet、JavaServer Pages(JSP)、WebSocket 和其他 Java Web 技術。
簡單來說,Tomcat 是一個輕量級的 Web 應用伺服器(Web Server),用於執行基於 Java 的動態 Web 應用程式。
Tomcat 與傳統 Web 伺服器的區別
一般來說,網站伺服器可以分為兩種:
- 靜態 Web 伺服器(如 Apache HTTP Server、Nginx):只提供 HTML、CSS、JavaScript 等靜態資源,不處理動態內容。
- 應用伺服器(如 JBoss、GlassFish):負責執行 Java Web 應用,處理伺服器端的動態邏輯,例如使用 Servlet、JSP 來生成動態內容。
Tomcat 介於兩者之間,它能夠作為 Web 伺服器提供靜態資源,但同時也能夠作為 Java 應用伺服器來處理 Java Web 應用。
Tomcat 的特點
- 開源免費:任何人都可以免費下載和使用。
- 輕量級:相較於 JBoss、WebLogic 這類企業級應用伺服器,Tomcat 更加輕量。
- 支持多種 Java Web 技術:包括 Servlet、JSP、WebSocket。
- 高可擴展性:可以透過插件和配置調整來滿足不同的需求。
Tomcat 與 Servlet 容器的關係
簡單來說,Tomcat 本身就是一個 Servlet 容器(Servlet Container),它的主要工作就是 負責管理與執行 Servlet 和 JSP。
當你學習 Servlet 技術時,會提到 Servlet 容器(也稱為 Web 容器,Web Container),因為 Servlet 需要一個環境來運行,而 Tomcat 正是這樣的環境。
這就是為什麼你學 Servlet 時會聽到 Tomcat,因為它是一個最常用的 Servlet 容器。
什麼是 Servlet 容器?
Servlet 容器(Servlet Container) 是 Java Web 應用伺服器的一部分,主要負責:
- 管理 Servlet 生命週期(初始化、請求處理、銷毀)
- 處理 HTTP 請求與響應
- 提供 Servlet API 的實作
- 支援 JSP 轉換成 Servlet
- 處理 Session、Cookie 和其他 Web 技術
簡單來說,當一個 HTTP 請求傳送到 Web 伺服器時,Servlet 容器會負責將這個請求交給對應的 Servlet,並返回結果給客戶端。
Tomcat 是如何運行 Servlet 的?
Tomcat 的內部架構主要包括:
- Catalina:Tomcat 的核心 Servlet 容器,負責管理 Servlet、JSP 和其他 Java Web 組件。
- Coyote:處理 HTTP 連線,將 HTTP 請求交給 Servlet 處理。
- Jasper:Tomcat 內建的 JSP 引擎,負責將 JSP 轉換成 Servlet 來執行。
當我們將一個 Java Web 應用部署到 Tomcat 時,它會:
- 解析
web.xml配置文件,找到對應的 Servlet。 - 將 HTTP 請求交給 Servlet 容器(Catalina)。
- 由 Servlet 處理請求,並返回 HTML 給用戶端。
為什麼使用 Tomcat 來執行 Servlet?
Java EE 規範與 Tomcat
Java EE(Jakarta EE)定義了一套標準,如 Servlet API、JSP API,但是這些 API 本身不包含具體的實作,需要一個 Servlet 容器來負責執行。
而 Tomcat 提供了這些標準的實作,因此它能夠執行 Servlet 與 JSP 應用。
其他 Servlet 容器
除了 Tomcat,還有其他支援 Servlet 的容器,例如:
- Jetty:另一款輕量級的 Servlet 容器,常用於嵌入式應用。
- WildFly(JBoss):一款企業級 Java EE 應用伺服器,支援更多 Java EE 功能。
- GlassFish:由 Oracle 開發,完整支援 Java EE 規範。
但 Tomcat 是最常見的 Servlet 容器,因為它輕量且易於使用。
小結:Tomcat 是應用伺服器還是容器?
| 類型 | Tomcat 是否符合? | 說明 |
|---|---|---|
| Servlet 容器 | ✅ 是 | Tomcat 主要就是一個 Servlet 容器,負責運行 Servlet 和 JSP。 |
| Web 伺服器 | ✅ 可作為 Web 伺服器 | Tomcat 內建 HTTP 伺服器,可處理靜態與動態請求。 |
| 應用伺服器 | ⚠️ 部分符合 | Tomcat 可以作為「輕量級應用伺服器」,但不支援完整的 Java EE。 |
- Tomcat 主要是「Servlet 容器」,因為它專門執行 Servlet 和 JSP。
- Tomcat 也可以被視為「輕量級應用伺服器」,但它不支援完整的 Java EE 規範。
- 如果你的應用需要 EJB、JTA 等 Java EE 服務,則需要更強大的應用伺服器,如 WildFly、GlassFish、WebLogic。
如何安裝 Tomcat?
下載 Tomcat
要使用 Tomcat,首先需要從官方網站下載適合自己作業系統的版本:
- 前往 Apache Tomcat 官方網站
- 選擇適合的版本(一般建議使用 Tomcat 9 或 Tomcat 10)
- 下載 Core 安裝包(Windows/Linux 用戶可下載
.zip或.tar.gz)
安裝與配置
Windows 安裝方式
- 解壓縮下載的
.zip文件 - 進入
bin目錄,找到startup.bat,雙擊執行即可啟動 Tomcat - 若要關閉 Tomcat,執行
shutdown.bat
Linux 安裝方式
- 解壓縮下載的
.tar.gz文件tar -xvzf apache-tomcat-9.x.x.tar.gz - 進入
bin目錄並啟動 Tomcatcd apache-tomcat-9.x.x/bin ./startup.sh - 關閉 Tomcat
./shutdown.sh
如何使用 Tomcat?
確認 Tomcat 是否成功啟動
在瀏覽器中輸入:
http://localhost:8080若出現 Tomcat 的歡迎頁面,則表示 Tomcat 啟動成功!
部署 Java Web 應用
Tomcat 支持兩種應用部署方式:
- 直接將
.war文件放入webapps目錄- Tomcat 會自動解壓並部署應用
- 使用 Tomcat Manager Web 界面
- 可透過
http://localhost:8080/manager進行手動部署
- 可透過
Tomcat 目錄結構解析
在安裝好 Tomcat 後,目錄結構如下:
| 目錄名稱 | 作用 |
|---|---|
bin | 存放可執行腳本,如 startup.sh、shutdown.sh |
conf | 配置文件目錄,如 server.xml |
logs | 記錄 Tomcat 運行的日誌 |
webapps | Web 應用的部署目錄 |
lib | 相關的 Java 庫 |
Tomcat 的常見問題與解決方案
啟動 Tomcat 但無法訪問 8080 端口
解決方案:
- 確保 Tomcat 正確啟動,檢查
logs/catalina.out是否有錯誤。 - 檢查防火牆是否阻擋了 8080 端口。
- 確保 Java 環境變數(
JAVA_HOME)已正確設置。
記憶體不足導致 Tomcat 崩潰
解決方案:
- 在
bin/setenv.sh或bin/setenv.bat中增加:export CATALINA_OPTS="-Xms512m -Xmx1024m"以增加 JVM 記憶體分配。
403 Forbidden 錯誤
解決方案:
- 在
conf/tomcat-users.xml設置管理員帳號,並重新啟動 Tomcat。
總結
Tomcat 是 Java Web 開發中不可或缺的工具,它的 輕量、高效、易於配置 使其成為許多開發者的首選。本文介紹了:
- Tomcat 是什麼?
- 如何下載與安裝?
- 如何啟動與部署應用?
- 常見問題與解決方案
希望這篇新手指南能幫助你順利入門 Tomcat,開始你的 Java Web 開發之旅!