`

SpringMVC @ResponseBody和@RequestBody使用

 
阅读更多

@ResponseBody用法

作用:

  • 该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:

  • 返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用.

配置返回JSON和XML数据

  • 添加jackson依赖
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.1</version>
</dependency>
  • 开启

<mvc:annotation-driven />
  • java代码为

@RequestMapping("/testResponseBody")
    public @ResponseBody
    Person testResponseBody() {
        Person p = new Person();
        p.setName("xiaohong");
        p.setAge(12);
        return p;
    }

 

@XmlRootElement(name = "Person")
public class Person {
    private String name;
    private int age;
    public String getName() { return name;    }
    @XmlElement
    public void setName(String name) { this.name = name;    }
    public int getAge() { return age;    }
    @XmlElement
    public void setAge(int age) { this.age = age;    }
}

 

  • Ajax代码
$.ajax({
    url: "testResponseBody",
    type: 'GET',
    headers: {
        Accept: "application/xml",
//        Accept:"application/json",
    },
    success: function(data, textStatus){
        console.log(data);
        alert(data);
    },
    error: function (data, textStatus, errorThrown) {
        console.log(data);
    },
        });

 

  分析

  • 如果没有配置Person类的XML注解,那么只会JSON数据,无论Accept是什么,

  • 如果配置了Person类的xml注解,那么如果Accept含有applicatin/xml, 就会返回xml数据.例如通过浏览器直接访问,浏览器的http request header appect字段一般都为
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8, 故返回XML数据.
    accept: "application/json",即可返回JSON数据.

用此注解或者ResponseEntity等类似类, 会导致response header含有accept-charset这个字段,而这个字段对于响应头是没有用的,以下方法可以关掉

<mvc:annotation-driven>
        <mvc:async-support default-timeout="3000"/>
        <!-- utf-8编码 -->
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
                <property name="writeAcceptCharset" value="false"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

 

@RequestBody使用

作用:

  • 注解用于将Controller的方法参数,根据HTTP Request Header的content-Type的内容,通过适当的HttpMessageConverter转换为JAVA类

使用时机:

  • POST或者PUT的数据是JSON格式或者XML格式,而不是普通的键值对形式.

如何使用

其他代码同上, 配置Controller,如下:

@RequestMapping(value = "/testRequestBody", method= RequestMethod.POST)
    @ResponseBody
    public Person testRequestBody(@RequestBody Person p) {
        System.out.println("creating a employee:" + p);
        return p;
    }

 

Ajax代码如下:

$.ajax({
    url: "testRequestBody",
    data: '{"name":"小红","age":12}', //要用双引号!!
    contentType: "application/json;charset=utf-8", // 因为上面是JSON数据

    type: "POST",
    headers: {
//                Accept: "application/xml",
        Accept: "application/json",
    },
    success: function(data, textStatus){
        console.log(data);
        alert(data);
    },
    error: function (data, textStatus, errorThrown) {
        console.log(data);
    },
});
作者:tenlee
链接:https://www.jianshu.com/p/7097fea8ce3f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分享到:
评论

相关推荐

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(下)

    在Spring MVC框架中,`@RequestBody` 和 `@ResponseBody` 是两个非常重要的注解,它们在处理HTTP请求和响应时起到了关键作用。本篇文章将详细解释这两个注解的工作原理、使用场景以及如何实现Java对象与XML/JSON数据...

    SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)

    在实际开发中,`@RequestBody` 和 `@ResponseBody` 的组合使用使得Spring MVC能够轻松地处理RESTful API的请求和响应。它们简化了数据交换的过程,减少了手动序列化和反序列化的代码,提高了开发效率。通过理解这两...

    springMvc注解之 ResponseBody和 RequestBody.docx

    在Spring MVC中,`@ResponseBody`和`@RequestBody`是两个关键的注解,它们用于处理HTTP请求和响应中的数据转换。这两个注解是Spring框架对RESTful API开发的重要支持,使得开发者能够方便地处理JSON格式的数据。 ...

    彻底根治Spring @ResponseBody JavaScript HTML特殊字符

    在开发Web应用时,我们经常会遇到一个问题:当使用Spring MVC的`@ResponseBody`注解将后端处理结果直接转化为HTTP响应体时,如果这个结果中包含HTML特殊字符,如尖角号、引号、按位与符号等,浏览器可能会误解析,...

    springMvc注解之@ResponseBody和@RequestBody详解

    Spring MVC注解之@ResponseBody和@RequestBody详解 在Spring MVC框架中,@ResponseBody和@RequestBody是两个非常重要的注解,它们分别用于处理HTTP请求响应体和请求体的序列化和反序列化。下面,我们将详细介绍这两...

    快速解决SpringMVC @RequestBody 用map接收请求参数的问题

    快速解决SpringMVC @...使用 @RequestBody 注解可以快速解决 SpringMVC 中的请求参数接收问题,但是需要注意一些细节,如使用 @RequestParam 注解,使用 getParameterMap() 方法,使用 JSON.stringify() 方法等。

    Springmvc 4.x利用@ResponseBody返回Json数据的方法

    @ResponseBody注解的功能与@RequestMapping中的consumes属性和@RequestBody注解刚好相反。@RequestBody注解用于方法的参数,表示HTTP请求体中的内容需要被转换成相应的Java对象。而@ResponseBody则用于方法的返回值...

    springMVC的 RequestBody和 ResponseBody和RequestParam.docx

    ### Spring MVC 中的 RequestBody 和 ResponseBody 及 RequestParam 使用详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring Framework 的一部分,它提供了一种清晰的模型—视图—控制器架构实现,用于构建 Web ...

    Spring MVC – Easy REST-Based JSON Services with @ResponseBody

    `@RequestBody`注解也可以用于处理HTTP请求的主体内容,将请求中的JSON数据转换为Java对象。 标签"源码"意味着文章可能深入讲解了Spring MVC框架的内部实现,或者提供了自定义的代码示例。"工具"可能指的是使用了...

    SpringMVC中解决@ResponseBody注解返回中文乱码问题

    本文将详细介绍如何解决SpringMVC中`@ResponseBody`注解返回中文乱码的问题。 首先,我们可以尝试使用`@RequestMapping`注解的`produces`属性来指定响应内容的MIME类型和字符集。例如: ```java @RequestMapping...

    SpringMVC环境搭建

    本教程将指导你如何搭建一个非Maven的SpringMVC项目,主要关注@RequestBody和@ResponseBody的配置。 首先,让我们了解SpringMVC的基本结构。一个标准的SpringMVC项目通常包含以下几个关键部分: 1. **src目录**:...

    springmvc实现json交互-requestBody和responseBody

    本文将深入探讨如何使用`@RequestBody`和`@ResponseBody`注解来实现JSON的处理。 首先,JSON作为一种轻量级的数据交换格式,其简单性和易于解析的特性使得它在接口调用和HTML页面中被广泛使用。例如,在Web服务接口...

    Http请求传参SpringMVC接收参数详细解析

    本文将深入解析SpringMVC如何处理GET和POST请求中的参数,以及如何使用@RequestParam和@RequestBody注解。 1. GET请求 GET请求通常用于获取资源,其参数直接附加在URL路径后面,以键值对的形式存在。例如,`/api/...

    Spring MVC打印@RequestBody、@Response日志的方法

    Spring MVC框架提供了强大的日志记录功能,对于日志记录的实现,Spring MVC提供了多种方式,本文将主要介绍如何使用RequestBodyAdvisor和ResponseBodyAdvisor来实现对@RequestBody和@Response的日志输出。...

    springMVC技术概述

    springMVC相关技术配置使用注解的HandlerMapping和HandlerAdapter使用&lt;mvc:annotation-driver&gt; 不过springBoot已经省略了这些配置 配置使用注解的Handler和Service...@RequestBody,@ResponseBody--json与java对象转换

    springmvc的使用

    在SpringMVC中,我们可以使用@RestController注解来标注控制器,使用@RequestMapping注解来标注请求映射,使用@RequestBody注解来标注请求体,使用@ResponseBody注解来标注响应体。 例如,我们可以编写一个简单的...

    springmvc操作json数据所需的jar包

    在控制器中,我们可以使用`@RequestBody`和`@ResponseBody`注解来处理JSON数据。`@RequestBody`用于将请求体中的JSON数据映射到方法参数,而`@ResponseBody`则将方法返回的对象转换为JSON并写入响应体。 例如: ```...

    SpringMVC restful 注解之@RequestBody进行json与object转换

    然而,在尝试使用`@RequestBody`注解并调用服务时遇到了问题。开发者首先怀疑可能是Spring没有正确加载`MappingJackson2HttpMessageConverter`,或者加载后没有正常工作。为了验证这个假设,他们尝试自定义配置以...

    springmvc-json-lib.rar

    在这个例子中,`@RequestBody`注解将请求体中的JSON转换为User对象,`@ResponseBody`则将控制器返回的User对象转换为JSON响应。 此外,我们还可以自定义JSON序列化和反序列化的规则,例如忽略某些字段、自定义日期...

    springmvc+fastjson demo

    例如,使用 `@RequestBody` 注解接收 JSON 数据,使用 `@ResponseBody` 注解将方法返回值转化为 JSON 输出。 4. **配置 Fastjson**:在 Spring MVC 中集成 Fastjson 需要添加 fastjson 的依赖库,并配置 ...

Global site tag (gtag.js) - Google Analytics