Spring MVC標籤小結

< mvc:resources />的做用

在Spring MVC框架中,針對靜態資源的請求處理除了能夠配置< mvc:default-servlet-handler />標籤,經過容器來處理之外,還能夠使用< mvc:resources />標籤,在框架層面來處理。web

從Spring MVC的XML Schema文件說明中能夠知道,經過< mvc:resources />標籤的配置能夠使在Spring MVC框架中,配置一個Handler來處理靜態資源,例如:圖片,JS,CSS等文件,並經過配置Cache相關的Headers來使瀏覽器可以更有效的進行加載。同時,該配置容許將靜態資源放在任何Spring MVC框架可以讀取到的路徑下。瀏覽器

< mvc:resources />的配置

< mvc:resources />主要有如下配置:緩存

  1. mapping(必填,類型:string)基於當前Servlet上下文的URL匹配規則,例如:"/resources/**"。服務器

  2. location(必填,類型:string)靜態資源的放置路徑,知足Spring資源的匹配規則,能夠使用"classpath:"。當存在多個路徑時,經過","來進行拼接,例如:"/, classpath:/META-INF/public-web-resources/"。mvc

  3. cache-period(選填,類型:string)用來配置Handler類針對靜態資源的緩存時間,以秒爲單位。默認狀況下不會發送任何緩存的Header,僅僅依賴last-modified參數的修改時間戳。當設置爲0時,表示禁止進行資源緩存;當設置一個正整數時,表示資源緩存的最長有效時間。app

  4. order(選填,類型:int)用來配置Handler類處理請求的順序,默認爲最低優先級的值-1。框架

ResourceHttpRequestHandler類的做用

在ResourceHttpRequestHandler類中經過解析標籤中location對應的參數,來從服務器或jar包中獲取靜態資源。性能

同時,能夠經過配置VersionResourceResolver類,GzipResourceResolver類,與CachingResourceResolver類等解析器類或CssLinkResourceTransformer類,AppCacheManifestTransformer類等轉換器類,來提供針對靜態資源添加版本號,Gzip壓縮等自定義的處理過程。而默認僅使用PathResourceResolver類來根據URL查詢靜態資源。優化

在處理Request請求時,ResourceHttpRequestHandler類默認會針對Headers請求頭中的Last-Modified參數進行計算,以此來判斷是否返回請求碼304,通知瀏覽器使用緩存數據,以此來提高請求響應效率。spa

< mvc:resources />與< mvc:default-servlet-handler />的異同

因爲Spring MVC中框架處理的請求所有經過DispatcherServlet類來進行處理,所以,沒法直接的針對靜態資源請求進行很友好的兼容處理。於此,框架提供了兩種處理策略來進行處理:

  1. 經過< mvc:default-servlet-handler />標籤來轉移請求處理過程,交由WEB容器進行高效的處理。能夠更好的依賴容器自身的請求處理能力,承擔靜態資源請求的處理過程;

  2. 經過< mvc:resources />標籤來配置對應的Resolver類和Transformer類來在框架層面進行靜態資源請求的處理,以達到解耦容器的目的。並經過集成請求響應的優化處理邏輯,來知足業務與性能的需求。

相關文章
相關標籤/搜索