网站首页 > java教程 正文
在使用SpringMVC框架开发项目时,经常会用到@ResponseBody和@RequestBody这两个注解,它们都是SpringMVC处理json格式数据的注解,那么它们之间到底有什么区别,该怎么使用,如果你也感到困惑,那就继续往下看吧。
如果后台要给前端返回json格式数据,这时使用@ResponseBody注解来处理。
@ResponseBody注解是用在方法上,代表它会将后台的JavaBean对象转换成json字符串,返回给页面,一般页面使用AJAX发送异步请求时使用。
这时在方法上面使用@RequestMapping,不会解析成跳转路径,也就是不会转到视图解析器拼接返回路径,而是直接返回json数据到页面AJAX请求的success函数,直接解析就可以获取数据。
那如果是前端发送json格式数据给后端呢,该怎么办?
这个时候就要使用@RequestBody注解来处理了。
@RequestBody是用在方法形参列表上,用于接受前台json数据,把json字符串自动封装到javaBean对象属性上。
下面来看一个例子
如果项目使用jackson生成json数据,需要引入jackson的jar包,这里有个坑,要注意一下,我这里用的Spring5版本,所以jackson的jar版本不能低于2.9。(当然这里也可以使用阿里的fastjson生成json数据)。
Springmvc部分配置文件:
页面异步使用ajax请求,返回的json数据,在success方法中获取并解析。
Controller层的方法
使用注解@RequestBody需要注意的地方
1.前端ajax请求必须以post方式。
2.前端页面提交的json数据格式必须是json字符串类型,不能直接提交json对象,
并且json字符串中的各属性名需要与封装的实体类属性名一一对应!
3.使用的ajax请求必须设置contentType属性值为application/json。
而使用注解@ResponseBody没啥注意点,直接加在方法返回值前就行。
通过上面的比较和例子的使用,希望大家以后在开发时不要混淆了它们的使用,如果还有什么疑问,欢迎大家在下面留言交流。
猜你喜欢
- 2024-10-10 简单的对象转换方法类分享(对象转化为字符串的几种方式)
- 2024-10-10 为什么 JSON 不适合作为配置语言?
- 2024-10-10 JSON 对象的这些操作和使用场景你知道多少?
- 2024-10-10 第27天|Java入门有野,json操作(java的json解析几种方法)
- 2024-10-10 springboot从小白到大神-007处理Json数据进阶
- 2024-10-10 Fastjson2如何进行JSON的解析和对象序列化?
- 2024-10-10 Java笔试题目分享(2)知识点总结——Json对象
- 2024-10-10 面试官问,你知道http请求怎么在你的项目中变成Java对象吗?
- 2024-10-10 Spring Boot 中使用FastJSON来替换默认的JSON数据序列方式?
- 2024-10-10 Java Jackson 中如何 Pending JSON 对象到数组中
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)