使用 @RequestMapping("/jsp/{page}") 配合 EasyUI 菜單 url: "/jsp/showitem.jsp" 時返回 404。原因在於 URL 模式匹配與視圖解析衝突。
/jsp/showitem.jsp/jsp/{page} → page = "showitem.jsp""showitem.jsp"InternalResourceViewResolver)通常配置 prefix=/WEB-INF/jsp/、suffix=.jsp,最終解析路徑為 /WEB-INF/jsp/showitem.jsp.jsp(雙重 .jsp),找不到文件 → 404。// EasyUI 菜單 JSON
{"menuid":"52","menuname":"商品列表","icon":"icon-nav","url":"showitem"}
// Controller
@RequestMapping("/jsp/{page}")
public String showItem(@PathVariable String page) {
return page; // 返回 "showitem"
}
// 視圖解析器自動拼接 → /WEB-INF/jsp/showitem.jsp
// 菜單 url: "/jsp/showitem.jsp"
@RequestMapping("/jsp/{page:.+}") // 正則匹配帶點的路徑
public String showItem(@PathVariable String page) {
// page = "showitem.jsp",需去除 .jsp
return page.replace(".jsp", "");
}
@RequestMapping("/jsp/showitem")
public String showItem() {
return "showitem";
}
日誌顯示 xxxxxxxxxxxxxxxx: showitem 打印兩次,通常是:
或因項目中存在兩個 DispatcherServlet(如 web.xml 配置了兩個或 Spring Boot 自動配置 + 手動配置重複)。檢查 web.xml 和配置類。