本文介绍: HttpMessageConverter是Spring Framework中的一个接口用于处理HTTP请求响应消息转换。在Spring MVC中,HttpMessageConverter主要用于将HTTP请求输入内容转换指定的Java对象,以及将Java对象转换为HTTP响应的输出内容。它负责处理请求和响应的数据格式转换,例如将请求的JSON或XML数据转换为Java对象,并将Java对象转换为JSON或XML格式的响应数据

在这里插入图片描述

前言

HttpMessageConverter是Spring Framework中的一个接口用于处理HTTP请求和响应的消息转换。

在Spring MVC中,HttpMessageConverter主要用于将HTTP请求输入内容转换为指定的Java对象,以及将Java对象转换为HTTP响应的输出内容。它负责处理请求和响应的数据格式转换,例如将请求的JSON或XML数据转换为Java对象,并将Java对象转换为JSON或XML格式的响应数据

Spring MVC提供了多个默认的HttpMessageConverter实现,包括处理JSON、XML、文本格式的Converter。另外,我们可以自定义HttpMessageConverter来处理其他格式数据

通过配置HttpMessageConverter,我们可以指定接受的数据格式返回数据格式,Spring MVC会根据请求的Content-Type和Accept信息选择合适的HttpMessageConverter进行数据转换。

参考资料

在写本篇文章过程中,参考了一部分资料,在这里也隆重推荐大家:

参考链接

内容

1、@RequestBody

@RequestBody可以获取请求体,需要控制方法设置一个形参,使用@RequestBody进行标识当前请求的请求体就会为当前注解标识的形参赋值

<form th:action="@{/testRequestBody}" method="post">
    用户名<input type="text" name="username"><br>
    密码<input type="password" name="password"><br>
    <input type="submit">
</form>
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String requestBody){
    System.out.println("requestBody:"+requestBody);
    return "success";
}

输出结果
requestBody:username=admin&amp;password=123456

2、RequestEntity

RequestEntity封装请求报文的一种类型需要控制方法的形参中设置类型的形参,当前请求的请求报文就会赋值给该形参,可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息

@RequestMapping("/testRequestEntity")
public String testRequestEntity(RequestEntity<String> requestEntity){
    System.out.println("requestHeader:"+requestEntity.getHeaders());
    System.out.println("requestBody:"+requestEntity.getBody());
    return "success";
}

输出结果
requestHeader:[host:“localhost:8080”, connection:“keep-alive”, contentlength:“27”, cachecontrol:“max-age=0”, secch-ua:“” Not A;Brand“;v=“99”, “Chromium”;v=“90”, “Google Chrome”;v=“90″”, secch-ua-mobile:“?0”, upgrade-insecurerequests:“1”, origin:“http://localhost:8080”, useragent:“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36”]
requestBody:username=admin&amp;password=123

3、@ResponseBody

@ResponseBody用于标识一个控制方法可以将该方法返回值直接作为响应报文的响应体响应到浏览器

@RequestMapping("/testResponseBody")
@ResponseBody
public String testResponseBody(){
    return "success";
}

结果浏览器页面显示success

4、SpringMVC处理json

@ResponseBody处理json步骤

a>导入jackson依赖

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

b>在SpringMVC的核心配置文件开启mvc注解驱动,此时在HandlerAdaptor中会自动装配一个消息转换器:MappingJackson2HttpMessageConverter,可以将响应到浏览器的Java对象转换为Json格式字符串

<mvc:annotation-driven />

c>在处理器方法使用@ResponseBody注解进行标识

d>将Java对象直接作为控制方法返回返回,就会自动转换为Json格式字符串

@RequestMapping("/testResponseUser")
@ResponseBody
public User testResponseUser(){
    return new User(1001,"admin","123456",23,"男");
}

浏览器页面展示结果

{“id”:1001,“username”:“admin”,“password”:“123456”,“age”:23,“sex”:“男”}

5、SpringMVC处理ajax

a>请求超链接

<div id="app">
	<a th:href="@{/testAjax}" @click="testAjax">testAjax</a><br>
</div>

b>通过vueaxios处理点击事件

<script type="text/javascript" th:src="@{/static/js/vue.js}"></script>
<script type="text/javascript" th:src="@{/static/js/axios.min.js}"></script>
<script type="text/javascript">
    var vue = new Vue({
        el:"#app",
        methods:{
            testAjax:function (event) {
                axios({
                    method:"post",
                    url:event.target.href,
                    params:{
                        username:"admin",
                        password:"123456"
                    }
                }).then(function (response) {
                    alert(response.data);
                });
                event.preventDefault();
            }
        }
    });
</script>

c>控制方法

@RequestMapping("/testAjax")
@ResponseBody
public String testAjax(String username, String password){
    System.out.println("username:"+username+",password:"+password);
    return "hello,ajax";
}

6、@RestController注解

@RestController注解是springMVC提供的一个复合注解,标识在控制器的类上,就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解

7、ResponseEntity

ResponseEntity用于控制器方法的返回类型,该控制器方法的返回值就是响应到浏览器的响应报文

推荐读物 《Spring Boot微服务实战(第2版)》

在这里插入图片描述

购买链接购买链接

内容简介

本书介绍Spring Boot最新版新增功能,包括支持最新版本的Java SE、使用JUnit 5进行测试更新用于服务发现负载均衡的Spring Cloud工具使用原生构建构建Docker映像、提供基本的集中式日志解决方案使用Sleuth实现E2E可追溯性、使用Consul进行集中式配置、依赖项升级支持Spring Data Neumann等。
作者使用紧贴实用的方法来解释使用这种软件架构的好处,而不是只偏重理论概念介绍计算机编程中的一些最先进技术

目录

第1章 设置场景
1.1 读者对象
1.2 本书与其他书籍指南区别
1.2.1 学习:一个增量过程
1.2.2 本书指南还是图书
1.3 从基础到高级主题
1.3.1 以Spring Boot为框架是更专业方式
1.3.2 测试驱动开发
1.3.3 微服务
1.3.4 由事件驱动的系统
1.3.5 非功能需求
1.4 在线内容
1.5 本章小结 第2章 基本概念
2.1 Spring
2.2 Spring Boot
2.3 Lombok和Java
2.4 测试基础知识
2.4.1 测试驱动的开发
2.4.2 行为驱动的开发
2.4.3 JUnit
2.4.4 Mockito
2.4.5 AssertJ
2.4.6 在Spring Boot中进行测试
2.5 日志记录
2.6 本章小结 第3章 一个基础的Spring Boot应用程序
3.1 搭建开发环境
3.2 Web应用框架
3.3 Spring Boot自动配置
3.4 三层架构
3.5 域建模
3.5.1 域定义和域驱动设计
3.5.2 域类
3.6 业务逻辑
3.6.1 功能
3.6.2 随机的Challenge
3.6.3 验证Attempt
3.7 表示层
3.7.1 REST
3.7.2 Spring Boot和REST API
3.7.3 设计API
3.7.4 第一个控制器
3.7.5 自动序列化工作方式
3.7.6 使用Spring Boot测试控制器
3.8 本章小结 第4章 用React构建前端
4.1 快速了解React和Node
4.2 搭建开发环境 …… 第5章 数据层 第6章 从微服务开始 第7章 事件驱动的架构 第8章 微服务架构中的常见 后记

在这里插入图片描述

原文地址:https://blog.csdn.net/m0_60915009/article/details/134238424

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14541.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注