欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring MVC之mvc:resources如何處理靜態(tài)資源

 更新時間:2025年03月25日 10:37:51   作者:嘆人間,美中不足今方信  
這篇文章主要介紹了Spring MVC之mvc:resources如何處理靜態(tài)資源問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring MVC之mvc:resources處理靜態(tài)資源

由于早期的 SpringMVC 不能很好地處理靜態(tài)資源,所以在 web.xml 中配置 DispatcherServlet 的請求映射時,往往采用 \*.do、\*.xhtml 等方式,這就決定了請求 URL 必須是一個帶后綴的 URL,而無法采用真正 REST 風格的 URL。

如果將DispatcherServlet請求映射配置為“/”,那么Spring MVC將捕獲web容器所有請求,包括靜態(tài)資源請求,Spring MVC會將它們當成一個普通請求處理,從而報錯。

為什么要使用<mvc:resources/>?

首先,<mvc:resources/>允許靜態(tài)資源放置在任何地方,如 WEB-INF 目錄下、類路徑下等,甚至可以將 JavaScript 等靜態(tài)文件打包到 JAR 包中,通過 location 屬性指定靜態(tài)資源的位置,由于 location 屬性是 Resource 類型,因此可以使用諸如 “classpath:” 等的資源前綴指定資源位置。傳統(tǒng)的 Web 容器的靜態(tài)資源只能放在 Web 容器的根路徑下,<mvc:resources/>打破了這個限制。

其次,<mvc:resources/>可以對靜態(tài)資源提供優(yōu)化,例如:通過 cacheSeconds 屬性指定靜態(tài)資源在瀏覽器端的緩存時間,充分利用瀏覽器端的緩存,在輸出靜態(tài)資源時,會根據(jù)配置設置好響應報文的 ExpiresCache-Control 值。在接受到靜態(tài)資源的獲取請求時,會檢查請求頭的 Last_modified 值。如果靜態(tài)資源沒有發(fā)生變化,直接返回303響應狀態(tài)碼,指示客戶端使用瀏覽器緩存的數(shù)據(jù)。

簡單配置

<!-- 
使用 maven 編譯好的結構如下項目結構,可以看出 webapp 下的 html、images、jquery-2.1.1和 WEB-INF 都被編譯到了 target 下,唯一變得是 WEB-INF 下多出了 classes 的目錄,這個 classes 就是 spring 中俗稱的 classpath
location="/" 表示 target 下的 html、images、jquery-2.1.1 這三個文件夾及其子文件,mapping="/resources/**" 表示這三個文件夾的根目錄,
也就是說在瀏覽器輸入 http://localhost:8080/項目名/resources/html/goods.html 訪問 html 下的 goods.html 文件 
-->
<mvc:resources mapping="/resources/**" location="/" />
<!-- 
映射 target 下的 WEB-INF 及其子文件的根目錄為 web,這樣在瀏覽器可以訪問 WEB-INF 下的所有文件
例如:http://localhost:8080/項目名/web/web.xml、http://localhost:8080/項目名/web/ftl/freemarker.html
注意:一般情況下,不要配置 WEB-INF
 -->
<mvc:resources mapping="/web/**" location="/WEB-INF/" />
<!--
配置 classes 下的文件
訪問:http://localhost:8080/項目名/config/conf.json
-->
<mvc:resources mapping="/config/**" location="classpath:config/json/" />

項目結構

說明

1、 我們配置的 web 根路徑 “/” 下包含 html、jquery-2.1.1imagesWEB-INF,除了 WEB-INF 外,其他三個文件夾都可以訪問,而 WEB-INF 不能被訪問。因為 SpringMVC 在處理映射的靜態(tài)資源時,會檢查引用路徑是否包含 WEB-INF 或者 META-INF,如果包括,則直接返回 null 。當然我們也可以配置 location="/WEB-INF/" 。

<mvc:resources mapping="/resources/**" location="/" />
<mvc:resources mapping="/web/**" location="/WEB-INF/" />

2、如果我們設置了 cache-period 屬性,即設置靜態(tài)資源在客戶端瀏覽器中的緩存有效時間,那么當發(fā)布了新版本應用時,由于客戶端瀏覽器緩存的緣故,需要使這些靜態(tài)資源成為“新的資源”,例如給靜態(tài)資源的路徑添加應用發(fā)布的版本號

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 淺談Java實體對象的三種狀態(tài)以及轉換關系

    淺談Java實體對象的三種狀態(tài)以及轉換關系

    這篇文章主要介紹了淺談Java實體對象的三種狀態(tài)以及轉換關系,具有一定參考價值,需要的朋友可以,看看。。
    2017-11-11
  • Java Process與Runtime()的使用及調用cmd命令阻塞的解決方案

    Java Process與Runtime()的使用及調用cmd命令阻塞的解決方案

    這篇文章主要介紹了Java Process與Runtime()的使用及調用cmd命令阻塞的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java線程同步方法實例總結

    Java線程同步方法實例總結

    這篇文章主要介紹了Java線程同步方法,結合實例形式總結分析了Java線程同步、并發(fā)控制相關實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2018-08-08
  • 一文帶你徹底明白什么是Java注解

    一文帶你徹底明白什么是Java注解

    Java注解可以說是我們編碼過程中最常用的,本文將給大家介紹Java注解的概念、作用以及如何使用注解來提升代碼的可讀性和靈活性,需要的可以參考一下
    2023-05-05
  • Spring使用支付寶掃碼支付

    Spring使用支付寶掃碼支付

    這篇文章主要為大家詳細介紹了Spring使用支付寶掃碼支付的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java使用Jdom讀取xml解析實例

    Java使用Jdom讀取xml解析實例

    這篇文章主要介紹了Java使用Jdom讀取xml解析,以實例形式較為詳細的分析了Jdom操作XML文件實現(xiàn)讀取操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • maven私服的配置使用方法

    maven私服的配置使用方法

    這篇文章主要介紹了maven私服的配置使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java實現(xiàn)簡單GUI登錄和注冊界面

    Java實現(xiàn)簡單GUI登錄和注冊界面

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單GUI登錄和注冊界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫

    Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫

    這篇文章主要介紹了Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫,代碼簡潔,使用簡單,擴展性強,結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 教你用MAT工具分析Java堆內存泄漏問題的解決方法

    教你用MAT工具分析Java堆內存泄漏問題的解決方法

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著如何使用MAT工具分析Java堆內存泄漏問題的解決方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論