这篇文章主要为大家展示了“基于@RequestBody和@ResponseBody及Stringify()的作用是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于@RequestBody和
这篇文章主要为大家展示了“基于@RequestBody和@ResponseBody及Stringify()的作用是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于@RequestBody和@ResponseBody及Stringify()的作用是什么”这篇文章吧。
首先,在项目的前后交互中JSON数据格式比较常用,普遍认为json格式比较简单,易于解析
可以看到是用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"
想要使用@RequestBody和@ResponseBody呢必须要使用注解的适配器和映射器,至于为什么应该不用多说。
在springMVC中进行配置:
<!-- 使用注解的映射器和适配器 --> <mvc:annotation-driven/>
User类中的字段:ID、name、age、address、sex、phone
写一个controller
@RequestMapping("/bodyTest") @ResponseBody public User testBody(@RequestBody User user){ return user; }
通过火狐浏览器的HTTPRequester插件进行测试,那么测试的时候需要注意什么呢?
当然了,你应该也注意到上面我的Controller的方法上加了一个@ResponseBody,那么他的作用是什么呢?
在上面的Controller中我返回的是User对象,但是在上图的右侧可以看到返回的值,自动转换成了JSON格式
{"id":1,"name":"jin","sex":"man","address":"moerben","age":"12","phone":"110"}
网上有说@requestBody需要接收的是一个String化的参数,在传参时可以使用JSONObject.stringiffy(json);这个方法来进行转化。toString应该也是可以的。这两种情况尚未 使用暂时不发表意见,仅提供参考。
以上是“基于@RequestBody和@ResponseBody及Stringify()的作用是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!
--结束END--
本文标题: 基于@RequestBody和@ResponseBody及Stringify()的作用是什么
本文链接: https://lsjlt.com/news/279508.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0