返回顶部
首页 > 资讯 > 精选 >如何实现HttpMessageConverter报文信息转换器的深入分析
  • 714
分享到

如何实现HttpMessageConverter报文信息转换器的深入分析

2023-06-26 03:06:09 714人浏览 八月长安
摘要

如何实现HttpMessageConverter报文信息转换器的深入分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言HttpMessageConverter,报文信息

如何实现HttpMessageConverter报文信息转换器的深入分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

    前言

    HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文。

    HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity。

    HttpMessageConverter 介绍

    org.springframework.http.converter.HttpMessageConverter 是一个策略接口,接口说明如下:

    Strategy interface that specifies a converter that can convert from and to HTTP requests and responses. 简单说就是 HTTP request (请求)和response (响应)的转换器。该接口有只有5个方法,简单来说就是获取支持的 MediaType(application/JSON之类),接收到请求时判断是否能读(canRead),能读则读(read);返回结果时判断是否能写(canWrite),能写则写(write)。这几个方法先有个印象即可:

    boolean canRead(Class<?> clazz, MediaType mediaType);boolean canWrite(Class<?> clazz, MediaType mediaType);List<MediaType> getSupportedMediaTypes();T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException;void write(T t, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException;

    一、@RequestBody 请求体注解

    @RequestBody可以获取请求体,需要在控制器方法设置一个形参。

    使用@RequestBody进行标识,当前请求的请求体就会为当前注解所标识的形参赋值。

    1.1、表单提交模拟

    <fORM th:action="@{/testRequestBody}" method="post">    用户名:<input type="text" name="username"><br>    密码:<input type="passWord" name="password"><br>    <input type="submit"></form>

    1.2、控制器方法示例

    @RequestMapping("/testRequestBody")public String testRequestBody(@RequestBody String requestBody){    System.out.println("requestBody:"+requestBody);    return "success";}

    输出结果:

    requestBody:username=admin&password=123456

    二、RequestEntity 请求封装对象

    RequestEntity 封装请求报文的一种类型,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报文就会赋值给该形参。

    • 通过getHeaders()获取请求头信息

    • 通过getBody()获取请求体信息

    2.1、控制器方式示例

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

    2.2、输出结果

    requestHeader:[host:"localhost:8080", connection:"keep-alive", content-length:"27", cache-control:"max-age=0", sec-ch-ua:"" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"", sec-ch-ua-mobile:"?0", upgrade-insecure-requests:"1", origin:"http://localhost:8080", user-agent:"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&password=123

    三、@ResponseBody 响应体注解

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

    3.1、控制器方式示例

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

    结果:浏览器页面显示 success

    3.2、springMVC 添加json格式转换器

    首先:导入jackson的依赖

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

    然后:在Springmvc的核心配置文件中开启mvc的注解驱动。

    此时在HandlerAdaptor中会自动装配一个消息转换器:MappingJackson2HttpMessageConverter,可以将响应到浏览器的Java对象转换为Json格式的字符串

    <mvc:annotation-driven />

    3.3、控制器使用 Json 格式转换器示例

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

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

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

    浏览器的页面中展示的结果:

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

    3.4、@RestController注解

    @RestController注解是springMVC提供的一个复合注解,标识在控制器的类上。

    相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解。

    四、ResponseEntity 响应封装对象

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

    关于如何实现HttpMessageConverter报文信息转换器的深入分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

    --结束END--

    本文标题: 如何实现HttpMessageConverter报文信息转换器的深入分析

    本文链接: https://lsjlt.com/news/306483.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 如何实现HttpMessageConverter报文信息转换器的深入分析
      如何实现HttpMessageConverter报文信息转换器的深入分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言HttpMessageConverter,报文信息...
      99+
      2023-06-26
    • HttpMessageConverter报文信息转换器的深入讲解
      目录前言HttpMessageConverter 介绍一、@RequestBody 请求体注解1.1、表单提交模拟1.2、控制器方法示例二、RequestEntity 请求封装对象2...
      99+
      2024-04-02
    • SpringMVC HttpMessageConverter报文信息转换器
      目录SpringMVC HttpMessageConverter报文信息转换器一、@RequestBody二、RequestEntity三、@ResponseBody1.不使用 @R...
      99+
      2024-04-02
    • SpringMVC HttpMessageConverter报文信息转换器怎么使用
      这篇“SpringMVC HttpMessageConverter报文信息转换器怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面...
      99+
      2023-06-30
    • 如何深入分析synchronized的实现原理
      如何深入分析synchronized的实现原理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。记得刚刚开始学习Java的时候,一遇到多线程情况就是synchron...
      99+
      2023-06-17
    • 如何实现facebook的信息架构评析
      这期内容当中小编将会给大家带来有关如何实现facebook的信息架构评析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。facebook的信息架构设计,是目前为止互联网上我见过的最合理的信息架构。每次培训,...
      99+
      2023-06-08
    • jQuery如何实现TEXT文本框输入时的提示信息
      这篇文章主要介绍了jQuery如何实现TEXT文本框输入时的提示信息,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在搜索框中,输入之前框内有...
      99+
      2024-04-02
    • 如何实现Android中图片占用内存的深入分析
      小编今天带大家了解如何实现Android中图片占用内存的深入分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“如何实现Android...
      99+
      2023-06-26
    • 如何实现检查网络信息的bat文件
      小编给大家分享一下如何实现检查网络信息的bat文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!@echo off netsh -c...
      99+
      2023-06-09
    • 深入探究Python底层技术:如何实现句法分析
      对于自然语言处理领域来说,句法分析是一个至关重要的任务。它可以帮助我们理解句子的结构和语法,从而对句子进行更深入的理解和分析。Python作为一种流行的编程语言,提供了丰富的工具和库来实现句法分析的功能。本文将深入探讨Python底层技术,...
      99+
      2023-11-08
      实现 Python底层 句法分析
    • linux shell如何实现转换输入日期的格式
      这篇文章给大家分享的是有关linux shell如何实现转换输入日期的格式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于用户输入日期的合法性检验,是个很重要的问题,这个例子是简单得取得用户输入的日期,并转换为...
      99+
      2023-06-09
    • 深入解析阿里云服务器数据库信息实现高效、稳定的数据存储与管理
      随着大数据时代的到来,数据已经成为企业发展的重要驱动力。如何有效管理和存储这些数据,成为了企业面临的挑战。阿里云服务器提供了一系列数据库服务,为用户提供了一种高效的解决方案。本篇文章将深入解析阿里云服务器数据库信息,帮助读者更好地了解和利用...
      99+
      2023-11-15
      高效 阿里 数据存储
    • 如何实现将Bat转换位VBS文件的VBS脚本
      这篇文章主要为大家展示了“如何实现将Bat转换位VBS文件的VBS脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现将Bat转换位VBS文件的VBS脚本”这篇文章吧。下面代码稍有修改,原...
      99+
      2023-06-08
    • PHP 如何实现将月份转换为英文的技巧
      标题:PHP 如何实现将月份转换为英文的技巧 在开发网站或应用程序时,有时候需要将日期中的月份转换为英文表示,以增强用户体验或满足特定需求。在PHP中,实现将月份转换为英文的功能并不复...
      99+
      2024-04-02
    • 深度解析:如何通过 Windows API 实现 ASP 日志的快速分析?
      ASP(Active Server Pages)是一种基于服务器端的动态网页技术,广泛应用于Web应用程序的开发。在ASP应用程序中,日志记录是必不可少的功能。ASP日志记录功能可以帮助我们跟踪应用程序的运行状况,分析应用程序的性能问题,以...
      99+
      2023-06-17
      日志 windows api
    • 如何利用PHP实现微信公众号的用户分析
      如何利用PHP实现微信公众号的用户分析引言:随着微信公众号的普及和运营的发展,越来越多的企业开始关注公众号用户的分析。利用PHP语言和微信公众平台提供的开发接口,我们可以轻松实现对公众号用户的分析工作。本文将介绍如何利用PHP实现微信公众号...
      99+
      2023-10-27
      PHP实现微信用户分析
    • 如何实现基于Java SpringBoot的前后端分离信息管理系统
      这篇文章主要介绍了如何实现基于Java SpringBoot的前后端分离信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主要功能说明用户登录、修改密码、首...
      99+
      2023-06-21
    • C语言如何实现学生信息管理系统的文件操作
      本文小编为大家详细介绍“C语言如何实现学生信息管理系统的文件操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现学生信息管理系统的文件操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。新增函数&am...
      99+
      2023-07-02
    • 实例分析:如何在Golang中实现高效的结构体强转
      对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《实例分析:如何在Golang中实现高效的结构体强转》,主要介绍了,希望对大...
      99+
      2024-04-05
    • 如何实现批量转换目录下文件编码的shell脚本
      这篇文章将为大家详细讲解有关如何实现批量转换目录下文件编码的shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一例批量转换目录下文件编码的shell脚本代码。需求描述:由于从window转lin...
      99+
      2023-06-09
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作