• @RequestParam注解接收的参数是来自于requestHeader中,即请求头。都是用来获取请求路径url 中的动态参数,格式为xxx?username=123&password=456。功能与@pathvarible类似。

@RequestParam(value="字段名称",required=true/false,defaultValue=""),当字段非必填时,一般要传默认值。

@RequestMapping("/list")
public String test(int userId) {
  return "list"; } @RequestMapping("/list")
public String test(@RequestParam int userId) {
  return "list";
}

第一种写法参数为非必传,第二种写法参数为必传。参数名为userId。(@RequestBody同理)

第二种写法可以通过@RequestParam(required = false)设置为非必传。因为required值默认是true,所以默认必传。(@RequestBody同理)

第二种写法可以通过@RequestParam("userId")或者@RequestParam(value = "userId")指定参数名。

第二种写法可以通过@RequestParam(defaultValue = "0")指定参数默认值。

如果参数是对象,但传的值(http请求Header中)为对象里的一个字段(基本数据类型),则不能加@RequestParam,否则就用对象名去接收参数了,会接收不到参数(required=false)或报错

  • RequestBody注解接收的参数则是来自于requestBody中,即请求体中。
  1. Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。
  2. 使用与不使用@RequestBody:

(1) 必须使用@requestBody.当请求content_type为:application/json类型的请求,数据类型为json时, json格式如下:{"aaa":"111","bbb":"222"}

(2) 可不使用@requestBody.当请求content_type为:application/x-www-form-urlencoded类型的或multipart/form-data时,数据格式为aaa=111&bbb=222。post请求一般用json格式,通过@RequestBody(required=true/false)标注。

  • Spring初始化问题:
  1. 无论加了@RequestParam(required=false)还是@RequestBody(required=false),传空的情况下controller中的参数均为null,不会赋默认值。
  2. 若不加@RequestBody或@RequestParam,对象参数会被当作行参初始化一个。但对象里的参数为null或默认值(设定了默认值)。(String、包装类初始化为null,基本数据类型会报错,因为无法为基本数据类型赋值null)

参考:

https://blog.csdn.net/u011410529/article/details/66974974

https://blog.csdn.net/qq_26761587/article/details/73691189

https://blog.csdn.net/jiashanshan521/article/details/88244735?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://blog.csdn.net/u013805360/article/details/79527175?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

@requestBody 与@requestparam详解的更多相关文章

  1. @RequestBody, @ResponseBody 注解详解(转)

    原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...

  2. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解

    (转自:http://blog.csdn.net/walkerjong/article/details/7946109#) 引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后, ...

  3. 《转载》Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解

    引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...

  4. SpringMVC之@RequestParam @RequestBody @RequestHeader 等详解

    转自:http://blog.csdn.net/kobejayandy/article/details/12690161?reload 简介: handler method 参数绑定常用的注解,我们根 ...

  5. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解<转>

    简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri 部分(这里指uri templat ...

  6. @RequestBody, @ResponseBody 注解详解

    简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...

  7. SpringMvc之@RequestParam详解

    @RequestParam是传递参数的. @RequestParam用于将请求参数区数据映射到功能处理方法的参数上. public String queryUserName(@RequestParam ...

  8. @RequestMapping、@Responsebody、@RequestBody和@PathVariable详解(转)

    一.预备知识:@RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. @Requ ...

  9. @RequestParam详解以及加与不加的区别

    以前写controller层的时候都是默认带上 @RequestParam 的, 今天发现不加@RequestParam 也能接收到参数 下面我们来区分一下加与不加的区别 这里有两种写法 @Reque ...

随机推荐

  1. YCM 安装小记

    layout: post title: YCM 安装小记 半夜,女朋友在那边抱怨购物车的物品秒无货,我这边刚好成功安装了vim上最难装的插件--YouCompleteMe,内心非常激动,于是本着取之于 ...

  2. Git命令diff格式详解

    diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前的文件> <变动后的文件> ...

  3. 彻底根治window弹窗小广告(今日热点)

    在一个阴雨蒙蒙的下午,我上完厕所回到工位,输入锁屏密码,解锁,蹦出来三个小广告,我......这还能忍??? 废话不多说,开搞! 一.广告分为两种: 红色字的今日热点 蓝色字的今日热点 二.追溯根源: ...

  4. 2020年java全套教程,此套java涵盖了pdf,java源码,项目案例,完整视频约3000G的资源

    疫情期间,百无聊赖,是不是需要充电一下,让自己更有竞争力呢?学习java一定要快呦! 废话不多说了,网盘已经爆炸了,把2006年-2020年的全部资料都发给爱学习的你吧, 希望可以改变你的命运,或者是 ...

  5. 多Y轴图的尝试

    最近的一篇文章中需要绘制多Y轴图形,Excel只能做双Y轴图,又尝试了Origin,SigmaPlot,Igor等软件,手动做起来相当繁琐,批量做更是觉得费劲,干脆尝试在MeteoInfoLab里实现 ...

  6. 旋转子段 (思维stl)

    题目: 大概意思就是给你一个序列,你可以选择一段区间使它左右翻折一遍,然后呢,从1到n找一遍,看a[i]==i的数最多是多少. 其实刚才我已经把暴力思路说出来了,枚举每一个区间长度,枚举每一个左端点, ...

  7. 用cgroup限制内存以防止Linux因内存用尽卡死

    Linux在内存用尽的情况下,整个界面,包括tty和ctrl-alt-F1都会卡住难以响应.虽然Linux内核有OOM Killer机制杀掉吃内存的进程,但经常内存用尽时连OOM Killer都无法动 ...

  8. nc发送数据到端口

    head -n 1 /etc/passwd  | nc localhost 9200

  9. mac保存远程链接

    安装sshpass,前提是已经安装好iterm2 下载地址:http://sourceforge.net/projects/sshpass/files/ 百度网盘:https://pan.baidu. ...

  10. js读取xml,javascript读取XML

    IE下示例代码: var xmlDoc = "<root><AlleyWay><Code>1103</Code><Name>胡同2 ...