一、什么是协议?
协议就是一套规范,一套协议。由其他人或者其他组织制定。
二、什么是HTTP 协议?
HTTP 协议 W3C(世界万维网联盟) 制定的超文本传输协议.
超文本:不仅仅是普通的文本,可以传输声音,视频,图片,等等。。。
这种协议存在 B 和 S 之间,B向S 发送数据要遵守HTTP 协议,S 向B 发送数据同样也需要 HTTP 协议。
- B/S 表示:浏览器 访问 WEB 系统。
- 浏览器 向 WEB 系统发送数据,叫做 请求。
- WEB 服务器 向 浏览器发送数据 叫做 响应
- HTTP 协议 包括:
- 请求协议:
- 浏览器 向 服务器 发送数据时,需要遵守的一套标准,这套标准中规定了发送数据的具体形式。
- 响应协议:
- 服务器 向 浏览器 发送数据时,需要遵守的一套标准,这套标准中规定了发送数据的具体形式。
- HTTP 请求协议:包括 4 部分 (B -- 》S)
- 请求行
- 请求头
- 空白行
- 请求体
- HTTP 请求协议的报文(GET方式):
-
GET /servlet/get?userName=jack&password=123 HTTP/1.1 请求行 Host: localhost:8080 请求头 Connection: keep-alive sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";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/94.0.4606.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/servlet/index.html Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 空白行 请求体
-
HTTP 请求协议的报文(POST方式):
-
POST /servlet/post HTTP/1.1 请求行 Host: localhost:8080 请求头 Connection: keep-alive Content-Length: 26 Cache-Control: max-age=0 sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";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/94.0.4606.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/servlet/index.html Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 空白行 userName: jack 请求体 password: 123
-
请求行
-
包括三部分
-
第一部分:请求方式(七种)
-
get,post,delete,put,head,options,trace
-
-
第二部分:URI
-
URI 和 URL 有什么区别:
-
URI:统一资源标识符,代表网络中某个资源的名字,通过URI 是无法定位到资源的
-
URL:统一资源定位符,代表网络中某个资源,通过URL可以定位到资源,URL 是包括 URI 的
-
servlet/index.html 这时 URI
-
-
-
第三部分:协议版本号
-
-
-
请求头
-
请求的主机
-
主机的端口
-
浏览器等信息
-
平台信息
-
-
空白行
-
区分 请求体 和 请求头
-
-
请求体
-
向浏览器发送的具体数据
-
-
- HTTP 响应协议(S -- 》 B)
- 包括 4 部分
- 状态行
- 响应头
- 空白行
- 响应体
- HTTP 响应协议的报文:
HTTP/1.1 200 ok 状态行 Content-Type: text/html;charset=ISO-8859-1 响应头 Content-Length: 27 Date: Fri, 21 Jan 2022 02:07:34 GMT Keep-Alive: timeout=20 Connection: keep-alive 空白行 <h1>From Get Servlet</h1> 响应体
-
状态行分为三部分组成:
-
第一部分:协议版本号(HTTP/1.1)
-
第二部分:状态码(HTTP 协议规定的响应状态信号,不同的响应结果对应不同的专状态码)
-
200 :表示 请求响应成功,正常结束
-
404:表示访问资源不存在,通常要么是你路径写错了,要么是是你路径写对了,但是服务器中对应的资源并没有启动成功,404就是前端 错误
-
405:表示前端发送请求的方法与后端处理的方式不一样。
-
比如:前端是POST请求,后端处理的是 GET请求
-
-
500:表示服务器端的程序出错了,一般认为是服务器端的错误。
-
-
第三部分:状态的描述信息,not found 表示找不到
-
-
响应头
-
响应内容类型
-
响应的内容长度
-
响应的时间。。。。
-
-
空白行
-
用来分隔响应头和响应体
-
-
响应体
-
响应体就是响应的正文。这些内容是一个字符串,被浏览器解释,最终展示效果
-
-
-
怎么查看协议内容?
-
使用浏览器 F12,找到 network ,通过这个面板可以看到协议的具体内容
-
-
-
GET 请求 和 POST 请求的区别:
-
GET 请求数据会挂在 URI 后面,数据信息在地址栏上显示
-
http://localhost:8080/servlet/get?userName=jack&password=123
-
POST 请求发送数据,会在请求体中发送。地址栏上看不到。
-
GET 只能发送普通的字符串,长度有限制,不同浏览器限制不一样。
-
POST 可以发送任何类型的数据,没有长度限制。文件上传一般是 POST
-
GET 支持缓存。任何一个GET请求的 "响应结果" 都会被浏览器 缓存
-
POST 不支持缓存
-
-
怎么向服务器发送GET 请求,怎么发送POST请求?
-
目前只有一种情况使用的是 POST 请求,那就是 使用form 表单,并且 在 method 属性值为:method="post"
-
其他情况一律是 GET 请求:
-
比如:超链接是 GET 请求。
-
在地址栏上输入URL敲回车,是GET请求
-
form 表单默认提交方式是GET
-
.......
-
-
-
不管使用GET 还是 POST 请求发送数据的格式是一样的。
-
name=value&name=value&name=value
-
只不过 & 的位置不同。Tomcat 通过对 & 分割字符串。
-
-
怎么选择 GET 或者 POST 呢?
-
post 适合 向服务器端传送数据
-
GET 适合 从服务器中获取数据。
-
GET 是绝对安全的。POST 是不安全的,因为 POST 要向 服务器端传送数据,一般会选择 拦截(监听) POST 请求。
-
- 包括 4 部分
- 请求协议:
三、模板设计模式
1、什么是设计模式?
某个问题的固定解决方案。
单例模式,工厂模式,代理模式,门面模式......
2、你知道哪些设计模式?
GoF设计模式:通常我们所说的23种设计模式。(Gang of Four :4人组提出的设计模式)
JavaEE设计模式:DAO,DTO,VO,PO ......