基于@RequestBody和@ResponseBody及Stringify()的作用说明

作者:linlinlinfeng 时间:2021-12-14 01:47:38 

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

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

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

基于@RequestBody和@ResponseBody及Stringify()的作用说明

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

基于@RequestBody和@ResponseBody及Stringify()的作用说明

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。

而 @ResponseBody就可以理解成将java的对象转换成json字符串的格式给前端解析(json数据格式解析比较简单)

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

基于@RequestBody和@ResponseBody及Stringify()的作用说明

现在在开发项目有喜欢用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

基于@RequestBody和@ResponseBody及Stringify()的作用说明

总结:

客户端请求的数据是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插件进行测试,那么测试的时候需要注意什么呢?

基于@RequestBody和@ResponseBody及Stringify()的作用说明

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

标签:RequestBody,ResponseBody,Stringify
0
投稿

猜你喜欢

  • SpringBoot配置全局异常处理器捕获异常详解

    2023-11-28 05:08:07
  • c# 使用Task实现非阻塞式的I/O操作

    2023-07-21 23:27:39
  • Java热门笔试试题整理

    2023-11-25 08:56:33
  • Java中七种排序算法总结分析

    2023-03-27 19:41:44
  • SpringBoot整合Shiro的代码详解

    2023-10-30 10:53:31
  • Android开发之自定义加载动画详解

    2023-07-27 01:41:05
  • Java 基于tcp协议实现文件上传

    2022-04-14 04:01:29
  • idea 有时提示找不到类或者符号的解决

    2023-11-29 04:10:43
  • springboot添加https服务器的方法

    2022-08-19 06:14:31
  • Java方法的参数传递机制实例详解

    2021-05-24 07:38:29
  • 详解使用Maven开发Web应用详细步骤

    2023-08-06 14:18:20
  • Java ThreadPoolExecutor的参数深入理解

    2022-08-29 10:08:39
  • 将JavaDoc注释生成API文档的操作

    2023-06-16 18:24:06
  • Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享

    2022-08-24 02:42:11
  • Java中final变量使用总结

    2022-09-29 08:32:00
  • Spring Cloud Gateway(读取、修改 Request Body)的操作

    2023-11-09 19:25:46
  • Java VisualVM监控远程JVM(详解)

    2022-07-10 15:59:15
  • java动态导出excel压缩成zip下载的方法

    2022-07-13 07:29:27
  • java 多线程的几种实现方法总结

    2023-10-14 17:43:18
  • Java设计模式之模版方法模式简介

    2023-07-16 14:58:32
  • asp之家 软件编程 m.aspxhome.com