处理 JSON:使用 HttpMessageConverter

处理 JSON

  1. 加入 jar 包:

  2. 编写目标方法,使其返回 JSON 对应的对象或集合

  3. 在方法上添加 @ResponseBody 注解

    @ResponseBody
    @RequestMapping("/getUsers")
    public List<User> testAjax() {
    List<User> users = new ArrayList<>();
    users.add(new User(1,"a",new Date(),1000));
    users.add(new User(2,"b",new Date(),2000));
    return users;
    }

HttpMessageConverter

  • HttpMessageConverter 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息
  • HttpMessageConverter接口定义的方法:
    • Boolean canRead(Class<?> clazz,MediaType mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等)
    • Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将 clazz 类型的对象写到响应流中,响应流支持的媒体类型 在MediaType 中定义。
    • List getSupportMediaTypes():该转换器支持的媒体类型。
    • T read(Class<? extends T> clazz,HttpInputMessage inputMessage):将请求信息流转换为 T 类型的对象。
    • void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类 型为 contentType。

HttpMessageConverter 的实现类

  • DispatcherServlet 默认装配 RequestMappingHandlerAdapter,而 RequestMappingHandlerAdapter 默认装配如下 HttpMessageConverter:

  • 加入 jackson jar 包后,RequestMappingHandlerAdapter 装配的 HttpMessageConverter 如下:

使用 HttpMessageConverter

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

    • 使用 @RequestBody / @ResponseBody 对处理方法进行标注
    • 使用 HttpEntity / ResponseEntity 作为处理方法的入参或返回值
  • 当控制器处理方法使用到 @RequestBody/@ResponseBody 或 HttpEntity/ResponseEntity 时, Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter,进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter, 若找不到可用的 HttpMessageConverter 将报错
  • @RequestBody 和 @ResponseBody 不需要成对出现

@RequestBody、@ResponseBody 示例



【SpringMVC】处理 JSON:使用 HttpMessageConverter的更多相关文章

  1. springMVC 处理json 及 HttpMessageConverter 接口

    一.SpringMVC处理json的使用 1.添加依赖jar包 <dependency> <groupId>com.fasterxml.jackson.core</gro ...

  2. SpringMVC——处理 JSON:使用 HttpMessageConverter

    一.SpringMVC处理JSON流程 1. 加入 jar 包: jackson-annotations-2.1.5.jarjackson-core-2.1.5.jarjackson-databind ...

  3. SpringMVC学习--json

    简介 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. springmvc与json交互 @RequestB ...

  4. SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转

    SpringMVC关于json.xml自动转换的原理研究[附带源码分析] 原文地址:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-c ...

  5. SpringMVC的JSON数据交互(七)-@Response,@RestController,@RequestBody用法

    1.@RequestBody   (自动将请求的数据封装为对象) 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConve ...

  6. springmvc实现json交互 -requestBody和responseBody

    json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2. ...

  7. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  8. springMVC源码分析--HttpMessageConverter写write操作(三)

    上一篇博客springMVC源码分析--HttpMessageConverter参数read操作中我们已经简单介绍了参数值转换的read操作,接下来我们介绍一下返回值的处理操作.同样返回值的操作操作也 ...

  9. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  10. springMvc中406错误解决,springMvc使用json出现406 (Not Acceptable)

    springMvc中406错误解决, springMvc使用json出现406 (Not Acceptable) >>>>>>>>>>> ...

随机推荐

  1. 将 EasySQLite 从 .NET 8 升级到 .NET 9

    前言 EasySQLite是一个.NET 8操作SQLite入门到实战的详细教程,主要是对学校班级,学生信息进行管理维护.今天咱们的主要内容是将EasySQLite从.NET 8升级到.NET 9. ...

  2. ESP8266 wifi模块+CH340烧录板安装使用运行教程

    硬件准备 ESP8266-01S 模块 USB转TTL烧录板(CH340) LED灯(建议使用3.3V LED) 220Ω电阻(LED限流) 面包板和跳线若干 我的是这样的不用接线,其他的参考 ESP ...

  3. SM9-密钥封装

    算法过程 代码实现 ///************************************************************************ // File name: ...

  4. DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」

    前言 最近 DeepSeek 狠狠刷了一波屏,国产大模型真的越来越厉害了,官方的服务器已经爆满了,以至于频繁出现反应迟缓甚至宕机的情况,和两年多之前 ChatGPT 的遭遇颇为相似. 我已经好久没有本 ...

  5. LangChain基础篇 (02)

    LangChain 核心模块学习:Chains 对于简单的大模型应用,单独使用语言模型(LLMs)是可以的. 但更复杂的大模型应用需要将 LLMs 和 Chat Models 链接在一起. 要么彼此链 ...

  6. 国际认可!天翼云合规领域影响力up!

    近日,天翼云科技有限公司成功通过ISO 37301合规管理体系双认证(GB/T 35770-2022/ISO 37301:2021 & CTS GHMS001-2024),标志着公司合规管理和 ...

  7. Redis缓存异常及解决方案

    本文分享自天翼云开发者社区<Redis缓存异常及解决方案>,作者:l****n 本文向读者解释了Redis使用过程中,数据不一致.缓存雪崩.缓存击穿和缓存穿透等问题的定义,并给出对应的解决 ...

  8. Git操作的基本命令

    git命令常用步骤 初始化,把当前文件夹作为git本地仓库 git init 把本地仓库与选程仓库关联 git remote add origin http://gitee.com/ 把项目区中做了修 ...

  9. MySql中创建用户以及设置其操作权限

    以下设置针对MySql8+版本进行测试,低版本暂无测试. 以管理员身份CMD并定位到MySql安装的bin目录,然后执行命令mysql -u root -p登录到MySql,然后输入登录密码,登录成功 ...

  10. Ansible之一module

    常用自动化运维工具 Ansible:python,Agentless,中小型应用环境 saltstack:python,一般需部署agent,执行效率更高 puppet:ruby,功能强大,配置复杂, ...