HTTP 协议

一、什么是协议?

 

协议就是一套规范,一套协议。由其他人或者其他组织制定。

二、什么是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 的

                • http://localhost:8080/servlet/index.html  这时 URL

                • 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:表示服务器端的程序出错了,一般认为是服务器端的错误。

              • 状态码学习网站:HTTP 状态码 | 菜鸟教程 (runoob.com)    状态码学习网站

            • 第三部分:状态的描述信息,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 请求。

三、模板设计模式 

 1、什么是设计模式?

        某个问题的固定解决方案。

        单例模式,工厂模式,代理模式,门面模式......

2、你知道哪些设计模式?

        GoF设计模式:通常我们所说的23种设计模式。(Gang of Four :4人组提出的设计模式)

        JavaEE设计模式:DAO,DTO,VO,PO ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲨瓜2号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值