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做處理比較好,這樣就不會進入攔截器進行處理。