首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java Servlet 開發入門:環境建置與第一支 Servlet

     編輯:Java 程式設計入門

Servlet 是 Java Web 開發的基石,運行於支援 Servlet 規範的容器 (Tomcat/Jetty/JBoss 等) 中,處理 HTTP 請求、產生動態回應。本文帶你完成開發環境建置、撰寫第一支 Servlet、編譯部署測試全流程。

開發環境準備

  1. JDK:JDK 8/11/17+ (含 javac、jar)。
  2. Servlet 容器:Apache Tomcat (最普及)、Jetty、GlassFish、WildFly 等。
    Tomcat 已內建 Servlet API (servlet-api.jar),無需額外下載 JSDK (舊稱)。
  3. IDE (建議):IntelliJ IDEA / Eclipse / VS Code + 插件,支援熱部署、除錯、Maven/Gradle 整合。
  4. 建構工具 (建議):Maven 或 Gradle 管理依賴、打包 WAR。

Maven 專案結構速建

mvn archetype:generate -DgroupId=com.example -DartifactId=servlet-demo -DarchetypeArtifactId=maven-archetype-webapp

產出標準 Web 應用目錄:

servlet-demo/
├── pom.xml
└── src/main/webapp/
    ├── WEB-INF/
    │   └── web.xml (部署描述檔)
    └── index.jsp

撰寫第一支 Servlet

原始碼:src/main/java/com/example/RequestInfoServlet.java

package com.example;

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.io.*;

@WebServlet("/request-info") // Servlet 3.0+ 註解配置,免 web.xml
public class RequestInfoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        
        out.println("");
        out.println("請求資訊範例");
        out.println("

請求資訊範例

"); out.println("

方法: " + req.getMethod() + "

"); out.println("

請求 URI: " + req.getRequestURI() + "

"); out.println("

協定: " + req.getProtocol() + "

"); out.println("

路徑資訊: " + req.getPathInfo() + "

"); out.println("

客戶端 IP: " + req.getRemoteAddr() + "

"); out.println(""); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); // 同樣處理 POST } }

關鍵點解析

  • 繼承 HttpServlet:專為 HTTP 協定設計,提供 doGet/doPost/doPut/doDelete 等對應方法。
  • @WebServlet 註解:Servlet 3.0 (Tomcat 7+) 支援,替代 web.xml 映射,路徑為 /request-info。
  • HttpServletRequest:封裝客戶端請求 (Header、Parameter、Session、Cookie、Body)。
  • HttpServletResponse:控制回應 (Status、Header、Content-Type、輸出流)。
  • 編碼設定:resp.setContentType("text/html;charset=UTF-8") 必須在取得 PrintWriter 前呼叫,否則中文亂碼。

編譯、打包與部署

# 專案根目錄執行
mvn clean package

產出 target/servlet-demo.war,部署方式:

  • Tomcat 熱部署:複製 WAR 到 $CATALINA_HOME/webapps/,Tomcat 自動解壓部署。
  • Maven Cargo 插件:mvn cargo:run 整合測試。
  • IDE 整合:IntelliJ/Eclipse 直接啟動 Tomcat 並部署專案,支援熱重載。

測試驗證

  1. 啟動 Tomcat (預設埠 8080)。
  2. 瀏覽器訪問:https://localhost:8080/servlet-demo/request-info
  3. 觀察輸出:方法 GET、請求 URI、協定版本、客戶端 IP 等資訊。

進階:web.xml 替代配置 (舊版容器/團隊慣例)

<servlet>
    <servlet-name>RequestInfoServlet</servlet-name>
    <servlet-class>com.example.RequestInfoServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>RequestInfoServlet</servlet-name>
    <url-pattern>/request-info</url-pattern>
</servlet-mapping>

常見坑與避雷

  1. 中文亂碼:請求端 req.setCharacterEncoding("UTF-8") (POST Body)、回應端 resp.setContentType("...;charset=UTF-8")、Tomcat server.xml <Connector URIEncoding="UTF-8"/>。
  2. 404 Not Found:檢查 @WebServlet 路徑、Context Path (專案名)、Tomcat 部署狀態。
  3. ClassNotFoundException:Maven 依賴範圍設錯 (provided vs compile),Servlet API 應設 provided (容器提供)。

完成第一支 Servlet,你已跨入 Java Web 開發大門。下一步掌握:請求參數綁定、Session 管理、Filter/Listener、JSP/Thymeleaf 模板引擎、資料庫整合 (JDBC/JPA),構建完整 MVC 應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved