<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:application-web.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
后來發現原來這個還與org.springframework.web.servlet.DispatcherServlet的中的url-pattern配置有關
原因是:使用 / 攔截了所有的請求,會影響到靜態資源文件的獲取,這樣就需要用mvc:default-servlet-handler和mvc:resources來幫住分類完成獲取靜態資源的責任
解決方案:
<mvc:resources mapping="/images/**" location="/WEB-INF/images/" cache-period="31556926"/> <mvc:resources mapping="/js/**" location="/WEB-INF/js/" cache-period="31556926"/> <mvc:resources mapping="/css/**" location="/WEB-INF/css/" cache-period="31556926"/>
使用<mvc:resources/>元素,把mapping的URI注冊到SimpleUrlHandlerMapping的urlMap中,key為mapping的URI pattern值,而value為ResourceHttpRequestHandler,這樣就巧妙的把對靜態資源的訪問由HandlerMapping轉到ResourceHttpRequestHandler處理並返回,所以就支持classpath目錄,jar包內靜態資源的訪問.另外需要注意的一點是,不要對SimpleUrlHandlerMapping設置defaultHandler。因為對static uri的defaultHandler就是ResourceHttpRequestHandler,否則無法處理static resources request。
