基于@RequestBody和@ResponseBody及Stringify()的作用说明
作者:linlinlinfeng 发布时间:2021-12-14 01:47:38
@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"
@RequestBody和@ResponseBody的简单使用接收JSON(接收json数据)
1、想要使用@RequestBody和@ResponseBody呢必须要使用注解的适配器和映射器,至于为什么应该不用多说。
在springMVC中进行配置:
<!-- 使用注解的映射器和适配器 -->
<mvc:annotation-driven/>
2、User类中的字段:ID、name、age、address、sex、phone
3、写一个controller
@RequestMapping("/bodyTest")
@ResponseBody
public User testBody(@RequestBody User user){
return user;
}
4、通过火狐浏览器的HTTPRequester插件进行测试,那么测试的时候需要注意什么呢?
5、当然了,你应该也注意到上面我的Controller的方法上加了一个@ResponseBody,那么他的作用是什么呢?
在上面的Controller中我返回的是User对象,但是在上图的右侧可以看到返回的值,自动转换成了JSON格式
{"id":1,"name":"jin","sex":"man","address":"moerben","age":"12","phone":"110"}
6、网上有说@requestBody需要接收的是一个String化的参数,在传参时可以使用JSONObject.stringiffy(json);这个方法来进行转化。toString应该也是可以的。这两种情况尚未 使用暂时不发表意见,仅提供参考。
来源:https://blog.csdn.net/linlinlinfeng/article/details/82705772


猜你喜欢
- 这篇山寨一个新版QQ的列表滑动删除,上篇有说到QQ的滑动删除,推测原理就是ListView本身每个item存在一个Button,只不过普通的
- 先上效果图,如果大家感觉不错,请参考实现代码。 重要的是如何实现自定义的
- springMVC项目中实现图形验证码功能,可以使用kaptcha来实现,下面是步骤一、引入架包,pom.xml<dependency
- 1安装eclipse插件步骤,点击help,选择Eclipse Marketplace2.输入Scala,点击go3.选择搜索到的Scala
- 本文实例讲述了Android4.4电池低电量告警提示原理与实现方法。分享给大家供大家参考,具体如下:之前版本的电池电量低是通过发送 inte
- 我的接口是这样的:TestCase测试Impl类的方法没有问题,但是Swgger和前端调用接口就会报404错误:在网上查了很多资料,都说是地
- 一、安装插件1.1直接用离线安装,将安装包拖到 IDEA窗口就安装好了,需要重启IDEA生效 (推荐)1.2 直接在idea上下JFormD
- 前言:顺序表的问题及思考1. 顺序表中间/头部的插入删除,时间复杂度为O(N)2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗
- 在Excel中,可对单元格中的字符串设置多种不同样式,通常只需要获取到单元格直接设置样式即可,该方法设置的样式会应用于该单元格中的所有字符。
- 本文实例讲述了C#创建临时文件的方法。分享给大家供大家参考。具体分析如下:C#可以通过Path.GetTempFileName获得一个临时文
- Android当道,现在学习Android开发还晚吗?写下这个问题的时间是–2014年6月15号,我会回答:不晚,Android至少还能在活
- 自定义注解+springAop参数非空校验自定义注解,来对对应的方法进行入参校验,为空返回参数错误新建注解类@interface Param
- Android Studio常用快捷键、Android Studio快捷键大全接下来这篇android studio使用教程,主要为大家介绍
- 网上关于下拉刷新的文章也不少,不过都太长了。恰好发现了官方的下拉刷新库,而且效果还是不错的,简洁美观,用得也挺方便。下面是效果图:我的好友原
- 如今代码圈很多做网络爬虫的例子,今天小编给大家分享的是如何用C#做网络爬虫。注意这次的分享只是分享思路,并不是一整个例子,因为如果要讲解一整
- 方法一:1.在pom.xml文件下添加依赖包<dependency><groupId>com.alibaba<
- 1.其中包括下载JDBC FRO Microsft SQL_Server2000的驱动程序(在微软官方网站下的,是sp3版的,这里就不写具体
- 本文实例讲述了C#动态创建button的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.C
- 1,创建存储过程create proc Pro_Login(@UserName nvarchar(10),@PassWord nvarcha
- 我们在代码中经常使用using保障非托管资源的释放 static void Main(string[] args){