SpringMvc配置DispatchServlet对所有请求进行过滤:
<servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
会造成对所有的静态资源比如:JS、CSS、PNG、GIF等页拦截了,这不是我们所期望的。
解决办法:
1.利用Spring的特性:
<mvc:resources mapping="/skins/**" location="/skins/"/>
对于访问mapping 路径下的文件,定向到location下。
问题:引入静态资源需要知道Content Path,css中无法引入Content Path
2.使用默认的Servlet对静态资源进行过滤,不使用DispatchServlet
在 web.xml 里面配置
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/skins/*</url-pattern> </servlet-mapping>
对于访问路由中有skins的资源,使用默认Servlet
3.使用默认的Servlet,过滤特定的文件名扩展
在web.xml里面配置
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> <url-pattern>*.js</url-pattern> <url-pattern>*.css</url-pattern> </servlet-mapping>
与方法2类似
大家可以根据自己的实际情况,选择最适合自己的方法