@ResponseBody使用须知

-------------------siwuxie095

  

  

  

  

  

  

  

  

@ResponseBody 使用须知

  

  

使用@ResponseBody注解映射响应体

  

  

@ResponseBody注解可被应用于方法上,标志该方法的返回值

应该被直接写回到HTTP响应体中去(而不会被被放置到Model

被解释为一个视图名)

  

  

  

在实际开发中,返回JSON 是最常见的一种方式,而 SpringMVC

提供了一种更为简便的方式输出JSON(非 JSP 页面),那就是使

用 @ResponseBody 注解

  

  

  

在输出JSON 时,需要Jackson 的 jar 包支持,2.x 版本需要导入

如下三个 jar 包:

  

1jackson-core

  

https://github.com/FasterXML/jackson-core/wiki

  

http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/

  

  

2jackson-annotations

  

https://github.com/FasterXML/jackson-annotations/wiki

  

http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/

  

  

3jackson-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;

}

publicvoid setUserId(String userId) {

this.userId = userId;

}

 

public String getUserName() {

return userName;

}

publicvoid setUserName(String userName) {

this.userName = userName;

}

 

public String getUserSex() {

return userSex;

}

publicvoid setUserSex(String userSex) {

this.userSex = userSex;

}

 

public String getUserAge() {

return userAge;

}

publicvoid 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】

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值