Http&Servlet入門
(一)HTTP協議的概述
一、什么是HTTP協議
HTTP協議:規(guī)定了瀏覽器和服務器端的數據交互的格式
1、HTTP的特性
? ? (1)基于請求和響應模型
? ? ? ? 必須要先有請求,后有響應
? ? ? ? 請求和響應必須成對出現
? ? (2)簡單快捷
? ? ? ? 因為發(fā)送請求的時候只需要發(fā)送請求方式和請求路徑即可
2、HTTP的版本
HTTP1.0:短鏈接
HTTP1.1:長鏈接
二、HTTP協議的抓包分析
1、分析HTTP協議
? ? (1)準備工作
? ? ? ? 創(chuàng)建頁面
http://localhost:8080/web01/demo1.html
? ? ? ? 安裝HTTPWatch(IE)或者使用谷歌、火狐的F12工具
(2)請求部分
*************GET請求(只有請求行、請求頭)*************
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請求(請求行、請求頭、請求體)*************
POST /web01/demo2.html HTTP/1.1
主機
Host: localhost:8080?
Connection: keep-alive
Content-Length: 18
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
內容的類型
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
接收的數據格式
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
name=bbb&sex=woman
(3)響應部分(響應行、響應頭、響應體)
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協議之請求部分
1、請求行
?? (1)請求方式
? ? ?? 請求方式有很多種,常用兩種:GET和POST
? ? ?? GET和POST的區(qū)別?
? ? ? ? ?? GET:請求的參數會顯示到地址欄,通常是有大小的限制,沒有請求體
? ? ? ? ?? POST:請求的參數不會顯示到地址欄,POST沒有大小的限制,有請求體(請求參數),只有表單設置了method="post"才是post請求
?? (2)請求路徑
?? (3)協議版本
2、請求頭
?? (1)請求頭的格式一般都是一個key對應一個value的,但也有一個key對應多個value的情況
?? (2)記住一些請求頭:
? ? ?? Referer:代表網頁的來源(防盜鏈)
? ? ?? User-Agent:獲得客戶端瀏覽器的類型
3、請求體
?? 只有POST請求方式才有請求體,而且請求體是POST方式的請求參數
四、HTTP協議之響應部分
1、響應行
? ? 協議版本
? ? 狀態(tài)碼
? ? ? ? 200:代表響應成功
? ? ? ? 302:需要進行重定向操作
? ? ? ? 304:需要查找本地緩存
? ? ? ? 404:請求資源不存在
? ? ? ? 500:服務器內部錯誤
? ? 狀態(tài)碼描述
2、響應頭
? ? 通常一個key對應一個value,也有一個key對應多個value
? ? 記住響應頭:
? ? ? ? Location:重定向的路徑
? ? ? ? Refresh:定時刷新
? ? ? ? Content-Disposition:文件下載的時候使用(不用瀏覽器默認的方式打開,而是用下載的方式打開)
3、響應體
? ? 就是展示到瀏覽器上的頁面代碼
五、Servlet的概述與入門
1、什么是Servlet
? ? Servlet其實就是一個運行在Web服務器上的小的Java程序,用于處理從Web客戶端發(fā)送的請求,并且對請求作出響應
2、使用Servlet
編寫一個Java類實現Servlet的接口
配置Servlet
3、Servlet的入門
創(chuàng)建包和類
實現Servlet的接口
在web.xml中配置這個類
訪問Servlet
http://localhost:8080/web01/hello
4、Servlet的執(zhí)行流程
六、Servlet的實現關系
1、基本的實現關系
Servlet接口
? ? GenericServlet類:通用的Servlet,是一個無協議無關的Servlet
? ? ? ? HttpServlet類:Http專用的Servlet
2、關系實現的概述
SUN設計之初,是想以后的互聯網不單單只使用http協議,如果使用其它協議,都可以通過GenericServlet實現。HttpServlet是一個與協議相關的Servlet,是專門用來處理HTTP協議的請求的。通常編寫一個Servlet時,一般都會讓這個Servlet繼承HttpServlet,并重寫service方法
在service方法內部根據請求方式不同,會去執(zhí)行不同的doXxx的方法(例如GET請求執(zhí)行doGet方法、POST請求執(zhí)行doPost方法)
所以往往繼承了HttpServlet之后,不需要再重寫service方法了,只需重寫doGet和doPost方法即可。往往請求要處理的內容代碼都是一致的,所以需要讓doGet和doPost相互調用,可以簡化編程
七、使用Eclipse開發(fā)Servlet
1、新建Servlet
2、完成Servlet的配置
作者:李霜_9191
鏈接:http://www.itdecent.cn/p/850de850abfc
來源:簡書
著作權歸作者所有。商業(yè)轉載請聯系作者獲得授權,非商業(yè)轉載請注明出處。