SpringMVC中post和get区别

7 篇文章 0 订阅
订阅专栏

SpringMVC中post和get区别

文章目录

  • SpringMVC中post和get区别
  • 一、主要区别
  • 二、其余解释
    • 三、视频中讲的区别
  • 四、自己理解
    • HTTP协议的基本请求方法
    • GET请求
    • POST请求
    • GET和POST区别



一、主要区别

get与post两种方式的区别:对于本次主题而言,最显著的区别就是get请求方式参数是在url后,而post请求方式的参数是在request body中。因此两者获取参数的方式也大不一样。
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

二、其余解释

 主要区别在于GET方法是请求读取由URL所标志的信息,POST是给服务器添加信息。
注意:在请求中,只有post请求方式,才会有请求体;get方式的请求,请求数据中是没有请求体的。
post请求方式  可以携带参数类      POST通过request body传递参数。
get请求方式    不可以携带参数类   ,参数只能拼接到url路径里

GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

  1. GET与POST都有自己的语义,不能随便混用。
  2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
  3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

在这里插入图片描述

在讲区别前先讲一下@RequestBody。
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

get请求:在常规理解上来,是跟在地址栏后方的众多变量,在后台接收的时候,我们可以定义一个包装对象,或者是直接用参数来接收,或者用Map来接收都可以,其中我们可能会用到@RequestParam注解来对接收到的数据进行默认赋值,是否是必须字段等实现功能。
post请求:post请求是接收一个表单内部的数据,我们平时采用的方式也是定义包装类对象来接收。当然,在前后端分离的情况下(前台向后台传递一个JSON字符串时),我们要采用@RequestBody来将其转化为我们所要的包装类对象。那么重头戏来了,设计个场景:
前台向后台传递JSON字符串数据时,一个包装类无法存放方法体中的数据(即有部分属性不在你定义的包装类中时),那么当接收数据的时候,可以用两个对象(都采用@RequestBody(可以省略))来接收吗?答案是不可以,因为一个post请求也只传递一个整体表单数据,同样@RequestBody在入参中只能定义一次,将表单数据封装成一个对象接收。针对这种情况,解决办法 ,可以重新定义一个接收参数的包装类,当然这样有点费事。我有三种用法,1、可以用一个对象和几个像String id这样的对象;2、在入参处定义一个Map,然后针对性的从Map当中取数据;3、在参数中将所有属性都一一定义成局部变量,采用@RequestParam注解从前台也可以获取到值,代入其中去运算。
这里还有一个通用的方法,也是较原生的:使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。
所以在使用SpringMVC时应注意:
1、前端传对象,只能是post请求,后台用@RequestBody将json对象转化为字符串然后接收(post)
2、前端用get请求就不能用@RequestBody(最开始讲过),而用request.getParameter或者@RequestParam或者@PathVariable(URL中没有 字段=xx)
这里再补充一下@RequestParam或者@PathVariable的区别
ResquestMapping(“…/{id}”)
这里的主要作用为
将请求URL中的模板变量映射到功能处理方法的参数上
(@PathVariable(“id”) interger abc)
要求:前端传来的连接必须是 …/…/123131

@RequestParam就是可以说明是否必须,还能设置默认值
(@RequestParam(value = “id”, required = false, defaultValue = “0”),@RequestParam(value=“username”) String userName
要求有?有字段=…
地址①http://localhost:8989/SSSP/emps?pageNo=2
地址②http://localhost:8989/SSSP/emp/7
如果想获取地址①中的 pageNo的值 ‘2’ ,则使用 @RequestParam ,也可以不用
如果想获取地址②中的 emp/7 中的 ‘7 ’ 则使用 @PathVariable

3、如果是用get请求,url中如果是ASCLL码就不会有事,如果是非ASCLL码(中文)就会根据不同浏览器的默认编码去解析,从而导致乱码

三、视频中讲的区别

1、GET请求一般用去请求获取数据,

    POST一般作为发送数据到后台时使用

2、GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的

    POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制

3、GET请求刷新浏览器或回退时没有影响

    POST回退时会重新提交数据请求

4、GET 请求可被缓存

    POST 请求不会被缓存

5、GET 请求保留在浏览器历史记录中

   POST 请求不会保留在浏览器历史记录中

6、GET 请求可被收藏为书签

    POST 不能被收藏为书签

7、GET请求只能进行url编码(application/x-www-form-urlencoded)

    POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)

8、GET请求比较常见的方式是通过url地址栏请求

    POST最常见是通过form表单发送数据请求

get请求不安全 但是快 数据量有限 文件上传是不能使用get 因为请求参数不能拼接到地址栏
post 请求安全 数据量可以认为是无线 上传文件只能用post

四、自己理解

HTTP协议的基本请求方法

HTTP协议定义了很多与扶额u其交互的方法,最基本的只有四种:GET,POST,DELETE,PUT;

一个url地址用于描述一个网络上的资源,http中的四个基本请求方法对应这个资源的增删查改四个操作;

最常见的请求GET和POST:

GET:请求读取一个Web页面,一般用于获取/查询资源信息;

POST:上传一个资源(如Web页面),一般用于更新资源信息;

在这里插入图片描述

GET请求

从指定的资源请求数据,用于获取数据,一般用于搜索排序和筛选之类的操作。

get请求其实就是通过URL来传递数据。当客户端要从服务器中读取文档时,当点击网页上的链接,或者在浏览器地址栏输入网址浏览网页,都是GET请求方式。

使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始(?query),传递参数长度受限制(不同浏览器不同)。

POST请求

向指定的资源提交要被处理的数据,用于将数据发送给服务器,一般用于修改和写入数据。

使用POST方法可以允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。

GET和POST区别

get请求和post请求本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

(1)post请求更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存)

(2)post请求发送的数据更大(get请求有url长度限制,http协议本身不限制,请求长度限制是由浏览器和web服务器决定和设置)

(3)post请求能发送更多的数据类型(get请求只能发送ASCII字符)

(4)传参方式不同(get请求参数通过url传递,post请求放在request body中传递)

(5)get请求的是静态资源,则会缓存,如果是数据,则不会缓存

(6)get请求产生一个TCP数据包;post请求产生两个TCP数据包(get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;post请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)。

