在使用spring mvc 是我們會配置spring 的DispatcherServlet作為請求的轉發器。
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
這裡url-pattern 是設置可以處理的請求路徑模式。我遇到一個問題就是當我把url-pattern設置為 /* 時我的請求就總是報出
後台也訪問到了我的Controller 但是在返回ModeAndView 時我指定的 頁面 卻找不到了。
ffffffff 九月 29, 2016 11:19:31 下午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: No mapping found for HTTP request with URI [/SpringMvcDemo/WEB-INF/jsp/hello.jsp] in DispatcherServlet with name 'spring'
fffffff是我的請求到了controller的輸出。 hello 是設置的view 名稱。在我的WEB-INFO/jsp 目錄下也確實存在hello.jsp 文件。
經查閱網絡找到問題所在:
原來,關鍵就在於url-pattern的設置: 當是<url-pattern>/</url-pattern> 會匹配到/hello這樣的路徑型url,不會匹配到模式為*.jsp這樣的後綴型url 當是<url-pattern>/*</url-pattern> 會匹配所有url:路徑的url和後綴型的url(包括/hello,*.jsp,*.js和*.html等)
所以,改成 / 就OK 了。