Spring_@Requestparam、@RequestBody、直接实体接收易错点分析
@Requestparam、@RequestBody、直接实体接收易错点分析
本文章是基于使用这些接收注解的易错点,适合已经初步掌握springMVC知识的.
转载自https://blog.csdn.net/weixin_43888891/article/details/126852207
1 |
|
1.无注解
没有注解的时候可以选择params传参也可以选择body表单
form-data
传参,甚至可以两种同时传,两种同时传会将body传的参数使用逗号拼接上params传的参数==(反正一定要是value格式的)==
不管是body还是params 在不传参的情况下都不会报错,在后端会拿到null值,这块需要注意一下!假如是null值的情况下去get属性,或者是tostring就会空指针!如果传参的话,参数名要和controller当中定义的变量名一样才能接受到参数!任意请求方式 都是一样的!
可以有多个参数的,如果是实体类接参数的话,也是可以有多个实体类的!就算两个实体类当中有参数重复了,也不影响,两个实体类都会接到参数的!
对于这个请求http://localhost:8080/noAnno/url?msg=111&userName=张三
1 |
|
2.@Requestparam
- 带这个注解默认必须传值(required默认true),除非自己改required
defaultValue表示前端传不传值都可以,传值就以前端的为准,不传值就以设置的defaultValue值为准
@RequestParam(name = "pageNo",required = false,defaultValue = "1") Integer pageNo
- @RequestParam可以手打
http://xxx?参数名=值&参数名=值
,也可以使用postman的param
3.@RequestBody
- @RequestBody一般被用来接收http请求中body中json数据。
{"userName":"111","age":"11"}
·,传输json数据,也可以不传key。这里有一点需要注意,mvc给我们做了参数类型转换,Params 对象当中的age
是Integer类型,但是json传字符串,照样可以映射进去。Boolean、BigDecimal、Integer、String、Date
这些其实都可以映射进去的。当然Date相对来说比较特殊一点。传yyyy-MM-dd
格式是不会报错的。但是其他格式可能就会报错了,一般使用Date
类型接参数涉及到需要咱们自己格式化,关于日期相关问题感兴趣的可以看这一篇文章: