首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Tomcat 404 錯誤:requested resource is not available 完整排查指南

     編輯:程式設計疑難解答

Tomcat 部署 Web 應用時遇到 HTTP 404 - The requested resource is not available 是最常見問題。本文系統梳理 5 大核心原因與對應解決方案,助你快速定位修復。

五大核心原因與解決方案

1. URL 路徑錯誤(最高發)

  • 現象:訪問 https://localhost:8080/projectName/resource 404
  • 排查:
    • 確認 projectName (context-path) 是否正確,默認等於 WAR 包名或部署目錄名
    • 檢查 web.xml 中 <url-pattern> 與 Controller 映射是否匹配
    • Spring MVC 需核對 DispatcherServlet 映射路徑(如 *.do//)
  • 修正:補全正確 context-path,注意大小寫敏感

2. 重定向/轉發路徑寫法錯誤

// 錯誤示範
response.sendRedirect("loginSuccess.jsp");          // 相對路徑,易出錯
request.getRequestDispatcher("/WEB-INF/jsp/x.jsp").forward(...); // 轉發路徑錯

// 正確寫法
// sendRedirect:需完整路徑(含 context-path)
response.sendRedirect(request.getContextPath() + "/Manage/loginSuccess.jsp");
// 或
response.sendRedirect("/ProjectName/Manage/loginSuccess.jsp");

// forward:相對當前 Web 應用根目錄
request.getRequestDispatcher("/WEB-INF/jsp/loginSuccess.jsp").forward(request, response);

口訣:sendRedirect 加項目名,forward 不加項目名,均以 / 開頭表示 Web 應用根。

3. 資源文件未部署或部署路徑錯

  • 檢查 webapps/項目名/ 下是否存在 JSP、HTML、CSS、JS 等靜態資源
  • Maven 項目確認 pom.xml <packaging>war</packaging> 且資源在 src/main/webapp
  • IDEA/Eclipse 部署配置:Artifact 輸出目錄、Exploded 邏輯是否正確

4. Servlet/Controller 未正確註冊或映射衝突

  • web.xml 中 <servlet-mapping> URL 模式與請求不匹配
  • Spring Boot 檢查 @RequestMapping、@GetMapping 路徑
  • 多 Servlet 映射衝突(如兩個 Servlet 都映射 /)

5. Tomcat 版本與 Servlet API 不兼容

  • Tomcat 10+ 遷移至 Jakarta EE (包名 jakarta.servlet.*),舊代碼 javax.servlet.* 需遷移或降級 Tomcat 9

快速診斷清單

  1. 瀏覽器網絡面板查看實際請求 URL
  2. Tomcat 日誌 logs/localhost.yyyy-mm-dd.log 搜 ERROR
  3. 管理控制台 /manager/html 確認應用狀態為 Running
  4. 直接訪問靜態資源 https://host:port/project/test.html 驗證部署

掌握路徑規則、區分重定向與轉發、驗證部署產物,是解決 404 的三板斧。

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