2023-01-20

一、SpringMVC消息转换器概述

1、HttpMessageConverter<T>

消息转换器作用:

(1)将java对象与请求报文及响应报文进行相互转化

学习笔记——SpringMVC消息转换器概述;使用消息转换器处理请求报文;使用消息转换器处理响应报文;使用消息转换器处理Json格式数据

(2)使用HttpMessageConverter<T>将请求信息转化并绑定到处理方法的入参中或将响应结果转为对应类型的响应信息,Spring提供了两种途径:

①使用@RequestBody/@@ResponseBody对处理方式进行标注。

②使用HttpEntity<T>/ResponseEntity<T>作为处理方法的入参或返回值。

二、使用消息转换器处理请求报文

1、使用@RequestBody获取请求体

(1)语法

final static String SUCCESS = "success";
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String reqBody){
        System.out.println("reqBody = " + reqBody);
        return SUCCESS;
    }

(2)注:使用@RequestBody必须以POST方式提交,不能使用GET方式(GET提交方式,没有请求体)

2、使用HttpEntity<T>对象,获取请求头及请求体

(1)语法:

@RequestMapping("/testHttpEntity")
    public String testHttpEntity(HttpEntity<String> httpEntity){
        //获取请求头
        System.out.println("httpEntity.getHeaders() = " + httpEntity.getHeaders());
        //获取内容
        System.out.println("httpEntity.getBody() = " + httpEntity.getBody());
        return SUCCESS;
    }

(2)可以获取请求头及请求体

三、使用消息转换器处理响应报文

1、@ResponseBody

(1)位置:

①书写在class类上面(当前类所有方法,均返回文本,不调整页面)

②书写在方法上面

(2)语法

@RequestMapping("/testResponseBody")
    @ResponseBody
    public String testResponseBody(){
        System.out.println("testResponseBody !!!");
        return "hello";
    }

四、使用消息转换器处理Json格式数据

1、导入jar包

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

2、装配MappingJackson2HttpMessageConverter消息转换器

必须配置mvc:annotation-drive标签才能装配Jackson的转换器

3、在需要转换json数据的方法上,添加@ResponseBody

4、实例代码:

@RequestMapping("/testJSON")
    @ResponseBody
    public Employee testJSON(){
        System.out.println("testJSON");
        Employee employee = new Employee(1001,"zhangsan","123@163.com",1);
        return employee;
    }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。