No mapping found for HTTP request with URI

新在學習Spring3.0,AngularJS和Bootstrap時,一直在考慮若是把這三者結合起來。今天在嘗試的過程當中,遇到了攔路虎。No mapping found for HTTP request with URI [/springmvc/js/bootstrap.min.js]css

web.xml的配置以下html

<servlet-mapping> 
  <servlet-name>mumu</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

在這裏,有三種配置方法。web

  • 徹底匹配
<url-pattern>/</url-pattern>

會匹配到/login這樣的路徑型url,不會匹配到模式爲*.jsp這樣的後綴型url,所以致使靜態資源如js,css不能訪問到spring

  • 路徑匹配
<url-pattern>/*</url-pattern>

會匹配全部url:路徑型的和後綴型的url(包括/login,.jsp,.js和*.html等)
在URL匹配時, 
<url-pattern>/</url-pattern>不會匹配到*.jsp,不會進入spring的DispatcherServlet類 
<url-pattern>/*</url-pattern>會匹配*.jsp,致使進入spring的DispatcherServlet類,而後去尋找controller,接着找不到對應的controller因此報錯。bootstrap

  • 擴展名匹配
<url-pattern>*.do</url-pattern> 
<url-pattern>*.html</url-pattern> 匹配所有html結尾的請求
<url-pattern>*</url-pattern> 不能用*,不然報錯

解決方法:mvc

  • 第一種方法:在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>
  • 第二種方法:在servlet中添加以下
<mvc:default-servlet-handler/>

注意:須要是spring3.0.5以上版本。app

  • 第三種方法:在servlet中添加以下
<mvc:resources mapping="/resources/**" location="/resources/" />

這個配置告訴spring 靜態資源的處理方式。jsp

相關文章
相關標籤/搜索