1. 程式人生 > >關於[No mapping found for HTTP request with URI]的問題解決方法

關於[No mapping found for HTTP request with URI]的問題解決方法

   在我們將Web專案部署到伺服器時,有時會出現靜態資源找不到的問題,如在我釋出一個Spring MVC的專案時會報出這樣的錯誤“No mapping found for HTTP request with URI [/HelloWorld/login] in DispatcherServlet with name 'springmvc'”,經過網上的查閱,檢視各種部落格最後通過實驗總結得出原因:
    <servlet-mapping>的<url-pattern>/</url-pattern>把所有的請求都交給spring去處理了,而所有available的請求url都是在Constroller裡使用類似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)這樣的註解配置的,這樣的話對js/css/jpg/gif等靜態資源的訪問就會得不到。
    有以下一些解決方法:

一、在web.xml裡新增如下的配置

<servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>

 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.js</url-pattern>
 </servlet-mapping>

二、在spring的配置檔案中新增如下一行(注意,需要是spring3.0.5以上版本):

<mvc:default-servlet-handler/>

以上是實驗過的方法