前后端进行数据交互的时候,规定数据交互的格式,使数据交互规范而统一,是极为重要的事。一般而言,我们会采用 JSON 进行数据交互。本文暂不讨论如何 JSON 的格式规范,而是解析一下如何在 SpringMVC 中方便快捷的使用 JSON 进行数据交互。那就是使用两大注解: @ResponseBody 和 @RequestBody 。

pom.xml
我采用 Maven 来管理构建项目,要使用 @ResponseBody 和 @RequestBody ,要先在 pom.xml 里引入 jackson 依赖包。

<!--JSON交互-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.2</version>
</dependency>

额,至于 SpringMVC 具体使用哪个版本就需要你自己选择了。

开启 < mvc:annotation-driven />
为什么要开启 < mvc:annotation-driven /> ?
相当于注册了 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 两个 bean ,配置一些 messageconverter 。即解决了 @Controller 注解的使用前提配置。而我们在使用 SpringMVC 时,一定会用到 @Controller 注解,如果没有 < mvc:annotation-driven/> ,那么所有的 Controller 可能就没有解析。

Java 代码示例
实体类:

public class User {
private String name;
private int id;
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public int getId() { return id;}
public void setId(int id) { this.id = id;}
}

Controller:

@Controller
@RequestMapping("/json")
public class Controller { //仅发送 JSON ,即仅使用 @ResponseBody 注解
@RequestMapping("/justResponse")
@ResponseBody
public Map<String, Object> justResponse(Model model) throws Exception {
Map<String, Object> map =new HashMap<String, Object>();
User user = new User();
user.setName("Test");
user.setId(123);
map.put("string", "string");
map.put("user", user);
return map;
} //仅接收 JSON ,即仅使用 @RequestBody注解
@RequestMapping("/justRequest")
public User justRequest(@RequestBody User user) throws Exception {
System.out.println("This is " + user.name);
return user;
} //收发 JSON ,即使用 @ResponseBody 和 @RequestBody
@RequestMapping("/responseAndRequest")
@ResponseBody
public Map<String, Object> responseAndRequest(@RequestBody User user) throws Exception {
System.out.println("This is " + user.name);
Map<String, Object> map =new HashMap<String, Object>();
map.put("string", "string");
map.put("user", user);
return map;
}
}

之所以会有 Map< String, Object > ,是因为数据交互时会存在多个对象,这样可能更贴合实际。以及还有一点,确保数据格式为 JSON ,不过使用 XML 也可以,以上两个注解也支持 XML 。

SpringMVC 之 @ResponseBody 和 @RequestBody的更多相关文章

  1. springMVC的@ResponseBody、@RequestBody使用需要注意的地方

    springMVC我觉得比struts2好的其中一个原因就是可以使用注解解析json数据,方便快捷.但是,即使如此,还是有需要注意的地方. 1.返回的地方设置@ResponseBody,请求的对象参数 ...

  2. springMvc注解之@ResponseBody和@RequestBody

    简介 springmvc对json的前后台传输做了很好封装,避免了重复编码的过程,下面来看看常用的@ResponseBody和@RequestBody注解 添加依赖 springmvc对json的处理 ...

  3. SpringMVC @ResponseBody和@RequestBody使用

    @ResponseBody用法 作用: 该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConvert ...

  4. 转-Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

    转-http://snowolf.iteye.com/blog/1628861/ Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariab ...

  5. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable (转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  6. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  7. @ResponseBody,@RequestBody,@PathVariable

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  8. 解决SpringMVC的@ResponseBody返回中文乱码

    SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.conve ...

  9. [转]SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意

    一.SpringMVC使用@ResponseBody时返回json的日期格式 前提了解: @ResponseBody 返回json字符串的核心类是org.springframework.http.co ...

随机推荐

  1. windows Server 2012/2016 路由和远程访问,PPPOE,ADSL,连接接口时出现一个错误,连接被远程计算机终止

    经过查询资料,是由mprddm.dll的bug引起的. 修改位置: 将je修改为jmp. 查找修改位置,可参考 前面的RasGetPortUserData的调用,或者 后面的 字符串 64位dll可使 ...

  2. Alpha 任务状态总览(持续更新)

    Alpha 任务状态总览(持续更新) Part 0 · 简 要 目 录 Part 1 · 流 程 Part 2 · 总 任 务 量 安 排 Part 3 · 爬 虫 任 务 Part 4 · 接 口 ...

  3. 函数式编程的终极形式:面向映射流的编程pipeline

    1.单体(数据)映射:基本操作:数据的单次映射: 2.管道流:数据的流程化处理 基础是monand类型,形式是声明式编程: Pipeline模型: 它以一种“链式模型”来串接不同的程序或者不同的组件, ...

  4. Spark项目之电商用户行为分析大数据平台之(十)IDEA项目搭建及工具类介绍

    一.创建Maven项目 创建项目,名称为LogAnalysis 二.常用工具类 2.1 配置管理组建 ConfigurationManager.java import java.io.InputStr ...

  5. Linux命令——文件和目录管理

    Linux命令--文件和目录管理 基本命令 命令ls 作用:显示目录下的文件和文件夹 说明:默认显示当前目录,可跟路径参数 参数:-a,显示隐藏目录 参数:-l,显示文件权限 参数:-d,显示文件最后 ...

  6. 【FRM123】Wrong Way Risk

    https://www.investopedia.com/articles/investing/102015/introduction-wrong-way-risk.asp https://www.r ...

  7. rebase合并commit步骤详解

    网上关于rebase合并commit有很多文章,但大部分中间一些步骤没有写明 第一步:在终端输入 git rebase -i [startPoint] [endPoint] 并回车 第二步:编辑指令, ...

  8. PReLU与ReLU

    PReLU激活函数,方法来自于何凯明paper <Delving Deep into Rectifiers:Surpassing Human-Level Performance on Image ...

  9. MyBatis之Collection

    Collection翻译过来,意为"集合"的意思,既然是集合,肯定是代表多个. MyBatis以其自身,小巧易懂,闻名于JavaEE. 传统的JDBC就不说了,Hibernate记 ...

  10. 蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)

    Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...