(转)怎么让静态资源不被SpringMVC分配器过滤?

问题是这样的:

在SpringMVC项目中,如果web.xml中配置为这样:

<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文件、图片等,都会经过org.springframework.web.servlet.DispatcherServlet过滤,DispatcherServlet当然处理不了这些文件,所以这些文件就发送不到客户端了。

SpringMVC从3.0.4版本开始,新增了一种配置可以解决这个问题,具体配置如下:

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<context:component-scanbase-package="com.XXX.XXX"/>

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<propertyname="prefix">

<value>/WEB-INF/pages/</value>

</property>

<propertyname="suffix">

<value>.jsp</value>

</property>

</bean>

<mvc:resourceslocation="/r/"mapping="/r/**"/>

<mvc:annotation-driven/>

</beans>

新增的是<mvc:resourceslocation="/r/"mapping="/r/**"/>这个配置,相当于告诉SpringMVC,凡是请求路径为/r/开始的,都自动映射到r目录下面相同文件名的文件去,而不经过DispatcherServlet过滤,这样就已经搞定了。

相关推荐