初學者最容易卡在環境變量配置、Tomcat 整合、Servlet 註冊這幾個環節。本文以 Windows 為例,採用「最小化工具鏈」策略:JDK + Tomcat + VS Code/IDEA,逐步驗證,拒絕一鍵安裝包帶來的黑盒問題。
| 組件 | 建議版本 | 下載地址 |
|---|---|---|
| JDK | 21 LTS (或 17 LTS) | Oracle/OpenJDK 官網 |
| Tomcat | 10.1.x (Servlet 6.0 / JSP 3.1) | Apache Tomcat 官網 |
| IDE | IntelliJ IDEA Community / VS Code + Extension Pack for Java | 官網下載 |
注意:Tomcat 10+ 采用 Jakarta EE 9+ 命名空間(jakarta.servlet.*),舊代碼需遷移包名;若維護老項目請用 Tomcat 9.x (javax.servlet.*)。
D:\Java\jdk-21(避免中文、空格、權限問題)。# 新建 JAVA_HOME
變量名:JAVA_HOME
變量值:D:\Java\jdk-21
# 編輯 Path,新增兩條(順序靠前)
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin (JDK 21 無 jre 目錄則略過)
# 新建 CLASSPATH(可選,現代構建工具不依賴)
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
java -version、javac -version 顯示版本號即成功。apache-tomcat-10.1.x.zip 到 D:\Java\apache-tomcat-10.1.x。CATALINA_HOME = D:\Java\apache-tomcat-10.1.x,Path 追加 %CATALINA_HOME%\bin。startup.bat,瀏覽器訪問 https://localhost:8080 出現貓首頁即成功。shutdown.bat 或 Ctrl+C。CATALINA_HOME。1. Servlet(Jakarta EE 9+ 註解式,無需 web.xml)
package com.example.demo;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;
import java.io.IOException;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("<h1>Hello, Jakarta Servlet!</h1>");
}
}
2. JSP src/main/webapp/index.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<html><body>
<h2>JSP 渲染時間:${new java.util.Date()} </h2>
<a href="hello">跳轉 Servlet</a>
</body></html>
| 現象 | 原因 | 解決 |
|---|---|---|
javac: command not found | Path 缺 %JAVA_HOME%\bin | 補全 Path 並重開終端 |
| Tomcat 啟動閃退 | 端口 8080 被佔用 / JAVA_HOME 錯誤 | netstat -ano | findstr 8080 殺進程;檢查 JAVA_HOME |
JSP 報 javax.servlet.* not found | Tomcat 10 用 jakarta.*, 代碼仍用 javax.* | 統一遷移包名或降級 Tomcat 9 |
| 中文亂碼 | 編碼不一致 | 參考《解決 HTML 網頁編碼導致 JSP 頁面亂碼》統一 UTF-8 |
環境搭建的核心是「版本對齊、路徑無空格、環境變量生效、IDE 識別正確」。建議初學者先跑通最小 Demo,再引入 Maven/Gradle、Spring Boot 等框架,避免一次引入過多變量導致排查困難。