2020-03-16

(一)HTTP協(xié)議的概述

一、什么是HTTP協(xié)議

HTTP協(xié)議:規(guī)定了瀏覽器和服務(wù)器端的數(shù)據(jù)交互的格式

1、HTTP的特性

? ? (1)基于請(qǐng)求和響應(yīng)模型

? ? ? ? 必須要先有請(qǐng)求,后有響應(yīng)

? ? ? ? 請(qǐng)求和響應(yīng)必須成對(duì)出現(xiàn)

? ? (2)簡(jiǎn)單快捷

? ? ? ? 因?yàn)榘l(fā)送請(qǐng)求的時(shí)候只需要發(fā)送請(qǐng)求方式和請(qǐng)求路徑即可

2、HTTP的版本

HTTP1.0:短鏈接

HTTP1.1:長(zhǎng)鏈接

二、HTTP協(xié)議的抓包分析

1、分析HTTP協(xié)議

? ? (1)準(zhǔn)備工作

? ? ? ? 創(chuàng)建頁面

http://localhost:8080/web01/demo1.html

? ? ? ? 安裝HTTPWatch(IE)或者使用谷歌、火狐的F12工具

(2)請(qǐng)求部分

*************GET請(qǐng)求(只有請(qǐng)求行、請(qǐng)求頭)*************

GET /web01/demo2.html?name=aaa&sex=man HTTP/1.1

Host: localhost:8080

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36

Sec-Fetch-User: ?1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Sec-Fetch-Site: same-origin

Sec-Fetch-Mode: navigate

Referer: http://localhost:8080/web01/demo1.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

Cookie: Pycharm-8dbeb98c=1f31b81e-d44c-45f8-95c1-2b06c10aea65

*************POST請(qǐng)求(請(qǐng)求行、請(qǐng)求頭、請(qǐng)求體)*************

POST /web01/demo2.html HTTP/1.1

主機(jī)

Host: localhost:8080?

Connection: keep-alive

Content-Length: 18

Cache-Control: max-age=0

Origin: http://localhost:8080

Upgrade-Insecure-Requests: 1

內(nèi)容的類型

Content-Type: application/x-www-form-urlencoded

客戶端瀏覽器的類型

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36

Sec-Fetch-User: ?1

接收的數(shù)據(jù)格式

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Sec-Fetch-Site: same-origin

Sec-Fetch-Mode: navigate

請(qǐng)求的來源

Referer: http://localhost:8080/web01/demo1.html

支持壓縮的格式

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

Cookie: Pycharm-8dbeb98c=1f31b81e-d44c-45f8-95c1-2b06c10aea65

name=bbb&sex=woman

(3)響應(yīng)部分(響應(yīng)行、響應(yīng)頭、響應(yīng)體)

HTTP/1.1 200

Accept-Ranges: bytes

ETag: W/"145-1584323671836"

Last-Modified: Mon, 16 Mar 2020 01:54:31 GMT

Content-Type: text/html

Content-Length: 145

Date: Mon, 16 Mar 2020 01:59:05 GMT

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>Success!!!</h1>

</body>

</html>

三、HTTP協(xié)議之請(qǐng)求部分

1、請(qǐng)求行(紅色)

? (1)請(qǐng)求方式

? ? ? 請(qǐng)求方式有很多種,常用兩種:GET和POST

? ? ? GET和POST的區(qū)別?

? ? ? ? ? GET:請(qǐng)求的參數(shù)會(huì)顯示到地址欄,通常是有大小的限制,沒有請(qǐng)求體

? ? ? ? ? POST:請(qǐng)求的參數(shù)不會(huì)顯示到地址欄,POST沒有大小的限制,有請(qǐng)求體(請(qǐng)求參數(shù)),只有表單設(shè)置了method="post"才是post請(qǐng)求

? (2)請(qǐng)求路徑

? (3)協(xié)議版本

2、請(qǐng)求頭(藍(lán)色)

? (1)請(qǐng)求頭的格式一般都是一個(gè)key對(duì)應(yīng)一個(gè)value的,但也有一個(gè)key對(duì)應(yīng)多個(gè)value的情況

? (2)記住一些請(qǐng)求頭:

? ? ? Referer:代表網(wǎng)頁的來源(防盜鏈)

? ? ? User-Agent:獲得客戶端瀏覽器的類型

3、請(qǐng)求體(紫色)

? 只有POST請(qǐng)求方式才有請(qǐng)求體,而且請(qǐng)求體是POST方式的請(qǐng)求參數(shù)

四、HTTP協(xié)議之響應(yīng)部分

1、響應(yīng)行(紅色)

