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

Servlet 入門:從創建 DispatcherServlet 到 web.xml 配置與 Tomcat 部署全流程

     編輯:Java 綜合教學

Servlet 入門:手把手構建第一個 Servlet 應用

Servlet 是 Java Web 開發的基石,運行於 Tomcat 等 Servlet 容器中。本文記錄從創建類、配置映射、部署驗證的完整最小化流程。

1. 創建 Servlet 類

package myservlet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/Dispatcher")
public class Dispatcher extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.getWriter().write("Served at: " + req.getContextPath());
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        doGet(req, resp);
    }
}
  • 繼承 HttpServlet,覆寫 doGet/doPost。
  • @WebServlet 註解定義 URL 映射(Servlet 3.0+ 容器自動掃描)。
  • 依賴 servlet-api.jar(Tomcat lib 目錄下),編譯時 provided 作用域。

2. web.xml 配置(傳統方式 / 兼容舊容器)

<web-app xmlns="https://xmlns.jcp.org/xml/ns/javaee" version="3.1">
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>myservlet.Dispatcher</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern> <!-- 捕獲所有請求 -->
    </servlet-mapping>
</web-app>
  • servlet-name 需與類名或註解一致。
  • url-pattern 為 / 表示默認 Servlet,處理所有未匹配請求。
  • 若同時使用註解與 xml,metadata-complete="false"(默認)會合併映射,注意衝突。

3. 部署到 Tomcat

  1. 將項目打包為 WAR:Maven 執行 mvn clean package。
  2. 將 WAR 放入 Tomcat webapps 目錄,啟動 startup.sh/bat。
  3. Tomcat 自動解壓部署,訪問 https://localhost:8080/your-app/Dispatcher 應返回「Served at: /your-app」。

核心概念總結

概念說明
Servlet 容器管理 Servlet 生命周期、映射請求、提供請求/響應對象(Tomcat、Jetty、Undertow)
web.xml部署描述符,定義 Servlet、Filter、Listener、歡迎頁面、錯誤頁等
請求流程HTTP 請求 → 容器解析 → 匹配 Servlet → 創建 Request/Response → 調用 service() → doGet/doPost → 返回響應
生命周期init() → service() × N → destroy()

常見新手坑

  1. 404 Not Found:檢查 url-pattern、Context Path、類名拼寫、Tomcat 控制台是否有掃描錯誤日誌。
  2. ClassNotFoundException:確保 servlet-api.jar 編譯期依賴,運行期由容器提供,勿打包進 WAR。
  3. 中文亂碼:req.setCharacterEncoding("UTF-8")、resp.setContentType("text/html;charset=UTF-8")、Tomcat server.xml 配置 URIEncoding="UTF-8"。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved