基于@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
猜你喜欢
- 一、前言系统执行业务逻辑之前,会对输入数据进行校验,检测数据是否有效合法的。所以我们可能会写大量的if else等判断逻辑,特别是在不同方法
- 概念介绍不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。01. 强引用这个就
- 1.char数组(字符数组)->字符串可以通过:使用String.copyValueOf(charArray)函数实现。举例:char
- 泛型中 T 类型变量 和 ? 通配符 区别定义不同 :T 是类型变量,? 是通配符使用范围不同:? 通配符用作 参数类型、字段类型、局部变量
- 最近一段时间生产环境频繁出问题,每次都会生成一个hs_err_pid*.log文件,因为工作内容的原因,在此之前并没有了解过相关内容,趁此机
- java 使用foreach遍历集合元素的实例1 代码示例import java.util.*; public class ForeachT
- 定义里氏替换原则(Liskov Substitution Principle,LSP),官方定义如下: 如果对每一个类型为S的对象o1,都有
- springboot读取配置文件到静态工具类通常我们读取配置文件可以用@Value注解和@Configuration,@Configurat
- 背景后台系统需要接入 企业微信登入,满足企业员工快速登入系统流程图简单代码说明自定义一套 springsecurity 认证逻辑主要就是 根
- 策略模式的应用场景策略模式是否要使用,取决于业务场景是否符合,有没有必要。是否符合如果业务是处于不同的场景时,采取不同的处理方式的话,就满足
- 在Web应用系统开发中,文件上传和下载功能是非常常用的
- Map接口存储特点以键(key)值(value)对的形式存储键无序、无下标、元素不可重复值无序、无下标、元素可以重复常用实现类HashMap
- 1、取得控制台应用程序的根目录方法方法1、Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法
- java联调生成测试数据工具类在日常的联调中,我们经常需要准备一定数量的测试数据,用来配合前端测试。当然对于简单的数据类型完全可以通过 JD
- 1 二叉排序树的概述本文没有介绍一些基础知识。对于常见查找算法,比如顺序查找、二分查找、插入查找、斐波那契查找还不清楚的,可以看这篇文章:常
- 前言1.Map里面只能存放对象,不能存放基本类型,例如int,需要使用Integer2.Map集合取出时,如果变量声明了类型,会先进行拆箱,
- 依赖<dependency> <groupId>com.baomidou</groupId> <a
- 用户在注册网站信息的时候基本上都要数据验证码验证。那么图片验证码功能该如何实现呢?大概步骤是:1.在内存中创建缓存图片2.设置背景色3.画边
- 对接前端后效果展示如图:1、CPU相关信息实体类/** * CPU相关信息 * * @author csp */public class
- 一、参数管理在编程系统中,为了能写出良好的代码,会根据是各种设计模式、原则、约束等去规范代码,从而提高代码的可读性、复用性、可修改,实际上个