javaweb项目springmvc,和tomcat对静态文件的处理

1.激活Tomcat的defaultServlet来处理静态文件,web.xml配置

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

  a.说到了这里另外说说url-pattern的配置

  

<!--url-pattern的三种写法-->
<!--精确匹配:以"/"开头,加上servlet名称。-->
/abc

<!--路径匹配:以"/"开头,加上通配符"*"-->
/rsources/*

<!--扩展名匹配:以通配符"*"开头,加上扩展名。-->
*.action 

2.springmvc处理,spring-mvc.xml配置

<mvc:resources location="/resources/" mapping="/resources/**"/>

3.会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.

<mvc:default-servlet-handler/>

多个HandlerMapping的执行顺序问题:

DefaultAnnotationHandlerMapping的order属性值是:0

<mvc:resources/ >自动注册的 SimpleUrlHandlerMapping的order属性值是: 2147483646

<mvc:default-servlet-handler/>自动注册 的SimpleUrlHandlerMapping 的order属性值是: 2147483647

spring 会先执行order比较小的。

总结:个人觉得第一种比较好,如果没有做静态文件cdn的话,还是在默认的servlet做处理比较好,这样就不会进入拦截器进行处理。

原文地址:https://www.cnblogs.com/ppli/p/5669260.html