springMVC接口接受前端传递参数数据类型总结

最近项目中处理前台数据时突然发现比较模糊这些概念,所以总结如下:

目录

一、springMVC中controller参数是自动注入

二、 接受前端传递的对象

1、从querystring中的参数中获取:

2、从请求体(body)中获取(及获取对象数据)

3、接收前端传递的数组

三、总结

一、springMVC中controller参数是自动注入

在springMVC中,controller中方法的参数是自动注入的,在使用注解的方式下,通常有:

                  @RequestParam:  取querystring当中的参数
                  @PathVariable:     取 在@RequestMapping中定义的占位符中的参数(/test/{id})
                  @RequestBody:   取request 这个消息体 (可以组装json对象)

在不使用注解的情况下,默认有一些对象可以自动注入如:

                  HttpServletRequest
                  HttpServletResponse
                  MultipartFile
                  MultipartRequest

除此之外不使用注解的情况下,也可以接受前台传入的querystring中的参数。

二、 接受前端传递的对象

1、从querystring中的参数中获取:

@RequestParam:接受对象类型(Integer、String、Boolean等基本数据类型),不能接收自定义类型。

不带注解:接受基本数据类型,若接收类型为自定义类型,会组装参数中与自定义类型属性名和类型相符的参数。

这种方式总结:

(1).获取自定义类型的对象时,不使用注解即可以获取

(2).在组装对象时可以使用以被获取过的参数

注意:$.ajax contenType是appliation/json的时候,在后台用spring mvc的@Requestparam注解接收参数,始终接收不到。因为@RequestParam 底层是通过request.getParameter方式获得参数的,也就是说,@RequestParam 和 request.getParameter是同一回事。

所以@RequestParam可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容(及表单内容数据),提交方式GET、POST。

2、从请求体(body)中获取(及获取对象数据)

当请求体中是一段json数据时,@RequestBody会解析该json字符串并将其注入指定的自定义类型中。

通过@RequestBody的方式可以接收以json数据传输的对象,但前提是请求的Content-Type必须为application/json,并且引入了jackson-databind包

注意:

1.@RequestBody该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;

2.@RequestBody接收的是一个Json对象的字符串而不是一个Json对象在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串

3.不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111$bbb=222。form表单提交以及jQuery的$.post()方法所发送的请求就是这种类型。例如后台接口接收数据的对象前不加@RequestBody修饰。

3、接收前端传递的数组

接收数组可以使用注解方式的@RequestParam、@RequestBody或者无注解的方式,也可以同时使用他们三个

在接受数组时,默认按照方法的参数名来映射请求的参数,目前很多前端框架喜欢传递数组时在请求参数后面加上"[]",所以使用@RequestParam时可以规定value使之对应如@RequestParam("ids[]") Integer[] ids。

三、总结

由上可知道,后台需要处理什么数据,或者需要前台需要传递什么类型的数据时,我们既可以根据这些特性来判断,而不会导致有时contentType不一致,甚至不知道自己需要前端传什么样类型的数据格式等等。

参考学习:SpringMVC接受JSON参数详解及常见错误总结 - 简书

                 https://www.jianshu.com/p/4981911d5e15

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

平凡之路无尽路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值