2020-03-22

Http&Servlet入門

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

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

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

1、HTTP的特性

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

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

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

? ? (2)簡單快捷

? ? ? ? 因為發(fā)送請求的時候只需要發(fā)送請求方式和請求路徑即可

2、HTTP的版本

HTTP1.0:短鏈接

HTTP1.1:長鏈接

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

1、分析HTTP協(xié)議

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

? ? ? ? 創(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

內(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

請求的來源

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é)議之請求部分

1、請求行

?? (1)請求方式

? ? ?? 請求方式有很多種,常用兩種:GET和POST

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

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

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

?? (2)請求路徑

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

2、請求頭

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

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

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

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

3、請求體

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

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

1、響應(yīng)行

? ? 協(xié)議版本

? ? 狀態(tài)碼

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

? ? ? ? 302:需要進行重定向操作

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

? ? ? ? 404:請求資源不存在

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

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

2、響應(yīng)頭

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

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

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

? ? ? ? Refresh:定時刷新

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

3、響應(yīng)體

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

五、Servlet的概述與入門

1、什么是Servlet

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

2、使用Servlet

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

配置Servlet

3、Servlet的入門

創(chuàng)建包和類

實現(xiàn)Servlet的接口

在web.xml中配置這個類

訪問Servlet

http://localhost:8080/web01/hello

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

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

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

Servlet接口

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

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

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

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

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

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

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

1、新建Servlet

2、完成Servlet的配置

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

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

  • Http&Servlet入門 (一)HTTP協(xié)議的概述 一、什么是HTTP協(xié)議 HTTP協(xié)議:規(guī)定了瀏覽器和服務(wù)器...
    王子航001閱讀 189評論 0 0
  • 第八天 Http&Servlet入門 (一)HTTP協(xié)議的概述 一、什么是HTTP協(xié)議 HTTP協(xié)議:規(guī)定了瀏覽器...
    白訶子閱讀 164評論 0 0
  • Servlet: Server applet 概念:運行在服務(wù)器上的一個小程序(動態(tài)資源) Servlet是...
    爛漫的點地梅閱讀 189評論 0 0
  • Servlet深入 (一)Servlet的生命周期 一、Servlet的生命周期概述 1、什么是生命周期 生命周期...
    爛漫的點地梅閱讀 253評論 0 0
  • 第九天 Servlet深入 (一)Servlet的生命周期 一、Servlet的生命周期概述 1、什么是生命周期 ...
    白訶子閱讀 304評論 0 0

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