SpringMVC @ResponseBody的使用

原文链接:http://www.jianshu.com/p/7097fea8ce3f
@ResponseBody用法
作用:
该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用.
配置返回JSON和XML数据
1.添加jackson依赖

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.5.4</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.5.4</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.5.4</version>
</dependency>

2.开启<mvc:annotation-driven />

3.代码

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping(value = "/query", method = RequestMethod.GET)
    @ResponseBody
    public User queryBasic() {
        User user = new User();
        user.setId(10);
        user.setUserName("zhangsan");
        user.setPassword("123456");
        user.setSex(10);
        user.setCreated(new Date());
        return user;
    }
}

User.java

public class User {

    private Integer id;

    // 用户名
    private String userName;

    // 密码
    private String password;

    // 性别,1男性,2女性
    private Integer sex;

    // 创建时间
    private Date created;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName=‘" + userName + ‘\‘‘ +
                ", password=‘" + password + ‘\‘‘ +
                ", sex=" + sex +
                ", created=" + created +
                ‘}‘;
    }
}

测试

---------------------------------------------------------

总结:

可以看到,想要返回json数据只要配置三个地方就可以了

1.jackson依赖
2.SpringMVC配置文件中加上<mvc:annotation-driven/>注解
3.Controller中的@ResponseBody注解

除此之外并不需要配置转换器什么的,当然这只是使用,其中的原理还是要去了解的

时间: 2024-10-11 04:00:17

SpringMVC @ResponseBody的使用的相关文章

springmvc @ResponseBody返回json 报406 not acceptable

今天在做springmvc的@ResponseBody返回json的例子时,碰到了这样一个问题"406 (Not Acceptable)",百度之后发现在缺了一个依赖包jackson-databind. 1.spring-mvc.xml配置文件 2.pom.xml文件 [email protected]代码

spring-mvc @responseBody注解返回中文乱码解决

在项目中能设置UTF-8基本都设置了,通过ajax请求后台的springmvc后返回中文字符串,页面显示???,解决办法是: 在方法中添加:produces = "text/html;charset=UTF-8". 具体添加位置如下: @RequestMapping(value="/getpersonLimitItemNameByDeptIdAndSglcheckid", produces = "text/html;charset=UTF-8")

(转) springmvc @responsebody 字符编码修改

转载自 http://blog.csdn.net/yiyuhanmeng/article/details/7441380 今番又遇到乱码问题,有时候真觉得英语母语的那些地区确实挺省事的,至少不用为了这个经典麻烦去折腾. 网络上讨论乱码问题的文章很多,因为各作者使用的计算机环境的不同,往往不是很全面. 这里非常推荐的一篇文章: http://dohkoos.name/java-garbled-analysis.html 简而言之,乱码的“根本原因是由于编码和解码采用的不是同一种码”.例如作者所举的

springmvc @responsebody json字符编码

方法一,使用(produces = "application/json; charset=utf-8"): @RequestMapping(value="/getUsersByPage",produces = "application/json; charset=utf-8") // @RequestMapping("/getUsersByPage") @ResponseBody public String getUsersB

springmvc @ResponseBody相关配置

我想在程序里这么使用 @RequestMapping("/list") @ResponseBody public List<String> getList(){ List<String> list=new ArrayList<String>(); list.add("哈哈"); list.add("哈哈"); list.add("哈哈"); list.add("哈哈");

解决spring-mvc @responseBody注解返回json 乱码问题

在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题.现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文常常是以 “????”显示,让人很恼火.在网上搜索后有很多解决的方案,方案都说中文乱码问题牵扯到springmvc的 StringHttpMessageConverter类,给出的答案都是自己去写个类继承它,然后用一堆眼花缭乱的配置

SpringMVC responseBody注解分析

@responsebody表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中.比如异步获取json数据,加上@responsebody后,会直接返回json数据.

SpringMVC @ResponseBody和@RequestBody使用

@ResponseBody用法 作用: 该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区. 使用时机: 返回的数据不是html标签的页面,而是其他某种格式的数据时(如json.xml等)使用. 配置返回JSON和XML数据 添加jackson依赖 <dependency> <groupId>com.faste

Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?

SpringMvc @ResponseBody生成json转换问题, 日志里会有: at com.google.gson.internal.bind.TypeAdapters$1.write at com.google.gson.Gson.toJson 这些错误信息, 经查是数据库查询用到了HQL, 而hibernate 实体类里有一对多关系并且有FetchType.LAZY限定. 解决方法是:不用HQL,用SQL查就行了.