Web基础之什么是HTTP协议

news/2025/1/13 15:23:52 标签: http, 网络, 网络协议

 Q:什么是HTTP协议?

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

https://i-blog.csdnimg.cn/direct/2177a2de22084b3b8ccc67e34ee27d44.png" width="1011" />

特点:
1.基于TCP协议:面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3。HTTP协议是无状态(无状态的是:每一次请求都是独立的,后一次请求不会记录前一次的数据)的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
        缺点:多次请求间不能共享数据。(解决方案:会话技术)
        优点:速度快(不能共享数据所以传输速度快)

 HTTP协议-请求数据格式

如何查看数据格式?在chrome浏览器中按下F12,选择网络-全部,刷新一下之后就可以在名称栏下找到想找到的http请求。点击标头,然后点击原始数据,就可以出现下图所示结果。

请求行:请求数据第一行(请求方式、资源路径、协议)

https://i-blog.csdnimg.cn/direct/f2ade4a201cb407c9c0c71e41b0a5060.png" width="1200" />

 请求头:第二行开始,格式key:value

https://i-blog.csdnimg.cn/direct/24a6c28b0a6649239c92dbf7101b01a2.png" width="1200" />

常见的请求头:

https://i-blog.csdnimg.cn/direct/18243c42ada94ae688a9def37e9e5595.png" width="1020" />

请求体:POST请求,存放请求参数 

1.请求体在请求头一个空行之后  ( 补充:GET方式的请求是没有请求体的。)

2.请求体一般是json格式的数据,由此我们也可以很明显的看出请求体可以传输更多的数据

为什么请求体/POST请求可以传输更多的数据?

https://i-blog.csdnimg.cn/direct/a0cc3f6f92bf401dbea6a7fa7a2a20ce.png" width="740" />

tip:GET方式的请求:设置的参数都是在请求行的 “ ?”后面进行提供,GET请求大小在浏览器中是有限制的。(如:/brand/findAll?name=海绵宝宝&status=1)

        POST方式的请求:设置的参数则往往是在请求体一个完整的json格式的数据,POST请求大小是没有限制的。

小结:

1.Http协议中请求数据分为哪几个部分?
请求行(请求数据的第一行)
请求头(key:value)
请求体(与请求头之间隔了一个空行)

Q:在服务器端我们该如何获取传递过来的请求数据?

https://i-blog.csdnimg.cn/direct/14c36685ce6e4767a00377f685e0f348.png" width="1200" />

具体操作代码: 

@RestController
public class RequestController {

    @RequestMapping("/request")
   public String request(HttpServletRequest request){
        // 获取请求方式
        String method = request.getMethod();
        System.out.println("method:"+method);
        //获取请求路径
        String requestURI = request.getRequestURI();
        System.out.println("requestURI:"+requestURI);
        //获取请求参数
        String queryString = request.getQueryString();
        System.out.println("queryString:"+queryString);
        // 获取请求协议
        String protocol = request.getProtocol();
        System.out.println("protocol:"+protocol);
        // 获取请求头
        String header = request.getHeader("User-Agent");
        System.out.println("header:"+header);
        return "success";
   }
}

 结果:

https://i-blog.csdnimg.cn/direct/5f437835ab094974a753caf0c6d5a847.png" width="657" />https://i-blog.csdnimg.cn/direct/742f17ea66ac4c2aa0701a33dba97354.png" width="653" />

 重点tip:

https://i-blog.csdnimg.cn/direct/0d0ddbb1474c4e318b6e555b9b9341fe.png" width="1097" />

实战补充:1.alt+P AI自动生成提示代码 

                 2.// 获取请求头                                      这里想获取什么请求头,参数里就填什么

                       String header = request.getHeader("User-Agent");

                 3.StringBuffer类型的数据java不能直接输出,要再调用toString()方法。

                


http://www.niftyadmin.cn/n/5821991.html

相关文章

ip属地什么条件会改变?多角度深入探讨

IP属地,即IP地址的归属地,是互联网上设备连接时的一个关键信息,它通常反映了设备连接互联网时的地理位置。随着社交软件及各大平台推出IP归属地显示功能,IP属地的变化问题逐渐受到广大用户的关注。那么,IP属地在什么条…

书说 MySQL 的悲观锁和乐观锁

什么是乐观锁?什么是悲观锁? 悲观锁: 悲观锁是一种基于悲观态度的控制机制(最坏的程度想,每次并发一定会造成阻塞),用于防止数据冲突。它采取预防性措施,在修改数据之前将其锁定&a…

Python----Python基础(元组 tuple,元组的创建,基本操作:访问,连接,索引,计数,长度,最大值,最小值,求和,判断,排序)

一、元组tuple 列表属于可变序列,可以任意修改列表中的元素。 元组属于不可变序列,不能修改元组中的元素。 因此,元组没有增加元素、修改元素、删除元素相关的方法。 二、元组的创建 2.1、使用()方式创建元组 使用圆括号 () 可以创建一个…

深度学习的加速器:Horovod,让分布式训练更简单高效!

什么是 Horovod? Horovod 是 Uber 开发的一个专注于深度学习分布式训练的开源框架,旨在简化和加速多 GPU、多节点环境下的训练过程。它以轻量级、易用、高性能著称,特别适合需要快速部署分布式训练的场景。Horovod 的名字来源于俄罗斯传统舞…

【Java回顾】Day6 JUC锁

JUC锁 AQS(AbstractQueuedSynchronizer)&condition AQS(AbstractQueuedSynchronizer) 队列同步器,以模板方式模式,构建锁或其他同步组件的基础框架,如ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch等。具体的同步逻…

django在线考试系统

Django在线考试系统是一种基于Django框架开发的在线考试平台,它提供了完整的在线考试解决方案。 一、系统概述 Django在线考试系统旨在为用户提供便捷、高效的在线考试环境,满足教育机构、企业、个人等不同场景下的考试需求。通过该系统,用…

【vue】vue的基础语法--上

目录 一、Vue的模板语法 1. 学会使用VsCode 2. 文本插值 3. 使用JavaScript表达式 4. 无效 5. 原始html 二、 属性绑定 1. 属性绑定 2.简写方案 3.布尔型Attribute 4. 动态邦定多个值 三、条件渲染 1. v-if 2. v-else 3. v-else-if 4. v-show 5. v-if VS v-sho…

HTTP 入门:认识网络通信基础

一、引言:HTTP 在网络世界的基石地位 在当今数字化的时代,网络通信如同空气一般无处不在,而 HTTP 协议则是网络世界中最为重要的基石之一。无论是浏览网页、使用手机 APP,还是进行各种网络数据交互,HTTP 都在背后默默…