由于配置Spring3的时候使用了如下设置
<servlet> <servlet-name>demo</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>demo</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
导致所有资源都被当作spring的servlet处理,所以对于js, css, gif等资源都被处理掉了。
网上看了一下解决的办法,大多以这种方式处理
<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>*.js</url-pattern> </servlet-mapping>
原理就是用 default 为自带的 servlet,过滤资源文件,避免spring3的拦截
尝试了一下,可以优化为
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> <url-pattern>*.gif</url-pattern> <url-pattern>*.js</url-pattern> </servlet-mapping>
这样,每增加一种资源的过滤(相对于spring3),只要增加一个url-pattern就可以了