1. 程式人生 > >springmvc通過controller層自定義404頁面已經springmvc匹配規則

springmvc通過controller層自定義404頁面已經springmvc匹配規則

通常在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匹配規則:

https://juejin.im/post/5aab5f5