springMVC访问静态资源方式
1、方案一: spring servlet 配置为 / 拦截所有请求情况下,可以定义另外一个 servlet 来处理静态资源
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
可以在 web.xml 中配置另外一个 servlet (default)来处理 ,这表示default的servlet会处理url中为 .html、.js 或者 /static/* 的对应的请求
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
2、方案二: spring servlet 配置为 /,除了上述中配置 default servlet 方式,还可用使用spring 中 方案
<mvc:annotation-driven/>
<mvc:resources location="/static/" mapping="/static/**"/>
这里必须是 mvc:annotation-driven 、mvc:resources 同时使用, 如果仅使用 mvc:resources 会导致 正常的 请求也会被 mvc:resources 给拦截处理(我使用 4.3 的 遇到的情况)
在SpringMVC3.0之后可使用
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
default-servlet-handler 其实也是将请求转发到其他 servlet, 默认转发到 default servlet, 也可以自定义
3、如果不用上诉方案的,那么可以在定义 spring servlet 的时候不要 定义为
<url-pattern>/</url-pattern>,
而定义为
<url-pattern>*.do</url-pattern>
这样静态资源就不会被 spring servlet 处理,默认就会被 默认的 default servlet 处理了