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做处理比较好,这样就不会进入拦截器进行处理。
时间: 2024-09-30 19:47:25