欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:tomcat XML

柚子快報(bào)邀請(qǐng)碼778899分享:tomcat XML

http://yzkb.51969.com/

第四章 XML_Tomcat10_HTTP

一 XML

XML是EXtensible Markup Language的縮寫,翻譯過來就是可擴(kuò)展標(biāo)記語言。所以很明顯,XML和HTML一樣都是標(biāo)記語言,也就是說它們的基本語法都是標(biāo)簽。

可擴(kuò)展 三個(gè)字表面上的意思是XML允許自定義格式。但這不代表你可以隨便寫。 在XML基本語法規(guī)范的基礎(chǔ)上,你使用的那些第三方應(yīng)用程序、框架會(huì)通過XML約束的方式強(qiáng)制規(guī)定配置文件中可以寫什么和怎么寫 XML基本語法這個(gè)知識(shí)點(diǎn)的定位是:我們不需要從零開始,從頭到尾的一行一行編寫XML文檔,而是在第三方應(yīng)用程序、框架已提供的配置文件的基礎(chǔ)上修改。要改成什么樣取決于你的需求,而怎么改取決XML基本語法和具體的XML約束。

1.1 常見配置文件類型

properties文件,例如druid連接池就是使用properties文件作為配置文件XML文件,例如Tomcat就是使用XML文件作為配置文件YAML文件,例如SpringBoot就是使用YAML作為配置文件json文件,通常用來做文件傳輸,也可以用來做前端或者移動(dòng)端的配置文件等等…

1.1.1 properties配置文件

示例

atguigu.jdbc.url=jdbc:mysql://localhost:3306/atguigu

atguigu.jdbc.driver=com.mysql.cj.jdbc.Driver

atguigu.jdbc.username=root

atguigu.jdbc.password=root

語法規(guī)范

由鍵值對(duì)組成鍵和值之間的符號(hào)是等號(hào)每一行都必須頂格寫,前面不能有空格之類的其他符號(hào)

1.1.2 xml配置文件

示例

張三

18

李四

20

XML的基本語法

XML的基本語法和HTML的基本語法簡(jiǎn)直如出一轍。其實(shí)這不是偶然的,XML基本語法+HTML約束=HTML語法。在邏輯上HTML確實(shí)是XML的子集。

XML文檔聲明 這部分基本上就是固定格式,要注意的是文檔聲明一定要從第一行第一列開始寫

根標(biāo)簽

根標(biāo)簽有且只能有一個(gè)。 標(biāo)簽關(guān)閉

雙標(biāo)簽:開始標(biāo)簽和結(jié)束標(biāo)簽必須成對(duì)出現(xiàn)。單標(biāo)簽:?jiǎn)螛?biāo)簽在標(biāo)簽內(nèi)關(guān)閉。 標(biāo)簽嵌套

可以嵌套,但是不能交叉嵌套。 注釋不能嵌套標(biāo)簽名、屬性名建議使用小寫字母屬性

屬性必須有值屬性值必須加引號(hào),單雙都行

XML的約束(稍微了解)

將來我們主要就是根據(jù)XML約束中的規(guī)定來編寫XML配置文件,而且會(huì)在我們編寫XML的時(shí)候根據(jù)約束來提示我們編寫, 而XML約束主要包括DTD和Schema兩種。

DTDSchema

Schema約束要求我們一個(gè)XML文檔中,所有標(biāo)簽,所有屬性都必須在約束中有明確的定義。

下面我們以web.xml的約束聲明為例來做個(gè)說明:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

1.2 DOM4J進(jìn)行XML解析

1.2.1 DOM4J的使用步驟

導(dǎo)入jar包 dom4j.jar創(chuàng)建解析器對(duì)象(SAXReader)解析xml 獲得Document對(duì)象獲取根節(jié)點(diǎn)RootElement獲取根節(jié)點(diǎn)下的子節(jié)點(diǎn)

1.2.2 DOM4J的API介紹

1.創(chuàng)建SAXReader對(duì)象

SAXReader saxReader = new SAXReader();

2. 解析XML獲取Document對(duì)象: 需要傳入要解析的XML文件的字節(jié)輸入流

Document document = reader.read(inputStream);

3. 獲取文檔的根標(biāo)簽

Element rootElement = documen.getRootElement()

4. 獲取標(biāo)簽的子標(biāo)簽

//獲取所有子標(biāo)簽

List sonElementList = rootElement.elements();

//獲取指定標(biāo)簽名的子標(biāo)簽

List sonElementList = rootElement.elements("標(biāo)簽名");

5. 獲取標(biāo)簽體內(nèi)的文本

String text = element.getText();

6. 獲取標(biāo)簽的某個(gè)屬性的值

String value = element.attributeValue("屬性名");

二 Tomcat10

2.1 WEB服務(wù)器

Web服務(wù)器通常由硬件和軟件共同構(gòu)成。

