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

Spring MVC Maven 專案請求無法映射到 Controller 的完整排查

     編輯:程式設計綜合問答

現象描述

Maven 搭建 Spring MVC 專案,Tomcat 啟動正常,訪問 https://localhost:8080/MavenDemo/index.do 卻報 404,日誌顯示:No handler mapping found for [/index.do]。

根本原因:@RequestMapping 路徑配置錯誤

原代碼:

@Controller
@RequestMapping("/")
public class UserController {
    @RequestMapping("index")
    public String index() { return "index"; }
}

這樣配置下,實際映射路徑變為 //index(雙斜線),且無法區分不同 Action。DispatcherServlet 找不到 /index.do 對應的處理器。

正確配置方式

@Controller
@RequestMapping("/user")  // 模塊前綴,避免衝突
public class UserController {
    @RequestMapping("/index.do")  // 精確匹配 .do 後綴
    public String index() { return "index"; }
}

配置檢查清單

  1. web.xml:DispatcherServlet 的 url-pattern 為 *.do,contextConfigLocation 指向 spring-mvc.xml。
  2. spring-mvc.xml:啟用 <mvc:annotation-driven/>,component-scan 掃描 Controller 包(com.tarena.controller)。
  3. 視圖解析器:InternalResourceViewResolver 前綴 /WEB-INF/jsp/,後綴 .jsp。
  4. JSP 位置:確認 index.jsp 放在 /WEB-INF/jsp/index.jsp。

進階建議

  • 使用 @RequestMapping(value="/index", method=RequestMethod.GET) 明確限定 HTTP 方法。
  • 若需 REST 風格,可改用 @GetMapping("/index")(Spring 4.3+)。
  • 檢查是否有攔截器或過濾器攔截了請求。

修正路徑映射並確保掃描配置正確後,請求即可順利進入 Controller。

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