@ResponseBody使用须知
-------------------siwuxie095
@ResponseBody 使用须知
使用 @ResponseBody 注解映射响应体
@ResponseBody 注解可被应用于方法上,标志该方法的返回值
应该被直接写回到 HTTP 响应体中去(而不会被被放置到 Model
中 或 被解释为一个视图名)
在实际开发中,返回 JSON 是最常见的一种方式,而 SpringMVC
提供了一种更为简便的方式输出 JSON(非 JSP 页面),那就是使
用 @ResponseBody 注解
在输出 JSON 时,需要 Jackson 的 jar 包支持,2.x 版本需要导入
如下三个 jar 包:
(1)jackson-core
https://github.com/FasterXML/jackson-core/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/
(2)jackson-annotations
https://github.com/FasterXML/jackson-annotations/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/
(3)jackson-databind
https://github.com/FasterXML/jackson-databind/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/
「截止目前(2018/03/01),Jackson 最新版本为 2.9.4」
例如:
编写一个实体类
User.java:
package com.siwuxie095.entity; public class User { private String userId; private String userName; private String userSex; private String userAge; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; } public String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; } @Override public String toString() { return "User [userId=" + userId + ", userName=" + userName + ", userSex=" + userSex + ", userAge=" + userAge + "]"; } } |
编写一个 Controller 类
UserController.java:
package com.siwuxie095.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.siwuxie095.entity.User; @Controller public class UserController { /** * 注意:这里返回类型不是 ModelAndView * * 使用 @ResponseBody 注解将返回的 POJO * 对象的 List 集合序列化成 JSON */ @RequestMapping("/show/hi") @ResponseBody public List<User> show() { List<User> userList = new ArrayList<User>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setUserId("100" + i); user.setUserName("小明-"+i); user.setUserSex("男"); user.setUserAge("1" + i); userList.add(user); } return userList; } } |
访问路径:
http://localhost:8080/工程名/show.do
原理:
当一个处理请求的方法被标记为 @ResponseBody 时,就说明
该方法需要输出其它视图(JSON、XML),SpringMVC 通过
已定义的转化器做转化输出,默认输出 JSON
注:源码详见 spring-webmvc 的 jar 包中第二个包 org.springframework.
web.servlet.config 中第一个类 AnnotationDrivenBeanDefinitionParser
值得注意的是:
@RequestBody 是写在方法参数前,作用于方法参数
@ResponseBody 是写在方法上,作用于方法返回值
参考链接:
附:
推荐一个模拟发送请求的 Chrome 插件 Advanced REST Client,非常好用!
https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
【made by siwuxie095】
@ResponseBody使用须知的更多相关文章
- @RequestBody使用须知
-----------------------siwuxie095 @RequestBody 使用须知 使用 @Requ ...
- 《开源博客Q群》和《NET上海Q群》入群须知
开源博客Q群 群名:<嗨-博客> 群号:469075305(已满) 491585006(New) 群简介:“我们每个猿都有一个搭建自己独立博客的梦”. 入群要求: 您可以是HR,私聊管理员 ...
- springmvc @responsebody 406/415问题解决
提供几个解决思路 1.如果项目中用的spring jar包是4.x版本, 需要jackson-annotations-2.x/jackson-core-2.x/jackson-databind-2.x ...
- SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据
SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没 ...
- 《转载》Spring MVC之@RequestBody, @ResponseBody 详解
引言: 接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody.@ResponseBody的具体用法和使用时机: 简介: @RequestBody 作 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- 自定义ViewGroup须知
自定义ViewGroup须知: 1.必须复写onMeasure和onLayout方法,根据容器的特性进行布局设计 2.复写onMeasure方法必须处理父布局设置宽或高为wrap_content情况下 ...
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
spring mvc使用的默认处理字符串编码为ISO-8859-1 解决方法: 第一种方法: 对于需要返回字符串的方法添加注解,如下: @RequestMapping(value="/use ...
- springMVC使用@ResponseBody返回json
json格式:{"totle":22,"rows":"sss"} map格式:{totle=22, rows=sss} 一.springMV ...
随机推荐
- elasticSearch-DSL
DSL: query_string match match_phrase match_phrase_prefix multi_match simple_query_string term term ...
- C++中几种测试程序运行时间的方法<转>
转的地址:https://www.cnblogs.com/silentteen/p/7532855.html 1.GetTickCount()函数 原理: GetTickCount()是获取系统启动后 ...
- AJAX之发送GET请求
用jquery发送get请求 function AjaxSubmit1() { $.ajax({ //用jQuery发送 url: '/app04/ajax1/', type: 'GET', data ...
- HBASE小结--待续使用
构建在HDFS之上的分布式,面向列的存储系统,使用zookeeper做协同服务,在需要实时读写和随机访问超大规模数据集的时候使用 缺点:非关系型,不支持SQL,数据类型单一(字符串,无类型),之支持单 ...
- jquery接触初级----jquery 对象和Dom对象
1. DOM 对象,每一份DOm对象(Document Object model)都可以表示成一棵树,一个基本的网页如下: <!DOCTYPE html> <html lang=&q ...
- Indy 10.5.8 for Delphi and Lazarus 修改版(2011)
Indy 10.5.8 for Delphi and Lazarus 修改版(2011) Internet Direct(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的I ...
- python中序列化json模块和pickle模块
内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...
- SSL协议(安全套接层协议)
SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准.其目标是保证 ...
- [PC]PHPCMS二次开发指南(上)
------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...
- RxJava2.0学习笔记1 2018年3月23日 星期五
参考博文:给初学者的RxJava2.0教程-简书 源码 :https://github.com/ssseasonnn/RxJava2Demo 1 若是发送多个onError, 则收到第二个on ...