硬件:電腦,提供服務(wù)供其它客戶電腦訪問軟件:電腦上安裝的服務(wù)器軟件,安裝后能提供服務(wù)給網(wǎng)絡(luò)中的其他計(jì)算機(jī),將本地文件映射成一個(gè)虛擬的url地址供網(wǎng)絡(luò)中的其他人訪問。

常見的JavaWeb服務(wù)器:

Tomcat(Apache):當(dāng)前應(yīng)用最廣的JavaWeb服務(wù)器Jetty:更輕量級(jí)、更靈活的servlet容器JBoss(Redhat紅帽):支持JavaEE,應(yīng)用比較廣EJB容器 –> SSH輕量級(jí)的框架代替GlassFish(Orcale):Oracle開發(fā)JavaWeb服務(wù)器,應(yīng)用不是很廣Resin(Caucho):支持JavaEE,應(yīng)用越來越廣Weblogic(Orcale):要錢的!支持JavaEE,適合大型項(xiàng)目Websphere(IBM):要錢的!支持JavaEE,適合大型項(xiàng)目

2.2 Tomcat服務(wù)器

2.2.1 簡(jiǎn)介

Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開發(fā)而成。最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),因?yàn)門omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。

2.2.2 安裝

版本

版本:企業(yè)用的比較廣泛的是8.0和9.0,目前比較新正式發(fā)布版本是Tomcat10.0, Tomcat11仍然處于測(cè)試階段。JAVAEE 版本和Servlet版本號(hào)對(duì)應(yīng)關(guān)系 Jakarta EE Releases

Servlet VersionEE Version6.1Jakarta EE ?6.0Jakarta EE 105.0Jakarta EE 9/9.14.0JAVA EE 83.1JAVA EE 73.1JAVA EE 73.0JAVAEE 6

Tomcat 版本和Servlet版本之間的對(duì)應(yīng)關(guān)系

Servlet Version**Tomcat ** VersionJDK Version6.111.0.x17 and later6.010.1.x11 and later5.010.0.x (superseded)8 and later4.09.0.x8 and later3.18.5.x7 and later3.18.0.x (superseded)7 and later3.07.0.x (archived)6 and later (7 and later for WebSocket)

下載

Tomcat官方網(wǎng)站:http://tomcat.apache.org/安裝版:需要安裝,一般不考慮使用。解壓版: 直接解壓縮使用,我們使用的版本。

安裝

