1. 程式人生 > >web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示

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

startup view details article 的人 核心 默認 href com

這個可以說是很多初學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. (1)/xxx:完全匹配/xxx的路徑
  3. (2)/xxx/*:匹配以/xxx開頭的路徑,請求中必須包含xxx。
  4. (3)/*:匹配/下的所有路徑,請求可以進入到action或controller,但是轉發jsp時再次被攔截,不能訪問jsp界面。
  5. (4).xx:匹配以xx結尾的路徑,所有請求必須以.xx結尾,但不會影響訪問靜態文件。
  6. (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. <servlet-mapping>
  7. <servlet-name>default</servlet-name>
  8. <url-pattern>*.gif</url-pattern>
  9. </servlet-mapping>
  10. <servlet-mapping>
  11. <servlet-name>default</servlet-name>
  12. <url-pattern>*.jpg</url-pattern>
  13. </servlet-mapping>
  14. <servlet-mapping>
  15. <servlet-name>default</servlet-name>
  16. <url-pattern>*.js</url-pattern>
  17. </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都不能正常顯示