• HTTP超文本传输协议


    HTTP协议----超文本传输协议

    1. 注意:我们以后编写Servlet类时,不会直接继承GenericServlet类,因为我们是B/S结构系统,这种系统是基于HTTP超文本传输协议的,他有一个专门的Servlet类。我们编程的时候要继承HttpServlet,其处理更方便。我们也没白学,因为HttpServlet继承GenericServlet

    2. 连接池:

      • 所谓的连接是java语言连接数据库的连接对象:java.sql.Connection对象
      • Connection对象做的就是连接JVM和数据库这两个进程,然而每次用户连接数据库时都要创建连接对象很麻烦,所以连接池所做的就是存放很多个连接对象,当用户需要连接是直接从连接池中获取即可,提高了访问效率。
      • 连接池的容量也要做相应的改变,例如访问量大时,容量多少,少时多少。
    3. 线程池:

      • TomCat服务器本身就支持多线程。
      • TomCat服务器在启动时,会先创建多个线程Thread对象,然后将线程对象放到集合当中,称为线程池,用户发送一个请求过来后,需要一个对应的线程来处理这个请求,这个时候线程对象就会直接从线程池中拿,效率更高。
    4. 什么是超文本?

      • 不是普通文本,例如流媒体,声音,视频,图片等。
    5. 这种协议游走在B和S之间,B和S之间传输数据都要遵循该协议,这样B和S才能解耦合(即B不依赖S,S不依赖B)。

    6. HTTP协议包括:

      • 请求协议:浏览器向WEB服务器发送数据时,数据格式遵循的标准
      • 响应协议:WEB服务器向浏览器发送数据时,数据格式遵循的标准
    7. HTTP请求协议:

      1. HTTP请求协议包括四部分:

        • 请求行
        • 请求头
        • 空白行
        • 请求体
      2. HTTP请求协议的具体报文:GET请求

        •     GET /servlet01/getServlet?username=jack&password=123456 HTTP/1.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
              Accept-Encoding: gzip, deflate, br
              Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
              Connection: keep-alive
              Host: localhost:8080
              Referer: http://localhost:8080/servlet01/index.html
              Sec-Fetch-Dest: document
              Sec-Fetch-Mode: navigate
              Sec-Fetch-Site: same-origin
              Sec-Fetch-User: ?1
              Upgrade-Insecure-Requests: 1
              User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52
              sec-ch-ua: "Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"
              sec-ch-ua-mobile: ?0
              sec-ch-ua-platform: "Windows"
              														//空白行
                                                                      		//请求体
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
        • 请求行

          • 包括三部分:
            • 请求方式(7种)
              • get
              • post
                • 创建
              • delete
              • put
                • 修改
              • head
              • options
              • trace
            • URI
              • 统一资源标识符。代表网络中某个资源的名字,通过URI是无法定位资源的
              • 什么是URL:统一资源定位符。代表网络中某个资源,同时,通过URL是可以定位到该资源的。
              • URL包括URI
                • http://localhost:8080/servlet01/index.html -------->url
                • /servlet01/index.html -------->uri
            • 协议版本号
        • 请求头

          • 请求的主机
          • 主机的端口
          • 浏览器信息
          • 平台信息
          • cookie等信息
        • 空白行

        • 请求体

          • 向服务器发送的具体数据
      3. HTTP请求协议的具体报文:POST请求

        POST /servlet01/postServlet HTTP/1.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
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
        Cache-Control: max-age=0
        Connection: keep-alive
        Content-Length: 26
        Content-Type: application/x-www-form-urlencoded
        Host: localhost:8080
        Origin: http://localhost:8080
        Referer: http://localhost:8080/servlet01/index.html
        Sec-Fetch-Dest: document
        Sec-Fetch-Mode: navigate
        Sec-Fetch-Site: same-origin
        Sec-Fetch-User: ?1
        Upgrade-Insecure-Requests: 1
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52
        sec-ch-ua: "Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"
        sec-ch-ua-mobile: ?0
        sec-ch-ua-platform: "Windows"
        
        username=jack&password=123456                                 //请求体
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
    8. HTTP响应协议:

      1. HTTP响应协议包括四部分:

        • 状态行
        • 响应头
        • 空白行
        • 响应体
      2. HTTP响应协议的具体报文:

            HTTP/1.1 200 ok          //状态行
            Content-Type: text/html;charset=utf-8          //响应头
            Content-Length: 110
            Date: Tue, 25 Oct 2022 14:16:17 GMT
            Keep-Alive: timeout=20
            Connection: keep-alive
          
                      //响应体
            
            
            from get servlet
            
            
            

        from get servlet

        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 状态行
          • 三部分组成
            • 第一部分:协议版本号(HTTP/1.1)
            • 第二部分:状态码
              • 200表示请求响应成功,正常结束
              • 3开头的关于重定向
              • 404表示访问的资源不存在,原因要么是你路径写错了,要么是路径写对了,但是服务器中对应的资源没有启动成功,总之是前端错误。
              • 405表示前端发送的请求方式与后端请求处理方式不一致时发生:
                • 例如:前端是POST,后端处理方式是GET
              • 500表示服务器端的程序出现了异常,一般会认为是服务器端的错误导致的。
              • 以4开始的,一般是浏览器端错误导致
              • 以5开始的,一般是服务器的错误导致
            • 第三那部分:状态的描述信息
              • ok表示成功结束
              • not found表示资源找不到
        • 响应头:
          • 响应的内容类型
          • 响应内容长度
          • 响应的时间
        • 空白行
          • 用来分隔响应头和响应体
        • 响应体:
          • 响应的正文,是一个长的字符串,这个字符串被浏览器渲染,解释并执行,最终展示出效果。
      3. 怎么看协议内容:打开浏览器,按F12

      4. 只有两种情况可以发送POST请求:使用form表单,并且form标签中的method属性值为:post,或者做文件上传,用post

      5. 其他所有情况都是用get

        1. 在浏览器地址栏上直接输入URL,敲回车,属于get请求。
        2. 在浏览器上直接点超链接时,属于get请求
        3. 使用form表单,method的属性不写或者值为get属于get请求
      6. get请求和post请求有什么区别?

        • get请求发送数据的时候,数据会挂在URI的后面,并且在URI后面添加一个“?”,“?”后面十数据,这样会导致数据回显到浏览器的地址栏上(get请求在请求行上发送数据)
        • post请求数据在请求体,不会回显到浏览器地址栏上
        • get请求只能发送普通的字符串,并且发送的字符串长度有限制,不同浏览器限制不同。
        • get请求无法发送大数据量
        • post请求可以发送任何类型的数据,并且可以发送大数据量,理论上没有长度限制
        • get请求适合从服务器端获取数据
        • post请求适合向服务器端传送数据
        • get请求是安全的,因为get请求只是为了从服务器上获取数据。
        • **post请求是危险的,因为post请求是为了向服务器提交数据,如果这些数据通过后门的方式进入到服务器当中,服务器是很危险的。**另外post请求是提交数据,所以一般情况下拦截请求的时候,一般是拦截(监听)post请求。
        • get请求支持缓存
          • 任何一个get请求最终的响应结果都会被浏览器缓存起来,在浏览器缓存当中,一个get请求路径的路径对应一个资源每当我们去找资源,如果缓存里有,就直接在浏览器上打开,如果没有,就去服务器上请求
          • 如果我们向每次get请求都是到服务器取资源,可以让每次请求路径不一样,例如在请求路径后面加一个时间戳
        • post请求不支持缓存
  • 相关阅读:
    jenkins CSV编码导致乱码问题解决
    零基础html学习/刷题-第三期
    模型评价-期望对数似然和对应的估计量
    行为型:发布订阅模式
    FTX:这个加密货币冬天与以前的冬天非常相似
    simpleini库的介绍和使用(面向业务编程-格式处理)
    LINUX网络编程:http
    JVM进阶之卡表
    【GPGPU编程模型与架构原理】第一章1.2 GPGPU 发展概述
    Python实现WOA智能鲸鱼优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战
  • 原文地址:https://blog.csdn.net/qq_52025040/article/details/128022051