-------------------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 是写在方法上,作用于方法返回值

参考链接:

参考链接1参考链接2参考链接3

附:

推荐一个模拟发送请求的 Chrome 插件 Advanced REST Client,非常好用!

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

【made by siwuxie095】

@ResponseBody使用须知的更多相关文章

  1. @RequestBody使用须知

    -----------------------siwuxie095                                 @RequestBody 使用须知         使用 @Requ ...

  2. 《开源博客Q群》和《NET上海Q群》入群须知

    开源博客Q群 群名:<嗨-博客> 群号:469075305(已满) 491585006(New) 群简介:“我们每个猿都有一个搭建自己独立博客的梦”. 入群要求: 您可以是HR,私聊管理员 ...

  3. springmvc @responsebody 406/415问题解决

    提供几个解决思路 1.如果项目中用的spring jar包是4.x版本, 需要jackson-annotations-2.x/jackson-core-2.x/jackson-databind-2.x ...

  4. SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据

    SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没 ...

  5. 《转载》Spring MVC之@RequestBody, @ResponseBody 详解

    引言: 接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody.@ResponseBody的具体用法和使用时机: 简介: @RequestBody 作 ...

  6. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  7. 自定义ViewGroup须知

    自定义ViewGroup须知: 1.必须复写onMeasure和onLayout方法,根据容器的特性进行布局设计 2.复写onMeasure方法必须处理父布局设置宽或高为wrap_content情况下 ...

  8. 解决Spring MVC @ResponseBody返回中文字符串乱码问题

    spring mvc使用的默认处理字符串编码为ISO-8859-1 解决方法: 第一种方法: 对于需要返回字符串的方法添加注解,如下: @RequestMapping(value="/use ...

  9. springMVC使用@ResponseBody返回json

    json格式:{"totle":22,"rows":"sss"} map格式:{totle=22, rows=sss} 一.springMV ...

随机推荐

  1. VC开发中一些问题的解决

    (1) MFC:在视频窗口上显示一个图片: 使用button显示图片的话,鼠标点击好图片(按钮)上,窗口无法响应. 应该使用一个static静态控件来显示,这样不会妨碍视频窗口对鼠标消息的响应. (2 ...

  2. Django之集合函数使用与mysql表的创建特殊字段分析

    1. 集合函数的使用场景: -- 单独使用: 不分组, 只查聚合结果 -- 分组使用: 按字段分组, 可查询分组字段与聚合结果 2. 导入聚合函数 from django.db.models impo ...

  3. java的原子类 AtomicInteger 实现原理是什么?

    采用硬件提供原子操作指令实现的,即CAS.每次调用都会先判断预期的值是否符合,才进行写操作,保证数据安全. CAS机制 CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换. ...

  4. Dockerfile构建MySQL

    转自:https://www.cnblogs.com/jsonhc/p/7807931.html 利用Dockerfile自定义构建MySQL服务折腾了几天,一直在启动服务上出现错误,现在终于解决了该 ...

  5. Module build failed: Error: No PostCSS Config found

    使用vue框架写pc页面时,我们经常会用到element-ui这个框架. 当我们把需要的东西都装在好运行项目的时候,有时会出现这样的错误: 这是因为缺少了一个配置文件,postcss.config.j ...

  6. Android构建项目时出现的小bug们(2018年5月19日19:31:20)

    问题详情 Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency ...

  7. delphi注册热键方法(一)

    uses windows,menus; ..... //声明 HotKey_Key: Word; HotKey_Shift: Word; procedure WMHotKey(var msg : Tm ...

  8. MyBatis动态SQL中trim标签的使用

    My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少. 事实上trim标签有点类似于replace效果. trim 属性 prefix:前缀覆盖并增加其内容 suffix ...

  9. 【原】Win7 host 与 virtualbox ubuntu guest 相同ping通

    环境:Win7 host 与 virtualbox ubuntu guest 在 “设置”-->"网络" 中选择网卡1,修改连接方式为 “桥接网卡” 后, 主机和虚拟机可以相 ...

  10. java解决查找问题

    1.给定一个字符串,找到里面的大写字母和小写字母以及其他字母的个数: 代码: package test; public class Stringclass { public static void m ...