springmvc通過controller層自定義404頁面已經springmvc匹配規則
阿新 • • 發佈:2019-08-16
通常在springmvc中可以直接通過web.xml配置404自定義的頁面,但是缺少靈活性
比如如果需要根據對映地址去跳轉到不同的頁面,那麼則在配置檔案就不能滿足
也瞭解過直接改寫springmvc丟擲異常的方法,但是並沒有找到直接跳轉自定義404頁面的相關方法,最後終於找到了一種簡單的,可以直接通過controller層判斷的方法
@Controller public class DefaultHandlerExceptionResolver { @RequestMapping("/**") public String noHandleMethod(ModelAndView view, HttpServletRequest request) { String url = request.getRequestURI(); int result = url.indexOf("需要判斷的含有的程式碼"); if(result != -1) { return "jsp-en/error/error"; } return "jsp/error/error"; } }
通過url中含有字串的不同,可以跳轉到不同的404頁面
具體解析:
springmvc的路徑匹配規則
/**代表任意層次
@RequestMapping("/**")
/*代表一層
@RequestMapping("/*")
以上為匹配所有路徑
但是為什麼我的需求是報404,找不到頁面的邏輯用的匹配所有路徑呢?
因為springmvc匹配規則是誰更準確匹配誰,/**是springmvc中最不準確的,所以所有存在的路徑會被優先匹配到,剩下的則是沒有此路徑的,這些都將被/**路徑下的方法處理。
更具體的springmvc匹配規則: