解決SpringMvc加載靜態資源時出現No mapping found for HTTP request with URI的問題

在搭建SpringMvc框架加載靜態資源時,訪問web頁面沒什麼異常,就是無法加載靜態資源,控制檯出現No mapping found for HTTP 錯誤。

根據錯誤信息可以看出,發送的靜態資源交給了DispatcherServlet,因爲DispatcherServlet的<url-pattern> 配置的是/,所以會匹配到所有的請求(排除jsp的請求)。而我們所發送的.js .css .html .txt .png .jpg .avi等都是靜態資源,沒有映射請求,所以會出現no mapping found的錯誤。

解決辦法:在springmvc.xml的配置文件中加入以下的倆個配置即可完美解決問題。

<mvc:default-servlet-handler></mvc:default-servlet-handler>
<mvc:annotation-driven></mvc:annotation-driven>

擴展:

1.配置了<mvc:default-servlet-handler>之後,將在springmvc的上下文中定義一個DefaultServletHttpRequestHandler, 它會將對進DispatcherServlet的請求進行篩查,如果發現是沒有經過映射的請求, 就將該請求交給WEB應用服務器的默認servlet處理,如果是映射的請求,才由DispatcherServlet繼續處理。

2.<mvc:default-servlet-handler>中有default-servlet-name屬性,如果web應用服務器默認的servlet名字不叫default,則需要通過default-servlet-name來進行指定。

3.配置了default-servlet-handler後,requestmapping的映射會失效,則需要加上annotation-driven的配置。

發佈了16 篇原創文章 · 獲贊 7 · 訪問量 2241
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章