springMVC访问静态资源

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 处理了

猜你喜欢

转载自blog.csdn.net/wbxx727124/article/details/79296103