Servlet路徑匹配以及靜態資源路徑訪問
阿新 • • 發佈:2019-01-02
問題由來,為什麼SpringMvc中的DispatcherServlet中可以用/,也可以用/*, 這兩個有什麼區別。
先說結論:“/*”的優先順序比副檔名匹配(如.jsp)高,而“/” 的優先順序比副檔名匹配(如.jsp)低。
我們知道一個路徑(url-pattern)只能匹配一個servlet,不像filter,只要能匹配的路徑都可以過濾。
**那就說下URL匹配的優先順序,從高到低:
1.精確匹配:即exact.do,明確的路徑。
2.萬用字元匹配:即”/*”,
3.副檔名匹配:.jsp, .do之類的
4.預設的servlet,也即是“/”. defaultwapper。**
那為什麼我們沒有配置“.jsp”,為什麼會這個呢,那是因為Tomcat會自動加入副檔名“
這就是為什麼我們在配置DispatcherServlet中用“/”,可以訪問jsp,而不能訪問其他的靜態資源的原因如“.html”,“.js”之類的。
那麼問題來了,我們如何訪問靜態資源:
1.啟用Tomcat的defaultServlet來處理靜態檔案
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>檔案路徑可以自己配置(如*.jpg)</url-pattern>
</servlet-mapping>
這個處理不會進入到Spring, 所以他的效率是最高的
2.用Spring中的配置檔案
<!-- 對靜態資原始檔的訪問 -->
<mvc:resources mapping="/images/**" location="/images/" />
也可以對classpath路徑下的靜態資源進行訪問
這裡寫連結內容