的作用在Spring MVC..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring MVC中<mvc:resources/>標(biāo)簽的作用是什么

發(fā)布時(shí)間:2021-08-03 13:42:46 來源:億速云 閱讀:408 作者:Leah 欄目:大數(shù)據(jù)

這篇文章給大家介紹Spring MVC中<mvc:resources/>標(biāo)簽的作用是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

< mvc:resources />的作用

在Spring MVC框架中,針對(duì)靜態(tài)資源的請(qǐng)求處理除了可以配置< mvc:default-servlet-handler />標(biāo)簽,通過容器來處理以外,還可以使用< mvc:resources />標(biāo)簽,在框架層面來處理。

從Spring MVC的XML Schema文件說明中可以知道,通過< mvc:resources />標(biāo)簽的配置可以使在Spring MVC框架中,配置一個(gè)Handler來處理靜態(tài)資源,例如:圖片,JS,CSS等文件,并通過配置Cache相關(guān)的Headers來使瀏覽器能夠更有效的進(jìn)行加載。同時(shí),該配置允許將靜態(tài)資源放在任何Spring MVC框架能夠讀取到的路徑下。

< mvc:resources />的配置

< mvc:resources />主要有以下配置:

  1. mapping(必填,類型:string)基于當(dāng)前Servlet上下文的URL匹配規(guī)則,例如:"/resources/**"。

  2. location(必填,類型:string)靜態(tài)資源的放置路徑,滿足Spring資源的匹配規(guī)則,可以使用"classpath:"。當(dāng)存在多個(gè)路徑時(shí),通過","來進(jìn)行拼接,例如:"/, classpath:/META-INF/public-web-resources/"。

  3. cache-period(選填,類型:string)用來配置Handler類針對(duì)靜態(tài)資源的緩存時(shí)間,以秒為單位。默認(rèn)情況下不會(huì)發(fā)送任何緩存的Header,僅僅依賴last-modified參數(shù)的修改時(shí)間戳。當(dāng)設(shè)置為0時(shí),表示禁止進(jìn)行資源緩存;當(dāng)設(shè)置一個(gè)正整數(shù)時(shí),表示資源緩存的最長(zhǎng)有效時(shí)間。

  4. order(選填,類型:int)用來配置Handler類處理請(qǐng)求的順序,默認(rèn)為最低優(yōu)先級(jí)的值-1。

ResourceHttpRequestHandler類的作用

在ResourceHttpRequestHandler類中通過解析標(biāo)簽中l(wèi)ocation對(duì)應(yīng)的參數(shù),來從服務(wù)器或jar包中獲取靜態(tài)資源。

同時(shí),可以通過配置VersionResourceResolver類,GzipResourceResolver類,與CachingResourceResolver類等解析器類或CssLinkResourceTransformer類,AppCacheManifestTransformer類等轉(zhuǎn)換器類,來提供針對(duì)靜態(tài)資源添加版本號(hào),Gzip壓縮等自定義的處理過程。而默認(rèn)僅使用PathResourceResolver類來根據(jù)URL查詢靜態(tài)資源。

在處理Request請(qǐng)求時(shí),ResourceHttpRequestHandler類默認(rèn)會(huì)針對(duì)Headers請(qǐng)求頭中的Last-Modified參數(shù)進(jìn)行計(jì)算,以此來判斷是否返回請(qǐng)求碼304,通知瀏覽器使用緩存數(shù)據(jù),以此來提升請(qǐng)求響應(yīng)效率。

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

由于Spring MVC中框架處理的請(qǐng)求全部通過DispatcherServlet類來進(jìn)行處理,因此,無法直接的針對(duì)靜態(tài)資源請(qǐng)求進(jìn)行很友好的兼容處理。于此,框架提供了兩種處理策略來進(jìn)行處理:

  1. 通過< mvc:default-servlet-handler />標(biāo)簽來轉(zhuǎn)移請(qǐng)求處理過程,交由WEB容器進(jìn)行高效的處理??梢愿玫囊蕾嚾萜髯陨淼恼?qǐng)求處理能力,承擔(dān)靜態(tài)資源請(qǐng)求的處理過程;

  2. 通過< mvc:resources />標(biāo)簽來配置對(duì)應(yīng)的Resolver類和Transformer類來在框架層面進(jìn)行靜態(tài)資源請(qǐng)求的處理,以達(dá)到解耦容器的目的。并通過集成請(qǐng)求響應(yīng)的優(yōu)化處理邏輯,來滿足業(yè)務(wù)與性能的需求。

關(guān)于Spring MVC中<mvc:resources/>標(biāo)簽的作用是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI