最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb學(xué)習(xí)筆記之動靜態(tài)Web、URL、HTTP詳解

 更新時間:2026年05月12日 09:51:52   作者:強(qiáng)子感冒了  
在Java?Web開發(fā)中處理動態(tài)和靜態(tài)Web資源是常見的需求,理解這兩種類型的資源及其在HTTP協(xié)議中的應(yīng)用非常重要,這篇文章主要介紹了JavaWeb學(xué)習(xí)筆記之動靜態(tài)Web、URL、HTTP的相關(guān)資料,需要的朋友可以參考下

Web

Web是在互聯(lián)網(wǎng)上,用瀏覽器訪問的一種信息服務(wù)??梢院唵卫斫獬桑覀兇蜷_一個網(wǎng)絡(luò)鏈接,展示的一個個網(wǎng)頁,就是Web。

Web有動態(tài)Web和靜態(tài)Web:

  • 靜態(tài)Web:是指開發(fā)者提前寫好Web網(wǎng)頁(HTML),所有人看到的網(wǎng)頁內(nèi)容都是一樣的Web。早期的Web是靜態(tài)Web,是使用HTML將網(wǎng)頁內(nèi)容寫好放在服務(wù)器中,所有人訪問網(wǎng)頁,都是看到這個HTML的內(nèi)容。靜態(tài)Web的特點是所有人看到相同的內(nèi)容,網(wǎng)頁內(nèi)容、數(shù)據(jù)都是寫在HTML里,不與數(shù)據(jù)庫交互。靜態(tài)Web的業(yè)務(wù)流程大致如下:
    • Web開發(fā)者編寫好HTML,保存到服務(wù)器某目錄。
    • 用戶從瀏覽器打開網(wǎng)頁,比如www.xxxx.com/index.html。
    • 服務(wù)器接受到請求,從文件目錄中找到這個index.html文件,發(fā)送給用戶。
    • 用戶瀏覽器接收到HTML,渲染成網(wǎng)頁展示給用戶。
  • 動態(tài)Web:是指開發(fā)者并非提前寫好Web網(wǎng)頁,而是在用戶訪問時,動態(tài)生成網(wǎng)頁HTML內(nèi)容,每個人看到的網(wǎng)頁內(nèi)容都是不一樣的Web?,F(xiàn)代Web幾乎都是動態(tài)Web,每個人看到的Web內(nèi)容都可能不一樣,比如有自己的用戶昵稱和頭像,每個人看到的商品內(nèi)容都不同。動態(tài)Web一般會與數(shù)據(jù)庫交互,在生成網(wǎng)頁HTML時,從數(shù)據(jù)庫獲取數(shù)據(jù),動態(tài)拼接生成HTML內(nèi)容。動態(tài)Web的業(yè)務(wù)流程大致如下:
    • Web開發(fā)者無需編寫好HTML,而是編寫生成HTML的模版程序。
    • 用戶從瀏覽器打開網(wǎng)頁,比如www.xxx.com/index.php?user=qiangzi。
    • 服務(wù)器接受到請求,從數(shù)據(jù)庫查詢user=qiangzi的頭像、昵稱等信息,返回給后端程序。
    • 后端程序結(jié)合數(shù)據(jù)庫數(shù)據(jù),動態(tài)拼接生成HTML,發(fā)送給用戶。
    • 用戶瀏覽器接收到HTML,渲染成網(wǎng)頁展示給用戶。

上述動態(tài)Web的業(yè)務(wù)流程,為后端程序的動態(tài)Web。實際上,還有一種前端程序?qū)崿F(xiàn)的動態(tài)Web:服務(wù)器接受到請求,只需要發(fā)送給用戶一個空body的HTML。瀏覽器接收到這個HTML,會拉取JS代碼,而JS代碼會從API里獲取數(shù)據(jù)庫數(shù)據(jù)。最后,瀏覽器會執(zhí)行JS代碼,將數(shù)據(jù)處理,動態(tài)生成HTML,渲染并展示給用戶。

URL

URL全稱Uniform Resource Locator統(tǒng)一資源定位符,是指在互聯(lián)網(wǎng)上的任意資源,比如一個網(wǎng)頁(HTML)、一張圖片、一個視頻,都可以有一個全網(wǎng)唯一的定位符,這個就是URL。即使是我們自己目前電腦上的任意一個文件,只要我們開放外網(wǎng)IP,打開防火墻,使用一個web服務(wù)器,就可以用URL訪問到。

HTTP URL

我們最常見的URL是HTTP或HTTPS協(xié)議的網(wǎng)絡(luò)鏈接,比如:https://www.baidu.com:443/source/index.html?id=123&name=user#md。這個URL包含這幾部分:

  1. https://:這是協(xié)議,代表URL采用的是HTTPS協(xié)議。
  2. www.baidu.com:這是域名/主機(jī)IP,代表互聯(lián)網(wǎng)上的某臺計算機(jī)。
  3. 443:這是端口號,代表這臺計算機(jī)的網(wǎng)絡(luò)端口號。端口號可以不寫,如果是HTTPS協(xié)議,默認(rèn)是用443端口號。如果是HTTP協(xié)議,默認(rèn)是80端口號。端口號或主機(jī)IP與域名之間,用冒號:分隔。
  4. /source/index.html:這是路徑,代表要獲取計算機(jī)上這個路徑的文件。在靜態(tài)web時代,這個路徑一般代表計算機(jī)上的真實存在的路徑文件,而動態(tài)web時代,可能這個路徑并不對應(yīng)服務(wù)器計算機(jī)硬盤上的真實文件,而是由服務(wù)器端程序根據(jù)路由規(guī)則動態(tài)生成內(nèi)容返回給客戶端。因此,現(xiàn)代看到的很多網(wǎng)頁,都不是以.html結(jié)尾的路徑,而是類似/home/user這種非文件后綴結(jié)尾的路徑。
  5. id=123&name=user:這是參數(shù),由鍵值對組成,多個鍵值對之間用&隔開。路徑和參數(shù)之間,用問號?分隔。參數(shù)用于向服務(wù)器傳遞參數(shù),以便動態(tài)生成對應(yīng)的資源。參數(shù)又被稱為查詢字符串,隨請求發(fā)送給服務(wù)器,有長度限制。
  6. #md:這是定位符,一般用于HTML標(biāo)記錨點的元素ID,與CSS ID選擇器相同。定位符不會發(fā)送給服務(wù)器,僅在瀏覽器本地用于定位頁面的元素。

其他URL協(xié)議

除了HTTP和HTTPS協(xié)議的URL,還有其他協(xié)議的URL,常見的比如:

  1. file://協(xié)議,用于訪問計算機(jī)本地文件,格式通常是:file:///Users/zhongziqiang/Downloads/工作業(yè)績總結(jié).pdf,即協(xié)議file://、路徑/Users/zhongziqiang/Downloads/工作業(yè)績總結(jié).pdf
  2. ftp://協(xié)議,即文件傳輸協(xié)議,用于在客戶端和服務(wù)器之間傳輸文件。格式通常為ftp://ftp.example.com/software/readme.txt。在瀏覽器地址欄輸入ftp協(xié)議的URL時,需要注意,下拉選擇通過ftp原始的方式打開,否則很容易被瀏覽器當(dāng)做搜索的關(guān)鍵詞打開搜索界面。
  3. ftps://或者sftp://協(xié)議,是FTP的加密版本,更安全。與FTP關(guān)系就像HTTP與HTTPS一樣。
  4. rtmp://協(xié)議,是實時流協(xié)議,用于流媒體傳輸,用于看在線直播或者播放流媒體視頻時,可能會用到的協(xié)議。
  5. mailto:協(xié)議、tel:協(xié)議、sms協(xié)議、facetime協(xié)議等,用于打開計算機(jī)的郵件、電話、短信或者facetime應(yīng)用。注意這些協(xié)議沒有雙斜杠//。
  6. weixin://協(xié)議、whatapp://協(xié)議…:用于打開相關(guān)APP應(yīng)用,稱為URL Scheme,用于在應(yīng)用之間進(jìn)行跳轉(zhuǎn)

URL中的百分比編碼

需要注意,URL編碼只允許使用ASCII碼字符集中的字母、數(shù)字和部分字符,如果路徑或者參數(shù)中包含非ASCII字符如中文、空格或者其他特殊字符,比如保留字符(/用來分隔路徑、?用來分隔路徑與查詢參數(shù)等),需要進(jìn)行百分號編碼。在瀏覽器URL輸入框輸入URL,會自動進(jìn)行百分號編碼進(jìn)行請求,但是為了方便用戶查看,渲染時可能還是會展示原來的字符。

百分比編碼是將非ASCII碼字符、特殊字符轉(zhuǎn)換成幾個安全的,只由ASCII字符組成的格式,以便在網(wǎng)絡(luò)中安全傳輸。

百分比編碼規(guī)則:一個待轉(zhuǎn)換字符(非ASCII碼字符、特殊字符)被替換成一個或多個百分號%后面跟兩個十六進(jìn)制數(shù)字,這兩個十六進(jìn)制數(shù)字表示該字符在ASCII編碼中的數(shù)值。

  • 對于ASCII碼字符:直接轉(zhuǎn)換其為ASCII碼中的數(shù)值。比如空格,在ASCII碼中碼點為32,對應(yīng)十六進(jìn)制為20,則轉(zhuǎn)換為%20。例如,一個URL為https://www.baidu.com/?id=%20ab,代表https://www.baidu.com/?id= ab。
  • 對于非ASCII碼字符:會將該字符按照某種編碼集(一般是UTF-8)轉(zhuǎn)換為字節(jié),然后將每個字節(jié)按照上述規(guī)則進(jìn)行百分比編碼。比如字符“我”在UTF-8字符編碼中使用3個字節(jié)存儲,其十六進(jìn)制表示為:E6 88 91,轉(zhuǎn)換為%E6%88%91。例如,在瀏覽器輸入https://www.baidu.com/?id=我時,瀏覽器會請求URL為https://www.baidu.com/?id=%E6%88%91

總結(jié):百分號編碼的本質(zhì)是一種“轉(zhuǎn)義”機(jī)制。它把有特殊含義或無法直接傳輸?shù)淖址?,?nbsp;% 加上兩個十六進(jìn)制數(shù)字代替,從而保證URL的語法正確性和數(shù)據(jù)的完整性。在瀏覽器地址欄看到的那些 %E5%BC%A0 之類的亂碼,其實就是經(jīng)過編碼的中文或特殊符號。

HTTP

HTTP全稱Hypertext Transfer Protocol,即超文本傳輸協(xié)議。“超文本”是指HTTP最初發(fā)明是用來傳輸HTML文檔的,而HTML即為超文本標(biāo)記語言。“傳輸協(xié)議”是指HTTP本身是一個應(yīng)用層的傳輸協(xié)議,即一個標(biāo)準(zhǔn)。

HTTP最初發(fā)明是為了做HTML傳輸,但是發(fā)展至今,已經(jīng)成為了互聯(lián)網(wǎng)最流行的傳輸協(xié)議,不僅可以傳輸HTML等文檔、文件,還被用來作為API應(yīng)用程序接口。

請求與響應(yīng)

HTTP采用客戶端-服務(wù)器模式,每次客戶端發(fā)送請求(request),服務(wù)器做一次響應(yīng)(response)。

HTTP的服務(wù)器是無狀態(tài)的,即每次請求,服務(wù)器并不會記錄客戶端的信息,服務(wù)器處理完一個客戶端請求后,同一個客戶端再次請求,在服務(wù)器看來,就跟從來沒有響應(yīng)過請求一樣。但是,隨著技術(shù)的發(fā)展,cookie和session技術(shù),可以讓服務(wù)器“有記憶”。具體來說,服務(wù)器響應(yīng)請求時,會在服務(wù)器內(nèi)存里生成一個記錄session,并給這個客戶端賦予cookie,瀏覽器會存儲cookie,在下次請求時,連同cookie帶上去。服務(wù)器可以通過cookie,識別到這個是上次某個請求的客戶端。

請求頭

HTTP請求頭包含請求行和Header,請求行固定格式為:請求方法 請求路徑和參數(shù) HTTP版本,比如:GET /all?keyword=%E4%BB%80%E4%B9%88%E6%98%AFURL%EF%BC%9F&from_source=webtop_search&spm_id_from=333.1007&search_source=3 HTTP/1.1

  • 請求方法:最常見的請求方法為GET和POST,還有其他請求方法如PUT、DELETE、PATCH、HEAD、OPTIONS方法。
  • 請求路徑和參數(shù):是URL中的路徑和參數(shù)。
  • HTTP版本:固定為HTTP/ 加版本號。

HTTP請求頭中的Header是鍵值對,只有Host要求必須傳遞,而其他Header如User-Agent、Accept、Connection等是非必須傳遞的Header。此外,Header可靈活擴(kuò)展,只要客戶端和服務(wù)器約定的參數(shù),都可以通過Header進(jìn)行傳遞。常見的HTTP請求頭如下:

  • Host:是URL中的域名或者IP,及端口號,在HTTP/1.1是必須要傳遞的頭部信息。比如Host: www.example.com:8080。
  • Connection:是控制網(wǎng)絡(luò)連接的選項。如Connection: Keep-Alive表示保持連接以便后續(xù)請求復(fù)用,Connection: Close表示完成后關(guān)閉連接。
  • Accept-Language:表示希望獲得的資源內(nèi)容的語言,比如zh-CN(代表中國大陸的簡體中文)、zh-TW(代表臺灣地區(qū)的繁體中文),一般用于支持國際化的Web服務(wù)。
  • Accept:告知服務(wù)器客戶端能夠處理的內(nèi)容類型(MIME類型,由主類型/子類型組成),服務(wù)器可根據(jù)此返回合適的格式。比如text/html 表示HTML文檔,application/json 表示JSON數(shù)據(jù)、image/jpeg 表示JPEG圖片、audio/mpeg 表示MP3音頻。
  • Content-Type:告知服務(wù)器客戶端發(fā)送請求的請求體body的內(nèi)容類型(MIME類型),在POST、PUT等攜帶請求體的方法中必須使用。
  • User-Agent:表示發(fā)起請求的客戶端軟件、操作系統(tǒng)、版本的信息,服務(wù)器可根據(jù)此優(yōu)化響應(yīng),比如更具不同的瀏覽器返回不同的頁面。例如Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36。

請求頭是使用ASCII碼的字符,這也是為什么HTTP協(xié)議的URL如果含有非ASCII碼的字符需要被百分比編碼轉(zhuǎn)義的原因之一。

請求頭后是請求體,在POST、PUT等攜帶請求體的方法時,需要帶請求體。

由此可見,HTTP請求,可以有很多方式向服務(wù)器傳遞參數(shù),包括Query參數(shù)、Header請求頭、Body請求體。

  • Query參數(shù):是指HTTP URL中的路徑?后的鍵值對,比如URLhttps://search.bilibili.com/all?vt=15612243&keyword=%E4%BB%80%E4%B9%88%E6%98%AFURL%EF%BC%9F&from_source=webtop_search&spm_id_from=333.1007&search_source=3中,Query查詢參數(shù)有vt、keywordfrom_source、spm_id_from、search_source等5個參數(shù)。
  • Header請求頭:服務(wù)器和客戶端可以約定自定義Header請求頭參數(shù)。
  • Body請求體:Body請求體中可以傳輸任意MIME類型的文件,在POST、PUT等攜帶請求體的方法中使用。

響應(yīng)頭

HTTP響應(yīng)頭包含響應(yīng)行(狀態(tài)行)和Header,響應(yīng)行固定格式為:HTTP版本 狀態(tài)碼 原因短語,比如:HTTP/1.1 200 OK

  • HTTP版本:固定為HTTP/ 加版本號,表示服務(wù)器使用的HTTP協(xié)議版本。
  • 狀態(tài)碼:三位數(shù)字,表示請求的處理結(jié)果。比如200代表成功,5XX代表服務(wù)器問題。
  • 原因短語:代表對狀態(tài)碼的簡單文本描述,是與狀態(tài)碼一一對應(yīng)的文本,比如200時為0K。

HTTP響應(yīng)頭中的Header是鍵值對,與請求頭Header相似,響應(yīng)頭幫助客戶端(如瀏覽器)正確解析、緩存、安全處理服務(wù)器返回的資源。常見的HTTP響應(yīng)頭如下:

  • Date:服務(wù)器響應(yīng)生成的日期時間,是必須要傳遞的頭部信息。
  • Content-Type:指定響應(yīng)體的媒體類型(如 text/html; charset=utf-8)。
  • Content-Length:響應(yīng)體的大?。ㄗ止?jié)數(shù))。
  • Location:在重定向響應(yīng)(3xx)中指定新的資源地址。

