web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示

來源:互聯網
上載者:User

標籤:url   簡單的   是什麼   cti   spring   app   訪問   檔案   ring   

這個可以說是很多初學Springmvc的人都會碰到一個令人頭痛的問題

那就是為什麼我配置好web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示了

我們來看看我們配置的web.xml

 

[html] view plain copy  print?
  1. <!-- 核心控制器 -->  
  2.     <servlet>  
  3.         <servlet-name>springmvc</servlet-name>  
  4.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  5.         <init-param>  
  6.             <param-name>contextConfigLocation</param-name>  
  7.             <param-value>/WEB-INF/applicationContext.xml</param-value>  
  8.         </init-param>  
  9.         <load-on-startup>1</load-on-startup>  
  10.     </servlet>  
  11.     <servlet-mapping>  
  12.         <servlet-name>springmvc</servlet-name>  
  13.         <url-pattern>/</url-pattern>  
  14.     </servlet-mapping>  


之前我是這樣的,那麼這個是什麼意思呢?

 

這個就涉及到一個知識點了,就是url-pattern的/於*的區別了

這裡我來引用一段別人的原話

 

[plain] view plain copy  print?
  1. url-pattern有5種配置模式:  
  2.   
  3. (1)/xxx:完全符合/xxx的路徑  
  4.   
  5. (2)/xxx/*:匹配以/xxx開頭的路徑,請求中必須包含xxx。  
  6.   
  7. (3)/*:匹配/下的所有路徑,請求可以進入到action或controller,但是轉寄jsp時再次被攔截,不能訪問jsp介面。  
  8.   
  9. (4).xx:匹配以xx結尾的路徑,所有請求必須以.xx結尾,但不會影響訪問靜態檔案。  
  10.   
  11. (5)/:預設模式,未被匹配的路徑都將映射到刺servlet,對jpg,js,css等靜態檔案也將被攔截,不能訪問。  


因此,如果我們一開始就採用了/的方式,那麼就需要補上如下的web.xml配置來讓靜態檔案可訪問了

 

 

[html] view plain copy  print?
  1. <!-- static resources -->  
  2.     <servlet-mapping>  
  3.         <servlet-name>default</servlet-name>  
  4.         <url-pattern>*.css</url-pattern>  
  5.     </servlet-mapping>  
  6.   
  7.     <servlet-mapping>  
  8.         <servlet-name>default</servlet-name>  
  9.         <url-pattern>*.gif</url-pattern>  
  10.   
  11.     </servlet-mapping>  
  12.   
  13.     <servlet-mapping>  
  14.         <servlet-name>default</servlet-name>  
  15.         <url-pattern>*.jpg</url-pattern>  
  16.     </servlet-mapping>  
  17.   
  18.     <servlet-mapping>  
  19.         <servlet-name>default</servlet-name>  
  20.         <url-pattern>*.js</url-pattern>  
  21.     </servlet-mapping>  


但是其實簡單的做法就是,我們並不需要這麼複雜,其實就是把所有需要springmvc dispatchservlet的地方,設定成.do就可以了,這樣靜態檔案還是可以繼續訪問的。

 

否則我們要設定需要servlet-mapping的defaultServlet了。

最後再介紹一種方法,這個是網上看來的,我沒有嘗試過,先貼出來

 

[html] view plain copy  print?
    1. <!-- 靜態資源訪問  
    2.  <mvc:resources location="/img/" mapping="/img/**"/>   
    3.  <mvc:resources location="/js/" mapping="/js/**"/>    
    4.  <mvc:resources location="/css/" mapping="/css/**"/>  
    5. -->  

web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.