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

Spring MVC 配置詳解:classpath* 路徑含義與 DispatcherServlet 映射問題排查

     編輯:程式設計綜合問答

在 web.xml 中配置 DispatcherServlet 時,contextConfigLocation 使用 classpath*:config/application.xml,許多開發者對 classpath* 的具體語義及路徑解析規則存在誤解。

classpath* vs classpath: 核心區別

  • classpath:config/application.xml:僅加載 第一個 匹配的資源(通常是第一個 JAR 或源碼目錄下的文件)。
  • classpath*:config/application.xml:加載 所有 Classpath 下匹配的資源並合併(適用於多模塊項目,各模塊各自有配置文件)。

classpath 具體指向的路徑

編譯後的 類輸出目錄(即 .class 文件所在根目錄)。常見情況:

  • Maven 項目:target/classes、target/test-classes、依賴 JAR 包內部根目錄。
  • Eclipse:專案 Java Build Path → Source 標籤下的 Default output folder(默認 bin 或 target/classes)。
  • 源碼目錄 src/main/resources 編譯後內容會複製到輸出目錄根路徑。

報錯 No mapping found for HTTP request with URI [/SpringMVC1/hello] 排查步驟

  1. 確認配置文件已生效: 控制台日誌應顯示 Loading XML bean definitions from class path resource [config/application.xml]。
  2. 檢查 application.xml 掃描配置: 是否包含 <context:component-scan base-package="your.controller.package"/>。
  3. Controller 映射註解: 目標方法是否標註 @RequestMapping("/hello") 或類級別 @RequestMapping("/xxx")。
  4. 靜態資源攔截: 若映射 /,需配置 <mvc:default-servlet-handler/> 或 <mvc:resources/> 放行靜態資源。
  5. 項目發佈路徑: 確認 Web 模塊部署路徑為 /SpringMVC1,URL 完整為 https://host:port/SpringMVC1/hello。

最佳實踐建議

  • 配置文件放置於 src/main/resources/config/,Maven 自動複製到 target/classes/config/,Classpath 即可直接訪問。
  • 避免在 Java Build Path 中手動調整輸出目錄,使用 Maven 標準目錄約定。
  • 啟動時加上 -Dlog4j.configuration=file:log4j.properties 觀察 Spring 容器啟動日誌,快速定位配置加載問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved