SpringMVC静态资源处理[转]

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类似

大家可以根据自己的实际情况,选择最适合自己的方法