Spring MVC靜態資源攔截(No mapping found for HTTP request with URI in DispatcherServlet with name ' ')問題
程式載入或用瀏覽器訪問靜態資源時出現以下的警告:
No mapping found for HTTP request with URI [/] in DispatcherServlet with name ”
問題原因:預設的訪問的URL都會被DispatcherServlet所攔截,從web.xml下對spring mvc的DispatcherServlet請求url對映的配置可以看出,具體配置如下:
<servlet>
<servlet-name>hello-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<url-pattern>/</url-pattern>
url-pattern使用的是/,而不是/,如果使用/,那麼請求時可以通過DispatcherServlet轉發到相應的Action或者Controller中的,但是返回的內容,如返回的jsp還會再次被攔截,這樣導致404錯誤,即訪問不到jsp。所以如果以後發現總是有404錯誤的時候,別忘了check一下 url-pattern的配置是否是/*.
那麼如何訪問自己需要的靜態資原始檔呢?
解決方案一(告訴spring 靜態資源的處理方式):
<mvc:resources location="/resources/" mapping="/resources/**"/>
解決方案二:
<servlet>
<servlet-name>hello-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello-dispatcher</servlet-name>
<url-pattern>/.jsp</url-pattern>
</servlet-mapping>
告訴spring mvc只攔截對於某一類檔案的請求,比如上面配置的只攔截對於字尾為jsp檔案的訪問。
解決方案三:
<servlet>
<servlet-name>hello-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
告訴spring mvc 對於字尾為js的檔案是可以訪問的。依次類推,需要訪問其他資原始檔時可以通過servlet-mapping追加。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- Spring-mvc 靜態資源不攔截SpringMVC
- Spring Mvc Http 400 Bad Request問題排查SpringMVCHTTP
- springboot設定靜態資源不攔截的方法Spring Boot
- spring mvc 攔截器的使用SpringMVC
- Springmvc mvc:exclude-mapping不攔截 無效SpringMVCAPP
- spring mvc即mvc攔截器例項(1)SpringMVC
- Spring Boot乾貨系列:(六)靜態資源和攔截器處理 | 掘金技術徵文Spring Boot
- Spring MVC DispatcherServlet 配置SpringMVCServlet
- Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高階配置”SpringMVC
- 手寫Spring MVC框架(二) 實現訪問攔截功能SpringMVC框架
- spring mvc攔截器,spring攔截器以及AOP切面的區別和原始碼SpringMVC原始碼
- Spring MVC 解析之 DispatcherServletSpringMVCServlet
- 從源頭上解決微信域名攔截問題
- Spring MVC 中檢視的實現原理,在Spring MVC 中實現重定向和轉發,以及訪問靜態資源SpringMVC
- DispatcherServlet ——Spring MVC 的大心臟ServletSpringMVC
- Spring Boot 靜態資源配置 A卷Spring Boot
- Spring動態資料來源+Mybatis攔截器實現資料庫讀寫分離SpringMyBatis資料庫
- spring攔截器Spring
- MAPPING configuration error for request URI /ejbCLient/testEJB.jspAPPErrorclientJS
- Spring MVC 基於URL的攔截和對映規則SpringMVC
- Day71 Spring MVC的攔截器和執行原理SpringMVC
- 靜態資源下 http1.1和http2比較HTTP
- Spring AOP 對Spring MVC的Controller切面攔截不起作用SpringMVCController
- AngularJS中的http攔截AngularJSHTTP
- 解決spring cloud Feign遠端呼叫服務,新增headers解決攔截器攔截問題SpringCloudHeader
- 前端架構之vue+axios 前端實現登入攔截(路由攔截、http攔截)前端架構VueiOS路由HTTP
- spring boot 攔截器Spring Boot
- SpringBoot靜態資源訪問Spring Boot
- SpringMVC配置靜態資源訪問SpringMVC
- Spring MVC原始碼(二) ----- DispatcherServlet 請求處理流程 面試必問SpringMVC原始碼Servlet面試
- springboot+themeleaf+bootstrap訪問靜態資源/無法訪問靜態資源/圖片Spring Boot
- wordpress 加速主題的靜態資源
- Spring Boot實戰:靜態資源處理Spring Boot
- 利用Filter和攔截器,將使用者資訊動態傳入Request方法Filter
- Spring Boot新增攔截器Spring Boot
- flume自定義攔截器遇到的問題
- 過濾器攔截器攔截了request後,controller的@RequestBody 無法獲取request內容,報錯 Required request body is missing 的根源過濾器ControllerUI
- 關於iOS Webview 載入React 靜態資源的安全問題iOSWebViewReact