正確安裝JDK并配置JAVA_HOME(以JDK17為例 https://injdk.cn中可以下載各種版本的JDK)

解壓tomcat到非中文無空格目錄

點(diǎn)擊bin/startup.bat啟動(dòng)

打開瀏覽器輸入 http://localhost:8080訪問測(cè)試

直接關(guān)閉窗口或者運(yùn)行 bin/shutdown.bat關(guān)閉tomcat

處理dos窗口日志中文亂碼問題: 修改conf/logging.properties,將所有的UTF-8修改為GBK

修改前

修改后

重啟測(cè)試

2.3 Tomcat目錄及測(cè)試

C:\Program4java\apache-tomcat-10.1.7 這個(gè)目錄下直接包含Tomcat的bin目錄,conf目錄等,我們稱之為Tomcat的安裝目錄或根目錄。

bin:該目錄下存放的是二進(jìn)制可執(zhí)行文件,如果是安裝版,那么這個(gè)目錄下會(huì)有兩個(gè)exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制臺(tái)下啟動(dòng)Tomcat,后者是彈出GUI窗口啟動(dòng)Tomcat;如果是解壓版,那么會(huì)有startup.bat和shutdown.bat文件,startup.bat用來啟動(dòng)Tomcat,但需要先配置JAVA_HOME環(huán)境變量才能啟動(dòng),shutdawn.bat用來停止Tomcat; conf:這是一個(gè)非常非常重要的目錄,這個(gè)目錄下有四個(gè)最為重要的文件:

server.xml:配置整個(gè)服務(wù)器信息。例如修改端口號(hào)。默認(rèn)HTTP請(qǐng)求的端口號(hào)是:8080 tomcat-users.xml:存儲(chǔ)tomcat用戶的文件,這里保存的是tomcat的用戶名及密碼,以及用戶的角色信息??梢园粗撐募械淖⑨屝畔⑻砑觮omcat用戶,然后就可以在Tomcat主頁中進(jìn)入Tomcat Manager頁面了;

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"

version="1.0">

password="admin"

roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"

/>

web.xml:部署描述符文件,這個(gè)文件中注冊(cè)了很多MIME類型,即文檔類型。這些MIME類型是客戶端與服務(wù)器之間說明文檔類型的,如用戶請(qǐng)求一個(gè)html網(wǎng)頁,那么服務(wù)器還會(huì)告訴客戶端瀏覽器響應(yīng)的文檔是text/html類型的,這就是一個(gè)MIME類型??蛻舳藶g覽器通過這個(gè)MIME類型就知道如何處理它了。當(dāng)然是在瀏覽器中顯示這個(gè)html文件了。但如果服務(wù)器響應(yīng)的是一個(gè)exe文件,那么瀏覽器就不可能顯示它,而是應(yīng)該彈出下載窗口才對(duì)。MIME就是用來說明文檔的內(nèi)容是什么類型的! context.xml:對(duì)所有應(yīng)用的統(tǒng)一配置,通常我們不會(huì)去配置它。 lib:Tomcat的類庫(kù),里面是一大堆jar文件。如果需要添加Tomcat依賴的jar文件,可以把它放到這個(gè)目錄中,當(dāng)然也可以把應(yīng)用依賴的jar文件放到這個(gè)目錄中,這個(gè)目錄中的jar所有項(xiàng)目都可以共享之,但這樣你的應(yīng)用放到其他Tomcat下時(shí)就不能再共享這個(gè)目錄下的jar包了,所以建議只把Tomcat需要的jar包放到這個(gè)目錄下; logs:這個(gè)目錄中都是日志文件,記錄了Tomcat啟動(dòng)和關(guān)閉的信息,如果啟動(dòng)Tomcat時(shí)有錯(cuò)誤,那么異常也會(huì)記錄在日志文件中。 temp:存放Tomcat的臨時(shí)文件,這個(gè)目錄下的東西可以在停止Tomcat后刪除! webapps:存放web項(xiàng)目的目錄,其中每個(gè)文件夾都是一個(gè)項(xiàng)目;如果這個(gè)目錄下已經(jīng)存在了目錄,那么都是tomcat自帶的項(xiàng)目。其中ROOT是一個(gè)特殊的項(xiàng)目,在地址欄中訪問:http://127.0.0.1:8080,沒有給出項(xiàng)目目錄時(shí),對(duì)應(yīng)的就是ROOT項(xiàng)目.http://localhost:8080/examples,進(jìn)入示例項(xiàng)目。其中examples"就是項(xiàng)目名,即文件夾的名字。 work:運(yùn)行時(shí)生成的文件,最終運(yùn)行的文件都在這里。通過webapps中的項(xiàng)目生成的!可以把這個(gè)目錄下的內(nèi)容刪除,再次運(yùn)行時(shí)會(huì)生再次生成work目錄。當(dāng)客戶端用戶訪問一個(gè)JSP文件時(shí),Tomcat會(huì)通過JSP生成Java文件,然后再編譯Java文件生成class文件,生成的java和class文件都會(huì)存放到這個(gè)目錄下。 LICENSE:許可證。 NOTICE:說明文件。

2.4 WEB項(xiàng)目的標(biāo)準(zhǔn)結(jié)構(gòu)

一個(gè)標(biāo)準(zhǔn)的可以用于發(fā)布的WEB項(xiàng)目標(biāo)準(zhǔn)結(jié)構(gòu)如下

app 本應(yīng)用根目錄

static 非必要目錄,約定俗成的名字,一般在此處放靜態(tài)資源 ( css js img)WEB-INF 必要目錄,必須叫WEB-INF,受保護(hù)的資源目錄,瀏覽器通過url不可以直接訪問的目錄

classes 必要目錄,src下源代碼,配置文件,編譯后會(huì)在該目錄下,web項(xiàng)目中如果沒有源碼,則該目錄不會(huì)出現(xiàn)lib 必要目錄,項(xiàng)目依賴的jar編譯后會(huì)出現(xiàn)在該目錄下,web項(xiàng)目要是沒有依賴任何jar,則該目錄不會(huì)出現(xiàn)web.xml 必要文件,web項(xiàng)目的基本配置文件. 較新的版本中可以沒有該文件,但是學(xué)習(xí)過程中還是需要該文件 index.html 非必要文件,index.html/index.htm/index.jsp為默認(rèn)的歡迎頁

url的組成部分和項(xiàng)目中資源的對(duì)應(yīng)關(guān)系

2.5 WEB項(xiàng)目部署的方式

方式1 直接將編譯好的項(xiàng)目放在webapps目錄下 (已經(jīng)演示)

方式2 將編譯好的項(xiàng)目打成war包放在webapps目錄下,tomcat啟動(dòng)后會(huì)自動(dòng)解壓war包(其實(shí)和第一種一樣)

方式3 可以將項(xiàng)目放在非webapps的其他目錄下,在tomcat中通過配置文件指向app的實(shí)際磁盤路徑

在磁盤的自定義目錄上準(zhǔn)備一個(gè)app

在tomcat的conf下創(chuàng)建Catalina/localhost目錄,并在該目錄下準(zhǔn)備一個(gè)app.xml文件

啟動(dòng)tomcat訪問測(cè)試即可

2.6 IDEA中開發(fā)并部署運(yùn)行WEB項(xiàng)目

2.6.1 IDEA關(guān)聯(lián)本地Tomcat

可以在創(chuàng)建項(xiàng)目前設(shè)置本地tomcat,也可以在打開某個(gè)項(xiàng)目的狀態(tài)下找到settings

找到 Build,Execution,Eeployment下的Application Servers ,找到+號(hào)

選擇Tomcat Server

選擇tomcat的安裝目錄

點(diǎn)擊ok

關(guān)聯(lián)完畢

2.6.2 IDEA創(chuàng)建web工程

推薦先創(chuàng)建一個(gè)空項(xiàng)目,這樣可以在一個(gè)空項(xiàng)目下同時(shí)存在多個(gè)modules,不用后續(xù)來回切換之前的項(xiàng)目,當(dāng)然也可以忽略此步直接創(chuàng)建web項(xiàng)目

檢查項(xiàng)目的SDK,語法版本,以及項(xiàng)目編譯后的輸出目錄

先創(chuàng)建一個(gè)普通的JAVA項(xiàng)目

檢查各項(xiàng)信息是否填寫有誤

創(chuàng)建完畢后,為項(xiàng)目添加Tomcat依賴

選擇modules,添加 framework support

選擇Web Application 注意Version,勾選 Create web.xml

刪除index.jsp ,替換為 index.html

處理配置文件

在工程下創(chuàng)建resources目錄,專門用于存放配置文件(都放在src下也行,單獨(dú)存放可以盡量避免文件集中存放造成的混亂)標(biāo)記目錄為資源目錄,不標(biāo)記的話則該目錄不參與編譯

標(biāo)記完成后,顯示效果如下

處理依賴jar包問題

在WEB-INF下創(chuàng)建lib目錄必須在WEB-INF下,且目錄名必須叫l(wèi)ib!!!復(fù)制jar文件進(jìn)入lib目錄

將lib目錄添加為當(dāng)前項(xiàng)目的依賴,后續(xù)可以用maven統(tǒng)一解決

環(huán)境級(jí)別推薦選擇module 級(jí)別,降低對(duì)其他項(xiàng)目的影響,name可以空著不寫

查看當(dāng)前項(xiàng)目有那些環(huán)境依賴

在此位置,可以通過-號(hào)解除依賴

2.6.3 IDEA部署-運(yùn)行web項(xiàng)目

檢查idea是否識(shí)別modules為web項(xiàng)目并存在將項(xiàng)目構(gòu)建成發(fā)布結(jié)構(gòu)的配置

就是檢查工程目錄下,web目錄有沒有特殊的識(shí)別標(biāo)記

以及artifacts下,有沒有對(duì)應(yīng) _war_exploded,如果沒有,就點(diǎn)擊+號(hào)添加

點(diǎn)擊向下箭頭,出現(xiàn) Edit Configurations選項(xiàng)

出現(xiàn)運(yùn)行配置界面

點(diǎn)擊+號(hào),添加本地tomcat服務(wù)器

因?yàn)镮DEA 只關(guān)聯(lián)了一個(gè)Tomcat,紅色部分就只有一個(gè)Tomcat可選

