3.14 @ResponseBody注解 示例 @ResponseBody返回JSON格式的数据
3.14 @ResponseBody注解
用途
org.springframework.web.bind.annotation.ResponseBody
注解用于将Controller
的请求处理方法返回的对象
,通过适当的HttpMessageConverter
转换为指定格式后,写入到Response
对象的body
数据区。
适用范围
当返回的数据不是HTML
标签的页面,而是其他某种格式的数据时(如JSON
、XML
等)使用它。
示例 @ResponseBody返回JSON格式的数据
创建一个ResponseBodyTest
项目,在WebContent
目录下创建一个js
目录,加入jQuery
和json2
的js
文件,在WEB-INF/lib
目录中加入Jackson
的jar
文件。
项目结构
展开/折叠
D:\Desktop\随书源码\Spring+Mybatis企业应用实战(第2版)\codes\03\ResponseBodyTest ├─src\ │ └─org\ │ └─fkit\ │ ├─controller\ │ │ └─BookController.java │ └─domain\ │ └─Book.java └─WebContent\ ├─index.jsp ├─js\ │ ├─jquery-1.11.0.min.js │ ├─jquery-migrate-1.2.1.min.js │ └─json2.js ├─META-INF\ │ └─MANIFEST.MF └─WEB-INF\ ├─lib\ │ ├─commons-logging-1.2.jar │ ├─jackson-annotations-2.9.2.jar │ ├─jackson-core-2.9.2.jar │ ├─jackson-databind-2.9.2.jar │ ├─spring-aop-5.0.1.RELEASE.jar │ ├─spring-aspects-5.0.1.RELEASE.jar │ ├─spring-beans-5.0.1.RELEASE.jar │ ├─spring-context-5.0.1.RELEASE.jar │ ├─spring-context-indexer-5.0.1.RELEASE.jar │ ├─spring-context-support-5.0.1.RELEASE.jar │ ├─spring-core-5.0.1.RELEASE.jar │ ├─spring-expression-5.0.1.RELEASE.jar │ ├─spring-instrument-5.0.1.RELEASE.jar │ ├─spring-jcl-5.0.1.RELEASE.jar │ ├─spring-jdbc-5.0.1.RELEASE.jar │ ├─spring-jms-5.0.1.RELEASE.jar │ ├─spring-messaging-5.0.1.RELEASE.jar │ ├─spring-orm-5.0.1.RELEASE.jar │ ├─spring-oxm-5.0.1.RELEASE.jar │ ├─spring-test-5.0.1.RELEASE.jar │ ├─spring-tx-5.0.1.RELEASE.jar │ ├─spring-web-5.0.1.RELEASE.jar │ ├─spring-webflux-5.0.1.RELEASE.jar │ ├─spring-webmvc-5.0.1.RELEASE.jar │ └─spring-websocket-5.0.1.RELEASE.jar ├─springmvc-config.xml └─web.xml
BookController.java
1 | package org.fkit.controller; |
getJson
方法会将List
集合数据转换成JSON
格式,然后将其返回到客户端。
index.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
分析
index.jsp
页面代码分析如下:
(1)页面使用jQuery
发送请求,在页面的<head>
部分,引入了jQuery
和json2
的js文件。
(2)载入页面时调用testResponseBody
函数。
(3) testResponseBody
函数发送异步请求到"json/testRequestBody"
,请求成功将返回一个JSON
数据,该数据包含多个书籍信息。接到返回的数据后使用jQuery
将数据设置到页面的<table>
表单中。
测试
部署ResponseBodyTest
这个Web
应用,在浏览器中输入如下URL
来测试应用:
1 | http://localhost:8080/ResponseBodyTest/ |
载入index.jsp
页面时会发送Ajax
请求, getJson
方法创建多个Book
对象并将其封装到List
集合中返回,方法上的@ResponseBody
注解会将集合数据转换为JSON
格式数据并将其返回客户端。
此时客户端显示内容如下:
1 | 编号 书名 作者 |
这表示Spring MVC
成功将包含Book
对象的集合数据被转换成JSON
格式并被成功写回客户端。