@RequestBody和@ResponseBody的用法以及Stringify()的作用

首先,在项目的前后交互中json数据格式比较常用,普遍认为json格式比较简单,易于解析

如果我们在前端发送一个ajax请求的话

可以看到是用json字符串格式向后台传请求参数,那么后台需要采用@RequestBody来处理请求的json格式数据,将json数据转换为java对象,否则springmvc就不能解析导致传空参的结果

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。而 @ResponseBody就可以理解成将java的对象转换成json字符串的格式给前端解析(json数据格式解析比较简单)

如果加上@ResponseBody注解,就不会走视图解析器,不会返回页面,目前返回的json数据。如果不加,就走视图解析器,返回页面

 

现在在开发项目有喜欢用key/value的格式传给后台。此方法比较常用。在ajax的data中写 ‘name=我&age=12’这个就不用就可以不用加@RequestBody

这里看下项目中请求的格式可以采用qs.stringify()方法将对象或者数组转换为一个key/value的格式。这个时候后台接受就可以不用加@RequestBody。在这里需要注意的是,JSON中同样存在stringify()方法,但是两者之间的区别是很明显的,json的stringify()是返回json字符串‘{"uid":"cs11","pwd":"000000als","username":"cs11","password":"000000als"}’但是qs.stringify()是返回key/vlue的拼接: uid=cs11&pwd=000000als&username=cs11&password=000000als

总结:

客户端请求的数据是json字符串,springmvc不能直接解析,加@requestBody解析成对象,客户端请求的是key/value的拼接不需要加@requestBody,@responseBody返回json字符串,如果是ajax请求,我们想到得到json对象的话(为了方便根据key取value)

在ajax中增加如下:

dataType: "json"   

参考博客:

https://blog.csdn.net/suwu150/article/details/78333452

https://www.cnblogs.com/cnblog-long/p/6547380.html

          

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值