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

Spring MVC 專案部署後 404 無法訪問:排查清單與常見誤區

     編輯:程式設計綜合問答

Spring MVC 專案部署至 Tomcat 後,瀏覽器訪問任何路徑 (含靜態 JSP) 均返回 404,且 Tomcat 控制台無錯誤日誌。這通常非程式碼錯誤,而是**部署配置、路徑映射、或建構產物缺失**導致。本文提供系統化排查步驟。

快速排查清單 (按可能性排序)

1. 確認 Tomcat 真正啟動且專案已部署

  • 管理頁面 https://localhost:8080/manager/html → 檢查專案狀態為「Running」。
  • webapps/ 目錄下是否有專案資料夾 (解壓後) 或 `.war` 檔。
  • 專案資料夾結構是否標準:WEB-INF/web.xml、WEB-INF/classes/、WEB-INF/lib/。

2. 訪問路徑是否正確 (最常見低級錯誤)

解決 context-path 問題:
在 `server.xml` `` 設為根路徑,或 Maven `pom.xml` 設定 `ROOT` 打包為 `ROOT.war`。

3. web.xml / DispatcherServlet 映射配置




  dispatcher
  org.springframework.web.servlet.DispatcherServlet
  
    contextConfigLocation
    classpath:spring-mvc.xml
  
  1


  dispatcher
  / 




  index.jsp

常見錯誤:`/*` → 會攔截 JSP/靜態資源導致 404。**必須用 `/`**。

4. 靜態資源與 JSP 視圖解析器配置



 


   
  

若 JSP 直接放在 `webapp/` 根目錄,`prefix` 設為 `/`。但**強烈建議放在 `WEB-INF/views/` 避免直接訪問繞過控制器**。

5. 檢查 Tomcat 日誌 (非控制台輸出)

  • logs/catalina.yyyy-MM-dd.log:啟動錯誤、類載入失敗。
  • logs/localhost.yyyy-MM-dd.log:Webapp 部署錯誤、NoSuchMethodError、JAR 衝突。
  • 關鍵字搜尋:`SEVERE`、`ERROR`、`ClassNotFoundException`、`BeanCreationException`。

6. Maven 打包檢查


mvn clean package
# 檢查 target/專案名/WEB-INF/lib/ 是否包含 spring-webmvc、spring-context 等核心 JAR
# 檢查 target/專案名/WEB-INF/classes/ 是否包含編譯後 .class 與配置檔

常見問題:`provided` 作用域導致核心 JAR 未打包;資源檔案未納入 `resources` 目錄。

極簡驗證步驟

  1. 在 `webapp/index.jsp` 撰寫 `

    Hello

    `。
  2. 部署後訪問 `https://localhost:8080/專案名/index.jsp`。
    → 能看到 → **靜態資源/JSP 正常,問題在 Controller 映射**。
    → 404 → **Context-path、web.xml、部署結構其中一項錯誤**。

總結

Spring MVC 404 九成源於:**Context-path 未帶**、**`url-pattern` 寫成 `/*`**、**`mvc:default-servlet-handler` 缺失**、**JSP 路徑與 ViewResolver prefix 不符**。按本清單逐項核對,5 分鐘內定位 99% 問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤訪問正確訪問原因
https://localhost:8080/index.jsphttps://localhost:8080/專案名/index.jsp預設 context-path 為專案名 (WAR 檔名)
https://localhost:8080/專案名/https://localhost:8080/專案名/ (同)需在 web.xml 或 ServerContext 設定 welcome-file-list
https://localhost:8080/controllerPathhttps://localhost:8080/專案名/controllerPath所有請求皆需帶 context-path