SpringMVC 处理post请求
Skyhaohao的博客
08-12 2378
SpringMVC 处理post请求1. 前端页面2. 创建实体类Student3. 控制层 StudentController 1. 前端页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>学生信息管理系统</title> <style> body{ font-size: 15px; } input[type=
SpringMVCpost和get的区别
yd_mmfly的博客
02-19 4423
这是一篇我在CSDN上的第一篇博客,请大家多多支持。 在前面我先声明:这篇文章的内容基本上都是网上各博客的,我只是整理一下,给需要的人梳理一下而已。 首先先放个人觉得比较好的关于post和get的区别的分析的链接 (https://www.cnblogs.com/logsharing/p/8448446.html) 在讲区别前先讲一下@RequestBody。 @RequestBody主要用来接收...
Mvc注解/Get和post请求的区别/Session和Cookie
最新发布
2301_79548451的博客
08-01 257
容户端,它要根据存储在Cookie 的JSESSIONID 来进行判51这个 cookie 是客户端自动创建的,如果客户端关闭了 cookie,那么Session 是没有什么效果的。Get 请求是通过 url 传参,post 请求是通过 body 传参,url 存储暴露信息不安全,而且ur有长度限制,eet请求会被河览器主动缓存,记录请求,post 不会:mvc 框架接受get 诸求参数会用到reouestparamn 注解,post 需要 RequestBody 注解;用不通的请求类型,代表增删改查。
SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别
m0_61940426的博客
07-29 1783
SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别
“get和post请求的区别”以及实现SpringBoot项目某个接口既能支持get又能支持post请求
白白白鲤鱼的博客
02-15 1550
get和post区别
13000 字的 Spring MVC 总结
weijia521的博客
10-25 239
13000 字的 Spring MVC 总结 概述 SpringMVC再熟悉不过的框架了,因为现在最火的SpringBoot的内置MVC框架就是SpringMVC。我写这篇文章的动机是想通过回顾总结一下,重新认识SpringMVC,所谓温故而知新嘛。 为了了解SpringMVC,先看一个流程示意图: 从流程图,我们可以看到: 接收前端传过来Request请求。 根据映射路径找到对应的处理器处理请求,处理完成之后返回ModelAndView。 进行视图解析,视.
SpringMVCpost、get乱码解决
XiangNick的博客
12-30 1085
一丶乱码原因由于间件为Tomcat,用户请求和返回的响应都需要经过tomcat,tomcat默认编码为ISO-8859-1和我们程序的编码(一般为UTF-8)不同,导致post、get请求乱码。二丶解决方案Post乱码解决方案: 在web.xml添加编码过滤器来解决,可以自己编写过滤器,最常用的方法是使用spring提供的编码过滤器: 在Web.xml增加如下配置(要注意的是它的位置一定要
解决表单post,get到springMVC后台乱码的问题
08-28
解决表单post,get到springMVC后台乱码的问题需要从多个方面进行调整,包括前台表单编码、Spring MVC 配置和后台接收参数。在后台接收参数时,需要使用 `request.getParameterMap()` 或 `request.getParameter()` ...
03.SpringMVC如何解决POST请求文乱码问题GET的又如何处理呢.zip
09-09
在Spring MVC框架,处理POST和GET请求时可能会遇到文乱码的问题,这通常是由于字符编码设置不正确导致的。本文将详细阐述如何解决这些问题。 首先,我们需要理解HTTP请求的编码原理。HTTP协议本身并不规定...
SpringMVC解决GET请求时文乱码的问题.rar
09-16
总结,解决Spring MVCGET请求文乱码问题的关键在于确保从客户端到服务器再到客户端的整个链路,字符编码的一致性和正确设置。通过调整配置、使用注解或自定义拦截器,可以有效地解决这个问题,确保文数据的...
springmvc怎么解析post_springmvc的数据接收
weixin_34042899的博客
01-30 719
前言先说结论,springmvc可以接收的参数类型如下:基本数据类型POJO类型参数数组类型参数集合类型参数此外,本篇文章也会对获取restful参数、获取请求头信息、文件上传等内容进行总结一、获取基本数据类型(get请求)http://localhost:8088/user/getParams?username=xiaoming&age=15@RequestMapping("/getPa...
springMVC post方法接收json参数jar包
05-12
springMVC 采用POST提交的方法接收json格式的参数需要的jar包
SpringMvc参数传递(Post
qq_74217055的博客
06-08 612
Get和Post区别还是很大的,如果按照标准,Get请求一般是不携带参数的,并且get携带在请求体种的参数是会被忽略的(postman工具除外)。Post请求一般才被用来携带参数@RequestParam 用于接收url地址传参,表单传参【application/x-www-form-urlencoded】,例如的Adong和20@PathVariable 用于接收包含在请求路径的参数,例如Adong的Adong和20。
GET和POST区别
qq_45004609的博客
12-14 1103
有些文章提到,POST会将 header 和 body 分开发送,先发送 header,服务端返回 100 状态码再发送 body。GET请求可以直接进行回退和刷新,不会对用户和程序产生任何影响,而POST请求如果直接回滚和刷新将会把数据再次提交。所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 POST必然行为。而对于POST,浏览器先发送请求头,服务器响应100continue,浏览器再发送请求体;对于GET方式的请求,浏览器会把请求头和请求体一并发送出去;
MVC的Get,Post方法
bangheming7499的博客
04-27 249
HTTp GET请求并呈现视图 HTTp POST从视图接收HTTP POST请求,检查数据有效性,更新对数据的操作以及重定向到View Http.Get是在请求数据的时候使用的,也就是说这个Action操作只会读取数据并显示到页面上,而不会对数据进行任何修改。用户可以通过指向这个Action的URL就可以直接访问到数据。对于Http.Get和Http.Post,可以简...
Spring Get请求 与post请求
BASK2311的博客
10-26 701
Spring是一个流行的Java开发框架,用于构建Web应用程序。在Spring,GET请求和POST请求是两种常见的HTTP请求方法,用于与服务器进行交互。
springmvc接受请求参数的方式(Path Variables,Request Parameters,Form Parameters,Request Body) get和post请求要注意什么!
TangMonk的博客
09-01 308
这通常需要设置请求头的`Content-Type`,以指定请求体的数据类型,如`application/json`或`application/x-www-form-urlencoded`。1. URL路径参数(Path Variables):可以将参数直接嵌入到请求的URL路径,例如 `/users/{id}`,Spring MVC会将URL的参数提取出来并传递给相应的处理方法。在上述示例,`@PathVariable`注解用于从URL路径提取`id`参数,这是一种GET请求传递参数的方式
SpringMVC解析post请求参数
qq_44614137的博客
08-18 3689
1.简单的做一个前端页面用来测试 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>学生管理系统</title> <link rel="stylesheet" href="../css/form.css"/> </head> <body> <!-- 利用表单,向服务器发送数据, 默认是get提交,通.
springMVC学习总结 springmvc post文乱码解决 springmvc处理日期格式
VastWu的博客
02-27 363
以下博客来源我的有道云笔记,点击查看原文 springMVC工作原理 请求会先找到分发器 servlet DispatchServlet 所以在导入相应jar包后 应当: 1.在项目的web.xml文件配置分发器: &lt;servlet&gt; &lt;servlet-name&gt;action&lt;/servlet-name&gt; &lt;servlet-class&...
写文章

热门文章

  • java中的service层,dao层,controller层的理解 34360
  • Video Speed Controller谷歌视频加速插件——16倍速 32754
  • The JAVA_HOME environment variable is not defined correctly This environment variable is needed to r 19737
  • mac笔记本安装java环境以及idea设置 18827
  • java面试-Spring中bean的生命周期(详解) 8673

分类专栏

  • 网络配置 7篇
  • leetcode周赛 2篇
  • java高级 9篇
  • 项目 13篇
  • Java面试 12篇
  • leetcode算法总结 9篇
  • 科研 2篇
  • 字节青训营 3篇
  • Java与C++ 区别 3篇
  • Spring 7篇
  • 剑指offer 80篇
  • javaweb书城 2篇
  • Acwing算法提高课 3篇
  • acwing数学知识 1篇
  • linux 1篇
  • IDEA开发技巧 1篇
  • Web前端 4篇
  • LeetCode 158篇
  • 搜索与图论 4篇
  • 动态规划-贪心 4篇
  • Acwing 算法基础 23篇
  • 计算机网络 8篇
  • 操作系统 8篇

最新评论

  • Video Speed Controller谷歌视频加速插件——16倍速

    2401_86586579: 手机软件刷频收限

  • java面试-Spring中bean的生命周期(详解)

    我美丽: 我本就比你貌美一万多倍

  • idea 插入数据到数据库时出现的中文乱码问题

    依嘫_吃代码: 可能有个文字没粘贴复制上或者跳步了,在从头检查下,也可以在参考其它类似的教程

  • idea 插入数据到数据库时出现的中文乱码问题

    2301_80211530: 改了之后运行一片红了

  • The JAVA_HOME environment variable is not defined correctly This environment variable is needed to r

    依嘫_吃代码: 管用了表情包

最新文章

  • curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 4 ms: Couldn‘‘t connect to
  • leetcode周赛 2859. 计算 K 置位下标对应元素的和
  • leetcode 周赛——2848. 与车相交的点
2024年1篇
2023年52篇
2022年311篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

依嘫_吃代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

玻璃钢生产厂家普洱市玻璃钢雕塑批发常州玻璃钢雕塑安装惠济区玻璃钢动物雕塑博爱玻璃钢雕塑价格临汾玻璃钢浮雕人物山水雕塑西安玻璃钢寺庙雕塑钦州玻璃钢人物雕塑价格便宜舟山玻璃钢雕塑生产厂家敦煌玻璃钢游乐场门头雕塑北京商场美陈搭建高淳商场美陈制作商场布置美陈玻璃钢花盆模压模具山东商场美陈厂家供应惠州玻璃钢雕塑生产商平湖玻璃钢雕塑公司宿迁玻璃钢雕塑加工十二生肖玻璃钢雕塑定制售卖熊猫玻璃钢雕塑九江玻璃钢雕塑定做价格珲春玻璃钢景观雕塑生活小品玻璃钢雕塑晋城广场标识玻璃钢仿铜雕塑宁波个性化玻璃钢雕塑多少钱商场楼层简单气球造型美陈盐城玻璃钢人物雕塑价格范围视觉中国商场美陈商场泛喜女装美陈春天的图片天津玻璃钢人物雕塑定制江苏抽象玻璃钢雕塑市场香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化