選擇Deployment,通過+添加要部署到Tomcat中的artifact

applicationContext中是默認(rèn)的項(xiàng)目上下文路徑,也就是url中需要輸入的路徑,這里可以自己定義,可以和工程名稱不一樣,也可以不寫,但是要保留/,我們這里暫時(shí)就用默認(rèn)的

點(diǎn)擊apply 應(yīng)用后,回到Server部分. After Launch是配置啟動(dòng)成功后,是否默認(rèn)自動(dòng)打開瀏覽器并輸入U(xiǎn)RL中的地址,HTTP port是Http連接器目前占用的端口號(hào)

點(diǎn)擊OK后,啟動(dòng)項(xiàng)目,訪問測(cè)試

綠色箭頭是正常運(yùn)行模式"小蟲子"是debug運(yùn)行模式

點(diǎn)擊后,查看日志狀態(tài)是否有異常

瀏覽器自動(dòng)打開并自動(dòng)訪問了index.html歡迎頁

工程結(jié)構(gòu)和可以發(fā)布的項(xiàng)目結(jié)構(gòu)之間的目錄對(duì)應(yīng)關(guān)系

IDEA部署并運(yùn)行項(xiàng)目的原理

idea并沒有直接進(jìn)將編譯好的項(xiàng)目放入tomcat的webapps中idea根據(jù)關(guān)聯(lián)的tomcat,創(chuàng)建了一個(gè)tomcat副本,將項(xiàng)目部署到了這個(gè)副本中idea的tomcat副本在C:\用戶\當(dāng)前用戶\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中idea的tomcat副本并不是一個(gè)完整的tomcat,副本里只是準(zhǔn)備了和當(dāng)前項(xiàng)目相關(guān)的配置文件而已idea啟動(dòng)tomcat時(shí),是讓本地tomcat程序按照tomcat副本里的配置文件運(yùn)行idea的tomcat副本部署項(xiàng)目的模式是通過conf/Catalina/localhost/*.xml配置文件的形式實(shí)現(xiàn)項(xiàng)目部署的

三 HTTP協(xié)議

3.1 HTTP簡(jiǎn)介

HTTP 超文本傳輸協(xié)議 (HTTP-Hyper Text transfer protocol),是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡(jiǎn)捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。它于1990年提出,經(jīng)過十幾年的使用與發(fā)展,得到不斷地完善和擴(kuò)展。它是一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議??蛻舳伺c服務(wù)端通信時(shí)傳輸?shù)膬?nèi)容我們稱之為報(bào)文。HTTP協(xié)議就是規(guī)定報(bào)文的格式。HTTP就是一個(gè)通信規(guī)則,這個(gè)規(guī)則規(guī)定了客戶端發(fā)送給服務(wù)器的報(bào)文格式,也規(guī)定了服務(wù)器發(fā)送給客戶端的報(bào)文格式。實(shí)際我們要學(xué)習(xí)的就是這兩種報(bào)文。客戶端發(fā)送給服務(wù)器的稱為"請(qǐng)求報(bào)文",服務(wù)器發(fā)送給客戶端的稱為"響應(yīng)報(bào)文"。

3.1.1 發(fā)展歷程

HTTP/0.9

蒂姆伯納斯李是一位英國(guó)計(jì)算機(jī)科學(xué)家,也是萬維網(wǎng)的發(fā)明者。他在 1989 年創(chuàng)建了單行 HTTP 協(xié)議。它只是返回一個(gè)網(wǎng)頁。這個(gè)協(xié)議在 1991 年被命名為 HTTP/0.9。

HTTP/1.0

1996 年,HTTP/1.0 發(fā)布。該規(guī)范是顯著擴(kuò)大,并且支持三種請(qǐng)求方法:GET,Head,和POST。HTTP/1.0 相對(duì)于 HTTP/0.9 的改進(jìn)如下:

每個(gè)請(qǐng)求都附加了 HTTP 版本。在響應(yīng)開始時(shí)發(fā)送狀態(tài)代碼。請(qǐng)求和響應(yīng)都包含 HTTP 報(bào)文頭。內(nèi)容類型能夠傳輸 HTML 文件以外的文檔。 但是,HTTP/1.0 不是官方標(biāo)準(zhǔn)。

HTTP/1.1

HTTP 的第一個(gè)標(biāo)準(zhǔn)化版本 HTTP/1.1 ( RFC 2068 ) 于 1997 年初發(fā)布,支持七種請(qǐng)求方法:OPTIONS,GET,HEAD,POST,PUT,DELETE,和TRACE HTTP/1.1 是 HTTP 1.0 的增強(qiáng):

虛擬主機(jī)允許從單個(gè) IP 地址提供多個(gè)域。 持久連接和流水線連接允許 Web 瀏覽器通過單個(gè)持久連接發(fā)送多個(gè)請(qǐng)求。 緩存支持節(jié)省了帶寬并使響應(yīng)速度更快。 HTTP/1.1 在接下來的 15 年左右將非常穩(wěn)定。 在此期間,出現(xiàn)了 HTTPS(安全超文本傳輸協(xié)議)。它是使用 SSL/TLS 進(jìn)行安全加密通信的 HTTP 的安全版本。

HTTP/2

由IETF在2015年發(fā)布。HTTP/2旨在提高Web性能,減少延遲,增加安全性,使Web應(yīng)用更加快速、高效和可靠。

多路復(fù)用:HTTP/2 允許同時(shí)發(fā)送多個(gè)請(qǐng)求和響應(yīng),而不是像 HTTP/1.1 一樣只能一個(gè)一個(gè)地處理。這樣可以減少延遲,提高效率,提高網(wǎng)絡(luò)吞吐量。二進(jìn)制傳輸:HTTP/2 使用二進(jìn)制協(xié)議,與 HTTP/1.1 使用的文本協(xié)議不同。二進(jìn)制協(xié)議可以更快地解析,更有效地傳輸數(shù)據(jù),減少了傳輸過程中的開銷和延遲。頭部壓縮:HTTP/2 使用 HPACK 算法對(duì) HTTP 頭部進(jìn)行壓縮,減少了頭部傳輸?shù)臄?shù)據(jù)量,從而減少了網(wǎng)絡(luò)延遲。服務(wù)器推送:HTTP/2 支持服務(wù)器推送,允許服務(wù)器在客戶端請(qǐng)求之前推送資源,以提高性能。改進(jìn)的安全性:HTTP/2 默認(rèn)使用 TLS(Transport Layer Security)加密傳輸數(shù)據(jù),提高了安全性。兼容 HTTP/1.1:HTTP/2 可以與 HTTP/1.1 共存,服務(wù)器可以同時(shí)支持 HTTP/1.1 和 HTTP/2。如果客戶端不支持 HTTP/2,服務(wù)器可以回退到 HTTP/1.1。

HTTP/3

于 2021 年 5 月 27 日發(fā)布 , HTTP/3 是一種新的、快速、可靠且安全的協(xié)議,適用于所有形式的設(shè)備。 HTTP/3 沒有使用 TCP,而是使用谷歌在 2012 年開發(fā)的新協(xié)議 QUIC HTTP/3 是繼 HTTP/1.1 和 HTTP/2之后的第三次重大修訂。 HTTP/3 帶來了革命性的變化,以提高 Web 性能和安全性。設(shè)置 HTTP/3 網(wǎng)站需要服務(wù)器和瀏覽器支持。 目前,谷歌云、Cloudflare和Fastly支持 HTTP/3。Chrome、Firefox、Edge、Opera 和一些移動(dòng)瀏覽器支持 HTTP/3。

3.1.2 HTTP協(xié)議的會(huì)話方式

瀏覽器與服務(wù)器之間的通信過程要經(jīng)歷四個(gè)步驟

瀏覽器與WEB服務(wù)器的連接過程是短暫的,每次連接只處理一個(gè)請(qǐng)求和響應(yīng)。對(duì)每一個(gè)頁面的訪問,瀏覽器與WEB服務(wù)器都要建立一次單獨(dú)的連接。瀏覽器到WEB服務(wù)器之間的所有通訊都是完全獨(dú)立分開的請(qǐng)求和響應(yīng)對(duì)。

3.1.3 HTTP1.0和HTTP1.1的區(qū)別

在HTTP1.0版本中,瀏覽器請(qǐng)求一個(gè)帶有圖片的網(wǎng)頁,會(huì)由于下載圖片而與服務(wù)器之間開啟一個(gè)新的連接;但在HTTP1.1版本中,允許瀏覽器在拿到當(dāng)前請(qǐng)求對(duì)應(yīng)的全部資源后再斷開連接,提高了效率。

3.1.4 在瀏覽器中通過F12工具抓取請(qǐng)求響應(yīng)報(bào)文包

幾乎所有的PC端瀏覽器都支持了F12開發(fā)者工具,只不過不同的瀏覽器工具顯示的窗口有差異

3.2 請(qǐng)求和響應(yīng)報(bào)文

3.2.1 報(bào)文的格式

主體上分為報(bào)文首部和報(bào)文主體,中間空行隔開

報(bào)文部首可以繼續(xù)細(xì)分為 “行” 和 “頭”

3.2.2 請(qǐng)求報(bào)文

客戶端發(fā)給服務(wù)端的報(bào)文

請(qǐng)求報(bào)文格式

請(qǐng)求首行(請(qǐng)求行); GET/POST 資源路徑?參數(shù) HTTP/1.1請(qǐng)求頭信息(請(qǐng)求頭);空行;請(qǐng)求體;POST請(qǐng)求才有請(qǐng)求體

瀏覽器 f12 網(wǎng)絡(luò)下查看請(qǐng)求數(shù)據(jù)包

form表單發(fā)送GET請(qǐng)求特點(diǎn)

1、由于請(qǐng)求參數(shù)在請(qǐng)求首行中已經(jīng)攜帶了,所以沒有請(qǐng)求體,也沒有請(qǐng)求空行 2、請(qǐng)求參數(shù)拼接在url地址中,地址欄可見[url?name1=value1&name2=value2],不安全 3、由于參數(shù)在地址欄中攜帶,所以由大小限制[地址欄數(shù)據(jù)大小一般限制為4k],只能攜帶純文本 4、get請(qǐng)求參數(shù)只能上傳文本數(shù)據(jù) 5、沒有請(qǐng)求體。所以封裝和解析都快,效率高, 瀏覽器默認(rèn)提交的請(qǐng)求都是get請(qǐng)求比如:地址欄輸入回車,超鏈接,表單默認(rèn)的提交方式

查看GET請(qǐng)求行,請(qǐng)求頭,請(qǐng)求體

請(qǐng)求行組成部分

請(qǐng)求方式 GET訪問服務(wù)器的資源路徑?參數(shù)1=值1&參數(shù)2=值2 … …協(xié)議及版本 HTTP/1.1

GET /05_web_tomcat/login_success.html?username=admin&password=123213 HTTP/1.1

請(qǐng)求頭

-主機(jī)虛擬地址

Host: localhost:8080

-長(zhǎng)連接

Connection: keep-alive

-請(qǐng)求協(xié)議的自動(dòng)升級(jí)[http的請(qǐng)求,服務(wù)器卻是https的,瀏覽器自動(dòng)會(huì)將請(qǐng)求協(xié)議升級(jí)為https的]

Upgrade-Insecure-Requests: 1

- 用戶系統(tǒng)信息

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36

- 瀏覽器支持的文件類型

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

- 當(dāng)前頁面的上一個(gè)頁面的路徑[當(dāng)前頁面通過哪個(gè)頁面跳轉(zhuǎn)過來的]: 可以通過此路徑跳轉(zhuǎn)回上一個(gè)頁面, 廣告計(jì)費(fèi),防止盜鏈

Referer: http://localhost:8080/05_web_tomcat/login.html

- 瀏覽器支持的壓縮格式

Accept-Encoding: gzip, deflate, br

- 瀏覽器支持的語言

Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7

請(qǐng)求空行 請(qǐng)求體

GET請(qǐng)求數(shù)據(jù)不放在請(qǐng)求體

form表單發(fā)送post請(qǐng)求特點(diǎn)

1、POST請(qǐng)求有請(qǐng)求體,而GET請(qǐng)求沒有請(qǐng)求體。 2、post請(qǐng)求數(shù)據(jù)在請(qǐng)求體中攜帶,請(qǐng)求體數(shù)據(jù)大小沒有限制,可以用來上傳所有內(nèi)容[文件、文本] 3、只能使用post請(qǐng)求上傳文件 4、post請(qǐng)求報(bào)文多了和請(qǐng)求體相關(guān)的配置[請(qǐng)求頭] 5、地址欄參數(shù)不可見,相對(duì)安全 6、post效率比get低

POST請(qǐng)求要求將form標(biāo)簽的method的屬性設(shè)置為post

查看post的請(qǐng)求行 請(qǐng)求頭 請(qǐng)求體

請(qǐng)求行組成部分

請(qǐng)求方式 POST訪問服務(wù)器的資源路徑?參數(shù)1=值1&參數(shù)2=值2 … …協(xié)議及版本 HTTP/1.1

POST /05_web_tomcat/login_success.html HTTP/1.1

請(qǐng)求頭

Host: localhost:8080

Connection: keep-alive

Content-Length: 31 -請(qǐng)求體內(nèi)容的長(zhǎng)度

Cache-Control: max-age=0 -無緩存

Origin: http://localhost:8080

Upgrade-Insecure-Requests: 1 -協(xié)議的自動(dòng)升級(jí)

Content-Type: application/x-www-form-urlencoded -請(qǐng)求體內(nèi)容類型[服務(wù)器根據(jù)類型解析請(qǐng)求體參數(shù)]

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Referer: http://localhost:8080/05_web_tomcat/login.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7

Cookie:JSESSIONID-

請(qǐng)求空行 請(qǐng)求體:瀏覽器提交給服務(wù)器的數(shù)據(jù)

username=admin&password=1232131

3.2.3 響應(yīng)報(bào)文

響應(yīng)報(bào)文格式

響應(yīng)首行(響應(yīng)行); 協(xié)議/版本 狀態(tài)碼 狀態(tài)碼描述響應(yīng)頭信息(響應(yīng)頭);空行;響應(yīng)體;

響應(yīng)行組成部分

協(xié)議及版本 HTTP/1.1響應(yīng)狀態(tài)碼 200狀態(tài)描述 OK (缺省)

HTTP/1.1 200 OK

說明:響應(yīng)協(xié)議為HTTP1.1,響應(yīng)狀態(tài)碼為200,表示請(qǐng)求成功;

響應(yīng)頭

Server: Apache-Coyote/1.1 服務(wù)器的版本信息

Accept-Ranges: bytes

ETag: W/"157-1534126125811"

Last-Modified: Mon, 13 Aug 2018 02:08:45 GMT

Content-Type: text/html 響應(yīng)體數(shù)據(jù)的類型[瀏覽器根據(jù)類型解析響應(yīng)體數(shù)據(jù)]

Content-Length: 157 響應(yīng)體內(nèi)容的字節(jié)數(shù)

Date: Mon, 13 Aug 2018 02:47:57 GMT 響應(yīng)的時(shí)間,這可能會(huì)有8小時(shí)的時(shí)區(qū)差

響應(yīng)體

Insert title here

恭喜你,登錄成功了...

響應(yīng)狀態(tài)碼:響應(yīng)碼對(duì)瀏覽器來說很重要,它告訴瀏覽器響應(yīng)的結(jié)果。比較有代表性的響應(yīng)碼如下:

200: 請(qǐng)求成功,瀏覽器會(huì)把響應(yīng)體內(nèi)容(通常是html)顯示在瀏覽器中;302: 重定向,當(dāng)響應(yīng)碼為302時(shí),表示服務(wù)器要求瀏覽器重新再發(fā)一個(gè)請(qǐng)求,服務(wù)器會(huì)發(fā)送一個(gè)響應(yīng)頭Location指定新請(qǐng)求的URL地址;304: 使用了本地緩存404: 請(qǐng)求的資源沒有找到,說明客戶端錯(cuò)誤的請(qǐng)求了不存在的資源;405: 請(qǐng)求的方式不允許500: 請(qǐng)求資源找到了,但服務(wù)器內(nèi)部出現(xiàn)了錯(cuò)誤;

更多的響應(yīng)狀態(tài)碼

狀態(tài)碼狀態(tài)碼英文描述中文含義1**100Continue繼續(xù)??蛻舳藨?yīng)繼續(xù)其請(qǐng)求101Switching Protocols切換協(xié)議。服務(wù)器根據(jù)客戶端的請(qǐng)求切換協(xié)議。只能切換到更高級(jí)的協(xié)議,例如,切換到HTTP的新版本協(xié)議2**200OK請(qǐng)求成功。一般用于GET與POST請(qǐng)求201Created已創(chuàng)建。成功請(qǐng)求并創(chuàng)建了新的資源202Accepted已接受。已經(jīng)接受請(qǐng)求,但未處理完成203Non-Authoritative Information非授權(quán)信息。請(qǐng)求成功。但返回的meta信息不在原始的服務(wù)器,而是一個(gè)副本204No Content無內(nèi)容。服務(wù)器成功處理,但未返回內(nèi)容。在未更新網(wǎng)頁的情況下,可確保瀏覽器繼續(xù)顯示當(dāng)前文檔205Reset Content重置內(nèi)容。服務(wù)器處理成功,用戶終端(例如:瀏覽器)應(yīng)重置文檔視圖??赏ㄟ^此返回碼清除瀏覽器的表單域206Partial Content部分內(nèi)容。服務(wù)器成功處理了部分GET請(qǐng)求3**300Multiple Choices多種選擇。請(qǐng)求的資源可包括多個(gè)位置,相應(yīng)可返回一個(gè)資源特征與地址的列表用于用戶終端(例如:瀏覽器)選擇301Moved Permanently永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。今后任何新的請(qǐng)求都應(yīng)使用新的URI代替302Found臨時(shí)移動(dòng)。與301類似。但資源只是臨時(shí)被移動(dòng)??蛻舳藨?yīng)繼續(xù)使用原有URI303See Other查看其它地址。與301類似。使用GET和POST請(qǐng)求查看304Not Modified未修改。所請(qǐng)求的資源未修改,服務(wù)器返回此狀態(tài)碼時(shí),不會(huì)返回任何資源??蛻舳送ǔ?huì)緩存訪問過的資源,通過提供一個(gè)頭信息指出客戶端希望只返回在指定日期之后修改的資源305Use Proxy使用代理。所請(qǐng)求的資源必須通過代理訪問306Unused已經(jīng)被廢棄的HTTP狀態(tài)碼307Temporary Redirect臨時(shí)重定向。與302類似。使用GET請(qǐng)求重定向4**400Bad Request客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法理解401Unauthorized請(qǐng)求要求用戶的身份認(rèn)證402Payment Required保留,將來使用403Forbidden服務(wù)器理解請(qǐng)求客戶端的請(qǐng)求,但是拒絕執(zhí)行此請(qǐng)求404Not Found服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁)。通過此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無法找到"的個(gè)性頁面405Method Not Allowed客戶端請(qǐng)求中的方法被禁止406Not Acceptable服務(wù)器無法根據(jù)客戶端請(qǐng)求的內(nèi)容特性完成請(qǐng)求407Proxy Authentication Required請(qǐng)求要求代理的身份認(rèn)證,與401類似,但請(qǐng)求者應(yīng)當(dāng)使用代理進(jìn)行授權(quán)408Request Time-out服務(wù)器等待客戶端發(fā)送的請(qǐng)求時(shí)間過長(zhǎng),超時(shí)409Conflict服務(wù)器完成客戶端的 PUT 請(qǐng)求時(shí)可能返回此代碼,服務(wù)器處理請(qǐng)求時(shí)發(fā)生了沖突410Gone客戶端請(qǐng)求的資源已經(jīng)不存在。410不同于404,如果資源以前有現(xiàn)在被永久刪除了可使用410代碼,網(wǎng)站設(shè)計(jì)人員可通過301代碼指定資源的新位置411Length Required服務(wù)器無法處理客戶端發(fā)送的不帶Content-Length的請(qǐng)求信息412Precondition Failed客戶端請(qǐng)求信息的先決條件錯(cuò)誤413Request Entity Too Large由于請(qǐng)求的實(shí)體過大,服務(wù)器無法處理,因此拒絕請(qǐng)求。為防止客戶端的連續(xù)請(qǐng)求,服務(wù)器可能會(huì)關(guān)閉連接。如果只是服務(wù)器暫時(shí)無法處理,則會(huì)包含一個(gè)Retry-After的響應(yīng)信息414Request-URI Too Large請(qǐng)求的URI過長(zhǎng)(URI通常為網(wǎng)址),服務(wù)器無法處理415Unsupported Media Type服務(wù)器無法處理請(qǐng)求附帶的媒體格式416Requested range not satisfiable客戶端請(qǐng)求的范圍無效417Expectation Failed服務(wù)器無法滿足Expect的請(qǐng)求頭信息5**500Internal Server Error服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求501Not Implemented服務(wù)器不支持請(qǐng)求的功能,無法完成請(qǐng)求502Bad Gateway作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從遠(yuǎn)程服務(wù)器接收到了一個(gè)無效的響應(yīng)503Service Unavailable由于超載或系統(tǒng)維護(hù),服務(wù)器暫時(shí)的無法處理客戶端的請(qǐng)求。延時(shí)的長(zhǎng)度可包含在服務(wù)器的Retry-After頭信息中504Gateway Time-out充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時(shí)從遠(yuǎn)端服務(wù)器獲取請(qǐng)求505HTTP Version not supported服務(wù)器不支持請(qǐng)求的HTTP協(xié)議的版本,無法完成處理

柚子快報(bào)邀請(qǐng)碼778899分享:tomcat XML

http://yzkb.51969.com/

相關(guān)文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19525339.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