Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产精品一级视频,日韩在线aⅴ免费视频,久久精品国产免费高清

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          為HTML頁面添加視頻、音頻的方法-零基礎(chǔ)自學(xué)網(wǎng)頁制作

          頻、視頻的格式

          開始學(xué)習(xí)之前,我們要下載些素材用來測試使用,地址如下:https://pan.baidu.com/s/1reRWno0ibYRcYXjw4MClqw

          提取碼:td80

          其中包括兩個(gè)視頻一個(gè)音頻和一個(gè)安裝程序。

          學(xué)習(xí)如何在頁面中添加音頻、視頻之前應(yīng)該了解一點(diǎn)基礎(chǔ)知識(shí)。

          我們應(yīng)該都有在互聯(lián)網(wǎng)上下載電影、視頻、音樂的經(jīng)歷,大家會(huì)注意到,有的視頻文件名的后綴是.avi,有的視頻是.mp4,還有.mov的,據(jù)不完全統(tǒng)計(jì),常見的各種視頻格式有十幾種之多。

          常見的音頻的格式比起視頻來會(huì)顯得少一些,一般是.wav和.mp3格式。

          為什么存儲(chǔ)相同的內(nèi)容可以有這么多不同的格式呢?

          格式產(chǎn)生的核心在于對(duì)音頻、視頻等多媒體文件進(jìn)行的不同編碼方式。

          那什么是編碼呢?

          簡單來說我們可以把"編碼"這個(gè)詞分成兩個(gè)部分,第一個(gè)是"編",也就是"整理、組織"的意思,第二個(gè)是"碼",也就是我們平時(shí)所說的"數(shù)碼"。

          首先說"碼",我們的計(jì)算機(jī)中的數(shù)據(jù)最終都是通過二進(jìn)制的數(shù)字(0和1)來存儲(chǔ)或計(jì)算的,這些0或1就是數(shù)碼。無論代碼、程序、圖片、音樂、視頻、文字等的存儲(chǔ)與計(jì)算都不例外。不管多么復(fù)雜或簡單的文件,在計(jì)算機(jī)看來,都是一大堆0和1。

          一個(gè)0或1被稱為1比特,圖片或視頻中的一個(gè)黑白像素通常是8比特(八位),如果一張1080乘720個(gè)像素的圖片所占內(nèi)存的大小就是1080*720*8=6220800字節(jié),約等于0,74mb。如果一個(gè)視頻每秒中有25幀,也就是一秒鐘在我們眼前閃過25張圖片(視頻播放實(shí)際上就是在我們眼前快速的更替圖片,這些圖片在大腦中會(huì)被自動(dòng)連成動(dòng)作,這也是小的時(shí)候在課本的角上畫好一套走路的小人的不同動(dòng)作后,快速翻動(dòng)書頁,畫面中的小人會(huì)走路的原因,大家可以自行百度"視覺暫留原理")。

          一秒鐘25張1080乘720的圖片的視頻,一秒鐘就會(huì)占0.74*25=18.5mb的內(nèi)存。如果是一分鐘呢,18.5*60=1110mb約等于1.08gb。這樣的數(shù)據(jù)量是不是很嚇人。

          但事實(shí)上我們下載的1080*720的一小時(shí)三十分鐘左右的視頻的體積往往也沒有超過1gb,這又是為什么呢?

          這就是"編"的功勞!對(duì)數(shù)碼進(jìn)行整理和組織的主要目的是壓縮體積,壓縮數(shù)據(jù)體積既能節(jié)省磁盤又能方便傳播與攜帶,是信息技術(shù)的關(guān)鍵技術(shù)之一,壓縮的方法一般有兩類,一類叫做無損壓縮,也就是通過對(duì)這一大堆數(shù)碼進(jìn)行一個(gè)特殊的組合使其占有更小的空間,一類叫做有損壓縮,是在無損壓縮的基礎(chǔ)上剔除掉人眼睛識(shí)別不到的冗余信息。具體的壓縮過程涉及到很多數(shù)學(xué)知識(shí),這里大家簡單了解一下即可。

          壓縮后的視頻或音頻文件最終通過播放器對(duì)該文件的壓縮算法進(jìn)行逆向運(yùn)算后,還原成計(jì)算機(jī)可以解讀的畫面和聲音再呈現(xiàn)給觀眾,這個(gè)過程叫做"解碼"。

          通過"編"的方式壓縮文件體積,通過"解"的方式再還原出文件內(nèi)容成了處理大規(guī)模數(shù)據(jù)的通用手法。

          不同的編碼和解碼方式催生出不同的文件格式,這種情況下,瀏覽器在播放視頻的時(shí)候就要有應(yīng)對(duì)不同格式的不同解碼方式,在15年以前,瀏覽器為了能夠播放不同格式的視頻,就要調(diào)用電腦中不同的播放器,這個(gè)過程的寫法非常麻煩。隨著技術(shù)不斷地整合,時(shí)至今日,在頁面中播放視頻不需要這么復(fù)雜的寫法了,但是因?yàn)槊總€(gè)瀏覽器都不是包打一切,因此,雖然不用指定播放器,但是也要預(yù)設(shè)不同格式的視頻來應(yīng)對(duì)不同的瀏覽器。

          因此,我們?cè)谶@一部分的學(xué)習(xí)中除了講解如何向頁面添加不同格式的音視頻外還會(huì)告訴大家如何為音視頻轉(zhuǎn)換格式。

          為頁面添加音頻、視頻

          添加音頻使用<audio></audio>標(biāo)簽,這個(gè)標(biāo)簽被所有瀏覽器支持,是html5推薦的音頻導(dǎo)入標(biāo)簽,但是遺憾的是在html4標(biāo)準(zhǔn)中是不被支持的或者說是非法的。

          這里給大家簡要介紹一下html5和html4的區(qū)別。

          簡單來說呢,一個(gè)html文件的第一條語句是<!DOCTYPE HTML>,它就是HTML5標(biāo)準(zhǔn)的文件。如果是html4,它的第一條聲明語句有三種寫法,像這樣

          一:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

          二:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

          三:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

          版權(quán)聲明:本文為CSDN博主「痦子」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

          原文鏈接:https://blog.csdn.net/yh1061632045/article/details/81518141

          這讓我想到了孔乙己的"茴"字的多種寫法

          是不是很麻煩,其實(shí)html5比html4更簡單,功能更強(qiáng)大,而且我們一直以html5的標(biāo)準(zhǔn)進(jìn)行學(xué)習(xí),所以大家不必糾結(jié)。

          下面我們導(dǎo)入一個(gè)音頻試試吧。示例代碼如下:

          <!DOCTYPE HTML>
            <html>
            <head> 
            <title>音視頻導(dǎo)入</title>
            </head> 
            <body>
            <audio controls="controls"> 
              <source src="audio/千年的祈禱.mp3" type="audio/mp3" />
            </audio>
            </body> 
            </html>

          頁面效果如下:

          其中controls屬性就是用來顯示播放控制界面的,就是這個(gè):(偷懶的話可以寫成"controls"就ok,不必加"="以及后面的內(nèi)容了。)

          如果以后您使用自己編寫的控制界面,就可以不添加這個(gè)屬性。

          刪掉這個(gè)屬性后就是這樣:這樣為自定義的播放控制界面留出了位置。

          <audio></audio>標(biāo)簽夾著<source>標(biāo)簽,一個(gè)<audio></audio>標(biāo)簽中可以添加多個(gè)<source>用以支持不同的格式要求。示例代碼如下:(這段代碼來自w3school)

          <audio controls="controls"> 
            <source src="song.ogg" type="audio/ogg" /> 
            <source src="song.mp3" type="audio/mpeg" />
            Your browser does not support the audio element.<!--你的瀏覽器不支持這個(gè)音頻元素-->
          </audio>

          type屬性是告訴瀏覽器音樂文件的類型。

          不同格式的文件的生成需要我們自己去做,這就涉及到如何給一個(gè)音頻文件進(jìn)行格式轉(zhuǎn)化的問題。這個(gè)問題我們明天再說,今天先學(xué)習(xí)為頁面添加音頻和視頻。

          下面我們來看一下視頻的導(dǎo)入方法,示例代碼如下:

          <video controls> 
            <source src="video/阿塔麗.mp4" type="video/mp4" />
          </video>

          頁面效果如下:

          我們可以通過設(shè)置height和width屬性來控制視頻的面積。實(shí)例代碼如下:

          <video controls width="850" height="500" > 
            <source src="video/阿塔麗.mp4" type="video/mp4" />
          </video>

          頁面效果如下:

          視頻畫面變小了,和視頻并排的是我們之前添加的音頻文件,由此可知,這兩個(gè)元素都是內(nèi)聯(lián)元素。

          今天的內(nèi)容結(jié)束了,明天我們繼續(xù)學(xué)習(xí)格式轉(zhuǎn)換和為不同瀏覽器預(yù)設(shè)不同音視頻格式的方法。

          如果您有任何疑問請(qǐng)給我留言,如有問題或錯(cuò)誤請(qǐng)予以斧正!

          HTML完整學(xué)習(xí)目錄

          HTML序章(學(xué)習(xí)目的、對(duì)象、基本概念)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML是什么?——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          第一個(gè)HTML頁面如何寫?——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML頁面中head標(biāo)簽有啥用?——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          初識(shí)meta標(biāo)簽與SEO——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中的元素使用方法1——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中的元素使用方法2——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML元素中的屬性1——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML元素中的屬性2(路徑詳解)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格1(基本元素)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格2(表格頭部與腳部)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格3(間距與顏色)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格4(行顏色與表格嵌套)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          16進(jìn)制顏色表示與RGB色彩模型——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中的塊級(jí)元素與內(nèi)聯(lián)元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          初識(shí)HTML中的<div>塊元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          在HTML頁面中嵌入其他頁面的方法——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          封閉在家學(xué)網(wǎng)頁制作!為頁面嵌入PDF文件——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單元素初識(shí)1——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單元素初識(shí)2——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單3(下拉列表、多行文字輸入)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單4(form的action、method屬性)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML列表制作講解——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          為HTML頁面添加視頻、音頻的方法——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          音視頻格式轉(zhuǎn)換神器與html視頻元素加字幕——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中使用<a>標(biāo)簽實(shí)現(xiàn)文本內(nèi)鏈接——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          覽器解析HTML文件的過程是網(wǎng)頁呈現(xiàn)的關(guān)鍵步驟之一。具體介紹如下:


          HTML文檔的接收和預(yù)處理

          1. 網(wǎng)絡(luò)請(qǐng)求處理:當(dāng)用戶輸入U(xiǎn)RL或點(diǎn)擊鏈接時(shí),瀏覽器發(fā)起HTTP請(qǐng)求,服務(wù)器響應(yīng)并返回HTML文件。此過程中,瀏覽器需要處理DNS查詢、建立TCP連接等底層網(wǎng)絡(luò)通信操作。
          2. 預(yù)解析優(yōu)化:為了提高性能,現(xiàn)代瀏覽器在主線程解析HTML之前會(huì)啟動(dòng)一個(gè)預(yù)解析線程,提前下載HTML中鏈接的外部CSS和JS文件。這一步驟確保了后續(xù)渲染過程的順暢進(jìn)行。

          解析為DOM樹

          1. 詞法分析和句法分析:瀏覽器的HTML解析器通過詞法分析將HTML文本標(biāo)記轉(zhuǎn)化為符號(hào)序列,然后通過句法分析器按照HTML規(guī)范構(gòu)建出DOM樹。每個(gè)節(jié)點(diǎn)代表一個(gè)HTML元素,形成了多層次的樹狀結(jié)構(gòu)。
          2. 生成對(duì)象接口:生成的DOM樹是頁面元素的結(jié)構(gòu)化表示,提供了操作頁面元素的接口,如JavaScript可以通過DOM API來動(dòng)態(tài)修改頁面內(nèi)容和結(jié)構(gòu)。

          CSS解析與CSSOM樹構(gòu)建

          1. CSS文件加載與解析:瀏覽器解析HTML文件中的<link>標(biāo)簽引入的外部CSS文件和<style>標(biāo)簽中的內(nèi)聯(lián)CSS,生成CSSOM樹。CSSOM樹反映了CSS樣式的層級(jí)和繼承關(guān)系。
          2. CSS屬性計(jì)算:包括層疊、繼承等,確保每個(gè)元素對(duì)應(yīng)的樣式能夠被準(zhǔn)確計(jì)算。這些計(jì)算過程為后續(xù)的布局提供必要的樣式信息。

          JavaScript加載與執(zhí)行

          1. 阻塞式加載:當(dāng)解析器遇到<script>標(biāo)簽時(shí),它會(huì)停止HTML的解析,轉(zhuǎn)而先加載并執(zhí)行JavaScript代碼。這是因?yàn)镴S可能會(huì)修改DOM結(jié)構(gòu)或CSSOM樹,從而影響已解析的部分。
          2. 異步和延遲加載:為了不影響頁面的初步渲染,可以采用async或defer屬性來異步加載JS文件,這樣可以在后臺(tái)進(jìn)行JS的加載和執(zhí)行,而不阻塞HTML解析。

          渲染樹的構(gòu)建

          1. 合并DOM樹和CSSOM樹:有了DOM樹和CSSOM樹后,瀏覽器將它們組合成渲染樹,這個(gè)樹只包含顯示界面所需的DOM節(jié)點(diǎn)及對(duì)應(yīng)的樣式信息。
          2. 不可見元素的排除:渲染樹會(huì)忽略例如<head>、<meta>等不可見元素,只關(guān)注<body>內(nèi)的可視化內(nèi)容。

          布局計(jì)算(Layout)

          1. 元素位置和尺寸確定:瀏覽器從渲染樹根節(jié)點(diǎn)開始,遞歸地計(jì)算每個(gè)節(jié)點(diǎn)的精確位置和尺寸,這個(gè)過程也被稱為“回流”或“重排”,是后續(xù)繪制的基礎(chǔ)。
          2. 布局過程的優(yōu)化:現(xiàn)代瀏覽器會(huì)盡量優(yōu)化布局過程,例如通過流式布局的方式減少重復(fù)計(jì)算,確保高效地完成布局任務(wù)。

          繪制(Paint)

          1. 像素級(jí)繪制:繪制是一個(gè)將布局計(jì)算后的各元素繪制成像素點(diǎn)的過程。這包括文本、顏色、邊框、陰影以及替換元素的繪制。
          2. 層次化的繪制:為了高效地更新局部內(nèi)容,瀏覽器會(huì)將頁面分成若干層次(Layer),對(duì)每一層分別進(jìn)行繪制,這樣只需更新變化的部分。

          因此,我們開發(fā)中要注意以下幾點(diǎn):

          • 避免過度使用全局腳本:盡量減少使用全局腳本或者將它們放在文檔底部,以減少對(duì)HTML解析的阻塞。
          • 合理組織CSS和使用CSS預(yù)處理器:合理組織CSS文件的結(jié)構(gòu)和覆蓋規(guī)則,利用CSS預(yù)處理器進(jìn)行模塊化管理。
          • 利用瀏覽器緩存機(jī)制:通過設(shè)置合理的緩存策略,減少重復(fù)加載相同資源,提升二次訪問的體驗(yàn)。
          • 優(yōu)化圖片和多媒體資源:適當(dāng)壓縮圖片和優(yōu)化多媒體資源的加載,減少網(wǎng)絡(luò)傳輸時(shí)間和渲染負(fù)擔(dān)。

          綜上所述,瀏覽器解析HTML文件是一個(gè)復(fù)雜而高度優(yōu)化的過程,涉及從網(wǎng)絡(luò)獲取HTML文檔到最終將其渲染到屏幕上的多個(gè)步驟。開發(fā)者需要深入理解這些步驟,以優(yōu)化網(wǎng)頁性能和用戶體驗(yàn)。通過合理組織HTML結(jié)構(gòu)、優(yōu)化資源加載順序、減少不必要的DOM操作和合理安排CSS和JavaScript的加載與執(zhí)行,可以顯著提升頁面加載速度和運(yùn)行效率。

          我們開發(fā)Web應(yīng)用的時(shí)候,會(huì)用到大量的js、css、image、html等靜態(tài)資源資源。

          靜態(tài)資源映射


          默認(rèn)情況下,我們只需要將靜態(tài)資源放在一下幾個(gè)目錄中就可以直接通過url在瀏覽器中訪問了。

          • /META-INF/resources/
          • /resources/
          • /static/
          • /public/

          如果這四個(gè)目錄中有相同的靜態(tài)資源文件,那么優(yōu)先訪問哪個(gè)目錄下面的資源啊?

          靜態(tài)資源的默認(rèn)訪問優(yōu)先級(jí):/META-INF/resources/>/resources/>/static/>/public/

          在四個(gè)目錄中都放一個(gè)static.html的文件,每個(gè)html文件中都說明自己所在的目錄,訪問結(jié)果如下:

          SpringBoot關(guān)于靜態(tài)資源的訪問涉及到了application.properties中的兩個(gè)屬性:

          # 默認(rèn)值為 /*
          spring.mvc.static-path-pattern= #這里設(shè)置靜態(tài)資源匹配的url-pattern
          # 默認(rèn)值為 classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ 
          spring.resources.static-locations= #這里設(shè)置要指向的路徑,多個(gè)使用英文逗號(hào)隔開,在前面的優(yōu)先級(jí)高
          

          此時(shí),我們豁然開朗,知道默認(rèn)情況下靜態(tài)資源為什么放在/META-INF/resources/、/resources/、/static/、/public/這四個(gè)目錄了,還有這四個(gè)目錄訪問的優(yōu)先級(jí)是怎么來的了。

          修改靜態(tài)資源映射的方法:

          • 我們可以修改這兩個(gè)屬性來改變靜態(tài)資源的映射,比如我們的所有靜態(tài)資源都在mystatic目錄中,并且我們希望訪問靜態(tài)資源的的url都帶有/mystatic/這個(gè)目錄前綴:
          spring.mvc.static-path-pattern=/mystatic/*
          spring.resources.static-locations= classpath:mystatic/
          

          在resources資源目錄中創(chuàng)建一個(gè)mystatic目錄,在該目錄下面創(chuàng)建一個(gè)static.html文件,訪問結(jié)果如下:

          • 繼承WebMvcConfigurerAdapter類,并且重寫addResourceHandlers方法就行,該操作與上面的方法得到的效果是一樣的


          注意:還可以設(shè)置外部磁盤目錄,設(shè)置方式不變,格式如下:file:d/mystatic/。

          WebJars


          WebJars將前端資源(css,js,image,html等等)打包到j(luò)ar中,然后使用基于JVM的包管理器(比如 Maven、Gradle 等)管理前端依賴的方案。SpringBoot中也可以通過WebJars來訪問靜態(tài)資源。

          SpringBoot默認(rèn)將/webjars/**映射到 classpath:/META-INF/resources/webjars/。

          • /webjars/**:表示/webjars/目錄下的所有文件,及存在其目錄下的jar包中的所有文件。

          所以默認(rèn)情況下我們需要訪問WebJars中的資源,需要將其jar包放到classpath:/META-INF/resources/webjars/目錄中。

          我們來使用一下WebJars:

          • 在pom.xml中引入jquery的WebJars,默認(rèn)會(huì)被放在classpath:/META-INF/resources/webjars/目錄中
           <dependency>
           <groupId>org.webjars</groupId>
           <artifactId>jquery</artifactId>
           <version>2.1.1</version>
           </dependency>
          
          • 在前端webjars.html頁面中引入jquery
          <script src="/webjars/jquery/2.1.1/jquery.js"></script>
          
          • 訪問頁面webjars.html,查看源碼,可以鏈接到j(luò)query.js的內(nèi)容


          版本號(hào)統(tǒng)一管理


          如果我們有很多頁面都是用了WebJars中的資源,而我們現(xiàn)在要升級(jí)WebJars的版本,豈不是要在每個(gè)頁面中都改動(dòng)一下,這樣很麻煩啊,有沒有簡單的方法啊。此時(shí),我們可以進(jìn)行版本號(hào)統(tǒng)一管理。

          • 在pom.xml中引入jquery的WebJars的基礎(chǔ)上添加:
           <dependency>
           <groupId>org.webjars</groupId>
           <artifactId>webjars-locator</artifactId>
           </dependency>
          
          • 添加版本號(hào)統(tǒng)一管理的控制器


          • 在頁面中引入jquery的方式如下:
          <script src="/webjarslocator/jquery/jquery.js"></script>
          

          靜態(tài)資源版本管理


          當(dāng)我們資源內(nèi)容發(fā)生變化時(shí),由于瀏覽器緩存,用戶本地的靜態(tài)資源還是舊的資源,為了防止這種情況導(dǎo)致的問題,我們可能會(huì)手動(dòng)在請(qǐng)求url的時(shí)候加個(gè)版本號(hào)或者其他方式。

          <script type="text/javascript" src="/lavor.js?v=1.1"></script>
          

          SpringMVC提供了兩種方式可以幫助我們很容易地解決這類問題。

          MD5方式


          • 修改application.properties配置文件
          spring.resources.chain.strategy.content.enabled=true
          spring.resources.chain.strategy.content.paths=/**
          
          • 添加@ControllerAdvice注解,返回ResourceUrlProvider的對(duì)象,這樣所有通過控制器返回的模板頁面(jsp,thymeleaf,freeemarker等)就都可以在頁面中使用該對(duì)象了


          • 在控制器返回的模板頁面中,添加以下信息,我們這里的返回頁面時(shí)jsp頁面,lavor.js是webapp目錄下面的js腳本文件。
          <script src="${urls.getForLookupPath('/lavor.js') }"></script>
          
          • 通過瀏覽器訪問控制器的請(qǐng)求url,查看頁面源代碼
          <script src="/lavor-fdfa0502716d517c6cad4f2536aa02a1.js"></script>
          

          請(qǐng)求/lavor-fdfa0502716d517c6cad4f2536aa02a1.js,我們MD5配置的paths=/**,所以SpringMVC會(huì)嘗試url中是否包含-,如果包含會(huì)去掉后面這部分,然后去映射的目錄(如webapp根目錄,上面提到的四大靜態(tài)映射目錄)查找/lavor.js文件,如果能找到就返回。

          版本號(hào)方式


          • 修改application.properties配置文件,注意MD5方式中的是content,這里是fixed
          spring.resources.chain.strategy.fixed.enabled=true
          #版本號(hào)處理的路徑
          spring.resources.chain.strategy.fixed.paths=/**
          # 版本號(hào),可以為所處理路徑中的資源加上/v1.1目錄前綴
          spring.resources.chain.strategy.fixed.version=v1.1
          
          • 添加@ControllerAdvice注解,返回ResourceUrlProvider的對(duì)象,這樣所有通過控制器返回的模板頁面(jsp,thymeleaf,freeemarker等)就都可以在頁面中使用該對(duì)象了


          • 在控制器返回的模板頁面中,添加以下信息,我們這里的返回頁面時(shí)jsp頁面,lavor.js是webapp目錄下面的js腳本文件.
          <script src="${urls.getForLookupPath('/lavor.js') }"></script>
          
          • 通過瀏覽器訪問控制器的請(qǐng)求url,查看頁面源代碼
          <script src="/v1.1/lavor.js"></script>
          

          請(qǐng)求/v1.1/lavor.js,會(huì)查看v1.1是不是版本號(hào),如果是就去掉前綴目錄,直接查找/lavor.js。

          注意:我們發(fā)現(xiàn)如果添加了webapp目錄,那么該目錄也可以存放靜態(tài)資源,并且默認(rèn)情況下訪問優(yōu)先級(jí)比/META-INF/resources/還要高。


          主站蜘蛛池模板: 精品日产一区二区三区手机| 少妇人妻精品一区二区| 久久精品一区二区三区AV| 人妻在线无码一区二区三区| 嫩B人妻精品一区二区三区| 国产精品女同一区二区| 久久精品无码一区二区三区日韩| 日韩AV无码一区二区三区不卡 | 在线观看日韩一区| 无码人妻视频一区二区三区| 无码人妻精品一区二区三区99不卡 | 亚洲字幕AV一区二区三区四区| 中文字幕一区在线| 波多野结衣精品一区二区三区| 色一情一乱一区二区三区啪啪高| 少妇人妻精品一区二区三区| 亚洲国产精品一区二区成人片国内 | 精品福利视频一区二区三区| 亚洲一区爱区精品无码| 国产在线精品一区二区夜色| 国产一区风间由美在线观看| 精品国产一区二区三区久久影院| 91一区二区三区四区五区| 久久青草国产精品一区| 国产另类TS人妖一区二区| 国产一区二区三区不卡AV| 亚洲一区二区三区偷拍女厕| 国产成人无码一区二区在线播放 | 亚洲色精品三区二区一区| 国产99久久精品一区二区| 精品一区二区三区四区在线播放| 亚洲一区在线视频| 一色一伦一区二区三区| 精品少妇人妻AV一区二区 | 亚洲一区精品无码| 精品人妻码一区二区三区| 免费播放一区二区三区| 国产日韩精品视频一区二区三区| 日韩av片无码一区二区不卡电影| 午夜性色一区二区三区不卡视频| 麻豆va一区二区三区久久浪|