一账锹、什么是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)建頁(yè)面
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)求的來(lái)源
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ì)顯示到地址欄熔脂,通常是有大小的限制佩研,沒(méi)有請(qǐng)求體
? ? ? ? ? POST:請(qǐng)求的參數(shù)不會(huì)顯示到地址欄,POST沒(méi)有大小的限制霞揉,有請(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)頁(yè)的來(lái)源(防盜鏈)
? ? ? 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)的方式打開(kāi)阶捆,而是用下載的方式打開(kāi))
3、響應(yīng)體(紫色)
? ? 就是展示到瀏覽器上的頁(yè)面代碼
五钦听、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è)類
訪問(wèn)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è)無(wú)協(xié)議無(wú)關(guān)的Servlet
? ? ? ? HttpServlet類:Http專用的Servlet
2、關(guān)系實(shí)現(xiàn)的概述
SUN設(shè)計(jì)之初柴钻,是想以后的互聯(lián)網(wǎng)不單單只使用http協(xié)議淮韭,如果使用其它協(xié)議,都可以通過(guò)GenericServlet實(shí)現(xiàn)贴届。HttpServlet是一個(gè)與協(xié)議相關(guān)的Servlet靠粪,是專門用來(lái)處理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開(kāi)發(fā)Servlet
1牍鞠、新建Servlet
2咖摹、完成Servlet的配置