这是一篇我在CSDN上的第一篇博客,请大家多多支持。
在前面我先声明:这篇文章的内容基本上都是网上各博客的,我只是整理一下,给需要的人梳理一下而已。

首先先放个人觉得比较好的关于post和get的区别的分析的链接
(https://www.cnblogs.com/logsharing/p/8448446.html)

在讲区别前先讲一下@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码(中文)就会根据不同浏览器的默认编码去解析,从而导致乱码

SpringMVC中post和get的区别:相关推荐

  1. springmvc中@PathVariable和@RequestParam的区别

    顾名思义, @PathVariable和@RequestParam,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数. 我的url;  http://localhost:80 ...

  2. SpringMVC中拦截/和拦截/*的区别

    新建一个spring项目发现无法访问到jsp页面,静态html也无法访问,终于找到答案,原来是spring拦截配置的不对,一直写的是这种配置,今天发现是不对的,好在找到了答案:) <servle ...

  3. SpringMVC中@GetMapping和@RequestMapping的区别

    Spring4.3中引进了{@GetMapping.@PostMapping.@PutMapping.@DeleteMapping.@PatchMapping},来帮助简化常用的HTTP方法的映射,并 ...

  4. springmvc 中@Controller和@RestController的区别

    1.Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.Controller, RestController的不同点 @Cont ...

  5. springMVC中Dispatcher中的/和/*的区别

    1. 首先 / 这个是表示默认的路径,及表示:当没有找到可以匹配的URL就用这个URL去匹配. 2. 在springmvc中可以配置多个DispatcherServlet,比如: 配置多个Dispat ...

  6. Springmvc中的拦截器interceptor及与过滤器filter的区别

    一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...

  7. SpringMVC中的拦截器、过滤器的区别、处理异常

    SpringMVC中的拦截器.过滤器的区别.处理异常 参考文章: (1)SpringMVC中的拦截器.过滤器的区别.处理异常 (2)https://www.cnblogs.com/ahaijava/p ...

  8. SpringMVC中注解@RequestBody和@ResponseBody的使用区别

    首先上源码 在面试时经常会问到我们如何使用SpringMVC将Http请求转换为java对象,或者又是问如何将结果转换为java的呢? SpringMVC在接收到请求之后HandlerMapping像 ...

  9. SpringMVC中的拦截器

    SpringMVC中的拦截器 拦截器的作用 Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 用户可以自己定义一些拦截器来实现 ...

最新文章

  1. Apache httpd 以root身份运行
  2. 数据分析IJCAI 2020:录用率12.6%,华人占据半壁江山,表征学习、GNN成热点 | AI日报...
  3. 数据管理的智能趋势(2):如何实现高效的数据管理
  4. Adapter.getView convertView(重用View) ViewHolder(避免findViewById)
  5. 'unsigned char'-C编程中的声明,赋值和用法
  6. bzoj 2440: [中山市选2011]完全平方数【莫比乌斯函数+二分】
  7. faker假数据php,Faker首页、文档和下载 - 生成假数据的 PHP 库
  8. 【浙江大学PAT真题练习乙级】1001 害死人不偿命的(3n+1)猜想(15分)真题解析
  9. ARCGIS 二次开发可以参考的资源(长期更新)
  10. 16/32/64位平台下char、short、int、long、指针等类型分别占多少字节,操作系统可以使用的最大内存空间为多大?
  11. java小游戏实战局域网联机_结对编程3——黄金点小游戏实现局域网联机
  12. VC++即时通+视频会议源码
  13. C#读写欧姆龙PLC数据omron 使用TCP/IP FINS协议
  14. 功率 dbm vrms vpp mw换算 (正弦波)
  15. 水题poj1423 解题报告
  16. 织梦cms是什么-织梦CMS免费搭建工具只需要输入域名
  17. No current assignment for partition 解决
  18. android开发-常用色彩
  19. 尚未走出小米“舒适圈”,云米科技营收却按下“减速键”
  20. 计算机仿真技术生物,生物神经网络计算机仿真中数学建模与信号处理

热门文章

  1. 排序算法——朝花夕拾
  2. Log4j的扩展-支持设置最大日志数量MaxFileSize的DailyRollingFileAppender
  3. html地图多点标记,MarkPoints.html
  4. appium爬取微信朋友圈信息 真机测试
  5. 今日话题:京东百亿收购1号店,能够与阿里对抗吗?
  6. c++ opencv数字图像处理:频率域滤波--低通滤波--巴特沃斯低通滤波
  7. Linux:bond网卡模式配置
  8. Vue08/Vue 生命周期钩子函数( Vue生命周期11个阶段 )应用场景
  9. 【JZOJ】【暴力】 游戏
  10. 大数据、人工智能和机器学习之间,主要是什么关系?