java web-servlet(http协议)

本文深入解析了HTTP协议,包括请求和响应的组成部分,如请求行、请求头、响应行和响应体。特别讨论了GET和POST请求的发送方式,以及它们之间的区别。GET请求在URI后附加数据,适用于获取资源,而POST请求在请求体中发送数据,适合用于提交数据。此外,还提到了HTTP状态码的重要性,如200表示成功,404表示资源未找到,500表示服务器内部错误。
摘要由CSDN通过智能技术生成

目录

Http协议

HTTP的请求协议(B --> S)

 

请求行

请求头

空白行

请求体

HTTP的响应协议(S --> B)

状态行

响应头

空白行:

响应体:

怎么向服务器发送GET请求,怎么向服务器发送POST请求?

GET和POST有什么区别?


Http协议


是W3C制定的一种超文本传输协议。(通信协议:发送消息的模板提前被制定好。)

HTTP协议包括:

  1.请求协议

浏览器  向   WEB服务器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。

  2.响应协议

WEB服务器  向  浏览器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。

HTTP的请求协议(B --> S)

 

HTTP的请求协议包括:4部分

请求行

请求体

空白行

请求头

HTTP请求协议的具体报文:GET请求

GET /servlet05/getServlet?username=lucy&userpwd=1111 HTTP/1.1                       请求行
Host: localhost:8080                                                                请求头
Connection: keep-alive
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
                                                                                    空白行
                                                                                    请求体

HTTP请求协议的具体报文:POST请求

POST /servlet05/postServlet HTTP/1.1                                              请求行
Host: localhost:8080                                                              请求头
Connection: keep-alive
Content-Length: 25
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
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/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
                                                                                  空白行
username=lisi&userpwd=123                                                         请求体

请求行

  

第一部分:请求方式(7种)

  1.         get(常用的)
  2.         post(常用的)
  3.         delete
  4.         put
  5.         head
  6.         options
  7.         trace

第二部分:URI

  1.  什么是URI? 统一资源标识符。代表网络中某个资源的名字。但是通过URI是无法定位资源的。
  2. 什么是URL?统一资源定位符。代表网络中某个资源,同时,通过URL是可以定位到该资源的。

URI和URL什么关系,有什么区别?

  1. URL包括URI
  2. http://localhost:8080/servlet05/index.html 这是URL。
  3.  /servlet05/index.html 这是URI。

第三部分:HTTP协议版本号

请求头

  1. 请求的主机
  2. 主机的端口
  3. 浏览器信息
  4. 平台信息
  5. cookie等信息
  6. ....

空白行

空白行是用来区分“请求头”和“请求体”

请求体

向服务器发送的具体数据。

HTTP的响应协议(S --> B)

HTTP的响应协议包括:4部分

  1. 状态行
  2. 响应头
  3. 空白行
  4. 响应体

HTTP响应协议的具体报文:

HTTP/1.1 200 ok                                     状态行
Content-Type: text/html;charset=UTF-8               响应头
Content-Length: 160
Date: Mon, 08 Nov 2021 13:19:32 GMT
Keep-Alive: timeout=20
Connection: keep-alive
                                                    空白行
<!doctype html>                                     响应体
<html>
    <head>
        <title>from get servlet</title>
    </head>
    <body>
        <h1>from get servlet</h1>
    </body>
</html>

状态行

第一部分:协议版本号(HTTP/1.1)

第二部分:状态码(HTTP协议中规定的响应状态号。不同的响应结果对应不同的号码。)

        分类:

        组成100---599;分为5个大类

1XX :

最有特征 100; 通知浏览器本次返回的资源文件

并不是一个独立的资源文件,需要浏览器在接收

响应包之后,继续向Http服务器所要依赖的其他资源文件

2XX:

最有特征200,通知浏览器本次返回的资源文件是一个

完整独立资源文件,浏览器在接收到之后不需要所要

其他关联文件

3xx:

最有特征302,通知浏览器本次返回的不是一个资源文件内容

而是一个资源文件地址,需要浏览器根据这个地址自动发起

请求来索要这个资源文件

response.sendRedirect("资源文件地址")写入到响应头中的location中。

而这个行为导致Tomcat将302状态码写入到状态行

4XX:

404: 通知浏览器,由于在服务端没有定位到被访问的资源文件

因此无法提供帮助

-----------------------------------------------------------------------------------------------

405:通知浏览器,在服务端已经定位到被访问的资源文件(Servlet)

但是这个Servlet对于浏览器采用的请求方式不能处理

6)5xx:

500:通知浏览器,在服务端已经定位到被访问的资源文件(Servlet)

这个Servlet可以接收浏览器采用请求方式,但是Servlet在处理

请求期间,由于Java异常导致处理失败

响应头

  1. 响应的内容类型
  2. 响应的内容长度
  3. 响应的时间
  4. ....

空白行:

  1. 用来分隔“响应头”和“响应体”的。

响应体:

  1. 响应体就是响应的正文,这些内容是一个长的字符串,这个字符串被浏览器渲染,解释并执行,最终展示出效果。

怎么向服务器发送GET请求,怎么向服务器发送POST请求?

到目前为止,只有一种情况可以发送POST请求:使用form表单,并且form标签中的method属性值为:method="post"。

GET和POST有什么区别?

        

(get请求在“请求行”上发送数据)

  1. get请求发送数据的时候,数据会挂在URI的后面,并且在URI后面添加一个“?”,"?"后面是数据。这样会导致发送的数据显示浏览器的地址栏上。http://localhost:8080/servlet05/getServlet?username=zhangsan&userpwd=1111
  2. get请求只能发送普通的字符串。并且发送的字符串长度有限制,不同的浏览器限制不同。
  3. get请求无法发送大数据量。
  4. get请求在W3C中是这样说的:get请求比较适合从服务器端获取数据。
  5. get请求是安全的。get请求是绝对安全的。为什么?因为get请求只是为了从服务器上获取数据。不会对服务器造成威胁。
  6. get请求支持缓存。实际上,你只要发送get请求,浏览器做的第一件事都是先从本地浏览器缓存中找,找不到的时候才会去服务器上获取。这种缓存机制目的是为了提高用户的体验。

(post在“请求体”当中发送数据)

  1. post请求可以发送任何类型的数据,包括普通字符串,流媒体等信息:视频、声音、图片。
  2. post请求可以发送大数据量,理论上没有长度限制。
  3. post请求在W3C中是这样说的:post请求比较适合向服务器端传送数据。
  4. post请求是危险的。为什么?因为post请求是向服务器提交数据,如果这些数据通过后门的方式进入到服务器当中,服务器是很危险的。另外post是为了提交数据,所以一般情况下拦截请求的时候,大部分会选择拦截(监听)post请求。
  5. post请求不支持缓存。(POST是用来修改服务器端的资源的.)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值