總結(jié) 

到此這篇關(guān)于JavaWeb學(xué)習(xí)筆記之動靜態(tài)Web、URL、HTTP詳解的文章就介紹到這了,更多相關(guān)JavaWeb動靜態(tài)Web、URL、HTTP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點點(55)

    Java日常練習(xí)題,每天進(jìn)步一點點(55)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • 深度剖析Java中yyyy與YYYY區(qū)別和多種規(guī)避方案

    深度剖析Java中yyyy與YYYY區(qū)別和多種規(guī)避方案

    在Java開發(fā)中,日期格式化是一個高頻場景,本文將從問題復(fù)現(xiàn)出發(fā),深度剖析yyyy(小寫y)和YYYY(大寫Y)的區(qū)別,揭秘周年制背后的玄機(jī),并給出多種可落地的規(guī)避方案,幫你徹底避開這個坑
    2026-03-03
  • Java常用加密算法實例總結(jié)

    Java常用加密算法實例總結(jié)

    這篇文章主要介紹了Java常用加密算法,結(jié)合實例形式總結(jié)分析了base64、md5、sha、rsa、des等加密算法實現(xiàn)技巧,需要的朋友可以參考下
    2017-10-10
  • 基于Java + OpenClaw搭建本地大模型私有化的方案

    基于Java + OpenClaw搭建本地大模型私有化的方案

    數(shù)據(jù)不出內(nèi)網(wǎng)、模型本地跑、代碼自己控——本文這套方案教你用Java+OpenClaw搭建企業(yè)級私有AI中樞,告別數(shù)據(jù)裸奔,讓核心資料安心喂給AI,需要的朋友可以參考下
    2026-03-03
  • java郵件通知工具類

    java郵件通知工具類

    這篇文章主要為大家詳細(xì)介紹了java郵件通知工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • SpringBoot?Seata?死鎖問題排查記錄

    SpringBoot?Seata?死鎖問題排查記錄

    這篇文章主要介紹了SpringBoot?Seata?死鎖問題排查,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • Java加載properties文件實現(xiàn)方式詳解

    Java加載properties文件實現(xiàn)方式詳解

    這篇文章主要介紹了Java加載properties文件實現(xiàn)方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot工程創(chuàng)建的四種方式詳解

    SpringBoot工程創(chuàng)建的四種方式詳解

    本文介紹四種創(chuàng)建Spring Boot項目的方法(IDEA聯(lián)網(wǎng)、官網(wǎng)、阿里云源、手動配置),并解答JDK版本、Maven設(shè)置等常見問題,最終實現(xiàn)集成tess4j進(jìn)行圖片文本識別,感興趣的朋友一起看看吧
    2025-06-06
  • Maven配置倉庫的方法步驟

    Maven配置倉庫的方法步驟

    本文主要介紹了Maven配置倉庫的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Mybatis中SQL的執(zhí)行過程詳解

    Mybatis中SQL的執(zhí)行過程詳解

    MyBatis框架通過映射文件或注解將Java代碼中的方法與數(shù)據(jù)庫操作進(jìn)行映射,執(zhí)行過程包括SQL解析、參數(shù)綁定、SQL預(yù)編譯、執(zhí)行、結(jié)果映射、事務(wù)處理、緩存處理和日志記錄
    2024-12-12

最新評論

汉源县| 文水县| 桑植县| 鹰潭市| 昭觉县| 伊金霍洛旗| 舞钢市| 红安县| 新丰县| 三原县| 开阳县| 喀什市| 开鲁县| 会宁县| 乐平市| 西青区| 麦盖提县| 策勒县| 治多县| 句容市| 苍山县| 卫辉市| 赤峰市| 雷山县| 开阳县| 连城县| 平凉市| 镇康县| 太和县| 鄯善县| 涿鹿县| 正阳县| 故城县| 鲁山县| 泾源县| 德化县| 遵义市| 长治市| 永安市| 德格县| 博客|