標籤:url 簡單的 是什麼 cti spring app 訪問 檔案 ring
這個可以說是很多初學Springmvc的人都會碰到一個令人頭痛的問題
那就是為什麼我配置好web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示了
我們來看看我們配置的web.xml
[html] view plain copy print?
- <!-- 核心控制器 -->
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
之前我是這樣的,那麼這個是什麼意思呢?
這個就涉及到一個知識點了,就是url-pattern的/於*的區別了
這裡我來引用一段別人的原話
[plain] view plain copy print?
- url-pattern有5種配置模式:
-
- (1)/xxx:完全符合/xxx的路徑
-
- (2)/xxx/*:匹配以/xxx開頭的路徑,請求中必須包含xxx。
-
- (3)/*:匹配/下的所有路徑,請求可以進入到action或controller,但是轉寄jsp時再次被攔截,不能訪問jsp介面。
-
- (4).xx:匹配以xx結尾的路徑,所有請求必須以.xx結尾,但不會影響訪問靜態檔案。
-
- (5)/:預設模式,未被匹配的路徑都將映射到刺servlet,對jpg,js,css等靜態檔案也將被攔截,不能訪問。
因此,如果我們一開始就採用了/的方式,那麼就需要補上如下的web.xml配置來讓靜態檔案可訪問了
[html] view plain copy print?
- <!-- static resources -->
- <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>
但是其實簡單的做法就是,我們並不需要這麼複雜,其實就是把所有需要springmvc dispatchservlet的地方,設定成.do就可以了,這樣靜態檔案還是可以繼續訪問的。
否則我們要設定需要servlet-mapping的defaultServlet了。
最後再介紹一種方法,這個是網上看來的,我沒有嘗試過,先貼出來
[html] view plain copy print?
- <!-- 靜態資源訪問
- <mvc:resources location="/img/" mapping="/img/**"/>
- <mvc:resources location="/js/" mapping="/js/**"/>
- <mvc:resources location="/css/" mapping="/css/**"/>
- -->
web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示