? ? 協(xié)議版本

? ? 狀態(tài)碼

? ? ? ? 200:代表響應(yīng)成功

? ? ? ? 302:需要進(jìn)行重定向操作

? ? ? ? 304:需要查找本地緩存

? ? ? ? 404:請(qǐng)求資源不存在

? ? ? ? 500:服務(wù)器內(nèi)部錯(cuò)誤

? ? 狀態(tài)碼描述

2、響應(yīng)頭(藍(lán)色)

? ? 通常一個(gè)key對(duì)應(yīng)一個(gè)value,也有一個(gè)key對(duì)應(yīng)多個(gè)value

? ? 記住響應(yīng)頭:

? ? ? ? Location:重定向的路徑

? ? ? ? Refresh:定時(shí)刷新

? ? ? ? Content-Disposition:文件下載的時(shí)候使用(不用瀏覽器默認(rèn)的方式打開,而是用下載的方式打開)

3、響應(yīng)體(紫色)

? ? 就是展示到瀏覽器上的頁面代碼

五、Servlet的概述與入門

1、什么是Servlet

? ? Servlet其實(shí)就是一個(gè)運(yùn)行在Web服務(wù)器上的小的Java程序,用于處理從Web客戶端發(fā)送的請(qǐng)求,并且對(duì)請(qǐng)求作出響應(yīng)

2、使用Servlet

編寫一個(gè)Java類實(shí)現(xiàn)Servlet的接口

配置Servlet

3、Servlet的入門

創(chuàng)建包和類

實(shí)現(xiàn)Servlet的接口

在web.xml中配置這個(gè)類

訪問Servlet

http://localhost:8080/web01/hello

4、Servlet的執(zhí)行流程

六、Servlet的實(shí)現(xiàn)關(guān)系

1、基本的實(shí)現(xiàn)關(guān)系

Servlet接口

? ? GenericServlet類:通用的Servlet,是一個(gè)無協(xié)議無關(guān)的Servlet

? ? ? ? HttpServlet類:Http專用的Servlet

2、關(guān)系實(shí)現(xiàn)的概述

SUN設(shè)計(jì)之初,是想以后的互聯(lián)網(wǎng)不單單只使用http協(xié)議,如果使用其它協(xié)議,都可以通過GenericServlet實(shí)現(xiàn)。HttpServlet是一個(gè)與協(xié)議相關(guān)的Servlet,是專門用來處理HTTP協(xié)議的請(qǐng)求的。通常編寫一個(gè)Servlet時(shí),一般都會(huì)讓這個(gè)Servlet繼承HttpServlet,并重寫service方法

在service方法內(nèi)部根據(jù)請(qǐng)求方式不同,會(huì)去執(zhí)行不同的doXxx的方法(例如GET請(qǐng)求執(zhí)行doGet方法、POST請(qǐng)求執(zhí)行doPost方法)

所以往往繼承了HttpServlet之后,不需要再重寫service方法了,只需重寫doGet和doPost方法即可。往往請(qǐng)求要處理的內(nèi)容代碼都是一致的,所以需要讓doGet和doPost相互調(diào)用,可以簡(jiǎn)化編程

七、使用Eclipse開發(fā)Servlet

1、新建Servlet

2、完成Servlet的配置


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Http&Servlet入門 (一)HTTP協(xié)議的概述 一、什么是HTTP協(xié)議 HTTP協(xié)議:規(guī)定了瀏覽器和服務(wù)器...
    你養(yǎng)豬嗎閱讀 123評(píng)論 0 0
  • 一.什么是HTTP協(xié)議 HTTP協(xié)議:規(guī)定了游覽器和服務(wù)器的數(shù)據(jù)相互格式 HTTP特性 1.基于請(qǐng)求和響應(yīng)模型 必...
    卡拉什尼科夫_8ca2閱讀 102評(píng)論 0 0
  • nginx的請(qǐng)求轉(zhuǎn)發(fā)算法,如何配置根據(jù)權(quán)重轉(zhuǎn)發(fā) 負(fù)載均衡策略:內(nèi)置策略:輪詢(默認(rèn))、加權(quán)輪詢(處理1次連接則權(quán)重...
    星冉子閱讀 516評(píng)論 0 1
  • JavaScript 初識(shí) 《① JS 速覽——進(jìn)入 JS 的世界》[編號(hào):js_01] 《② 運(yùn)算符、運(yùn)算符優(yōu)先...
    糖醋里脊120625閱讀 239評(píng)論 0 0
  • 今天下午我出來玩了
    薄其成閱讀 147評(píng)論 0 0

友情鏈接更多精彩內(nèi)容