`

SpringMVC(十四)_处理 JSON:使用 HttpMessageConverter

阅读更多

       前言:本篇主要介绍SpringMVC如何处理Json数据,包括接收和响应json数据

本篇文章重点关注以下问题:

  • 处理json数据示例
  • 关注HttpMessageConverter<T>

1. 处理Json数据的样例

         SpringMVC处理Json数据的步骤可以说是简单到没朋友,总共三步

1. 加入 jar 包(开发过程中,这一步也就无需考虑了):

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

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

 

     返回可以是个Map集合,也可是key-value形式的List集合以返回json数组

@RequestMapping("dataBinder/getCmpVo.action")
@ResponseBody
public Map<String, Object> getCmpVo(UserVo user){
    System.out.println("【自定义复合类型】" + user);
        
    Map<String, Object> map = new HashMap<>();
    map.put("user", user);
    return map;
}

       完成上述三个步骤,SpringMVC就可以自动给前台响应json数据,是不是相当简单。

 

2. 聊聊HttpMessageConverter<T>

        HttpMessageConverter<T> 是Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息。

       HttpMessageConverter<T>接口定义的方法有:

  • Boolean canRead(Class<?> clazz,MediaType – mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等);
  • Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将clazz 类型的对象写到响应流中,响应流支持的媒体类型在MediaType 中定义。
  • LIst<MediaType> getSupportMediaTypes():该转换器支持的媒体类型。
  • T read(Class<? extends T> clazz,HttpInputMessage inputMessage– ):将请求信息流转换为 T 类型的对象。
  • void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类型为contentType。

       其工作流程如下:

 

2.1 SpringMVC内置HttpMessageConverter实现类

名称 作用 读支持 MediaType 写支持 MediaType
ByteArrayHttpMessageConverter 数据与字节数组的相互转换 \/\ application/octet-stream
StringHttpMessageConverter 数据与 String 类型的相互转换 text/\* text/plain
FormHttpMessageConverter 表单与 MultiValueMap的相互转换 application/x-www-form-urlencoded application/x-www-form-urlencoded
SourceHttpMessageConverter 数据与 javax.xml.transform.Source 的相互转换 text/xml 和 application/xml text/xml 和 application/xml
MarshallingHttpMessageConverter 使用 Spring 的 Marshaller/Unmarshaller 转换 XML 数据 text/xml 和 application/xml text/xml 和 application/xml
MappingJackson2HttpMessageConverter 使用 Jackson 的 ObjectMapper 转换 Json 数据 application/json application/json
MappingJackson2XmlHttpMessageConverter 使用 Jackson 的 XmlMapper 转换 XML 数据 application/xml application/xml
BufferedImageHttpMessageConverter 数据与 java.awt.image.BufferedImage 的相互转换 Java I/O API 支持的所有类型 Java I/O API 支持的所有类型

 

2.2 使用HttpMessageConverter

       HttpMessageConverter<T> 将请求信息转化并绑定到处理方法的入参中

  • 使用 @RequestBody对处理方法进行标注;
  • 使用HttpEntity<T>作为处理方法的入参;

       HttpMessageConverter<T>将响应结果转为对应类型的响应信息

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

2.3 示例(摘自网络)

       因项目中主要使用处理Json数据,因此针对HttpMessageConverter的其他使用并未做demo,因此此处提供的网上案例仅供参考。

1. @RequestBody、@ResponseBody 示例


 

2. HttpEntity、ResponseEntity 示例


 

 
  • 大小: 2.5 KB
  • 大小: 103.8 KB
  • 大小: 276 KB
  • 大小: 252.3 KB
分享到:
评论

相关推荐

    springMVC+json.zip_JSON_myeclipse_springmvc_数据传递

    4. **SpringMVC与JSON的结合**:在SpringMVC中,使用JSON进行数据传递,主要涉及到两个关键类:`HttpMessageConverter` 和 `Jackson` 库。`HttpMessageConverter` 负责将Java对象转换成JSON字符串,或将JSON字符串反...

    springmvc-json_v2.zip

    综上所述,"springmvc-json_v2.zip"可能包含了Spring MVC项目中JSON处理的各种示例代码,如控制器、模型类、配置文件等,帮助开发者了解和学习如何在Spring MVC环境中有效地使用JSON进行数据交换。通过对这些知识点...

    springmvc加入json支持

    在实际开发中,你可能还需要处理JSON安全问题,例如使用`@JsonView`来限制返回的字段,或者使用`@JsonFormat`来控制日期格式等。同时,随着版本的更新,确保始终使用最新的稳定版本以获取最佳性能和安全性。

    SpringMVC-9 处理JSON数据

    四、Spring MVC处理JSON实例 1. 创建Controller:在Spring MVC中,创建一个控制器类,定义处理JSON请求的方法。例如,处理一个POST请求,接收JSON数据并返回JSON响应: ```java @RestController public class ...

    (代码)SpringMVC第7讲:json支持

    4. **MappingJackson2HttpMessageConverter**:这是SpringMVC中用于处理JSON的默认消息转换器。它负责将Java对象转换成JSON,并将JSON字符串解析回Java对象。你可以通过配置`messageConverters`属性来自定义转换器的...

    SpringMVC中后台转换json格式

    Jackson是Java中广泛使用的JSON处理库,包括三个主要的模块:`jackson-databind`、`jackson-core`和`jackson-annotations`。在提供的文件列表中,我们看到这三个库的2.7.0版本,它们分别对应于: 1. `jackson-...

    SpringMVC利用Ajax,JQuery交互Json

    在SpringMVC项目中,我们需要添加Jackson库以处理Json序列化和反序列化。在`pom.xml`中引入以下依赖: ```xml &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind &lt;version&gt;2.9.8...

    Spring+SpringMVC+MyBatis返回json所需jar包

    标题"Spring+SpringMVC+MyBatis返回json所需jar包"表明,我们关注的是如何配置SSM框架以便能够将处理后的数据以JSON格式返回给客户端。在这个过程中,`jackson`库起着至关重要的作用。Jackson是Java领域的一个流行...

    springmvc-json-lib.rar

    本文将深入探讨如何在SpringMVC项目中集成并使用JSON库,以实现高效的数据交换。 首先,我们需要了解SpringMVC中的DispatcherServlet,它是整个SpringMVC框架的核心,负责接收请求、分发到相应的处理器并返回响应。...

    springmvc操作json数据所需的jar包

    为了在Spring MVC中处理JSON,我们需要在配置文件中启用`@EnableWebMvc`或`&lt;mvc:annotation-driven&gt;`,这会自动配置`MessageConverter`,包括处理JSON的`MappingJackson2HttpMessageConverter`(如果已经添加了...

    SpringMVC中使用JSON传递数据时用的jar包

    7. **MessageConverter**:Spring MVC使用`HttpMessageConverter`来处理请求和响应的转换。默认情况下,它包含了对JSON的支持,但如果你需要自定义转换规则,可以通过配置`MappingJackson2HttpMessageConverter`来...

    springmvc3+json参数传递后台接收json参数

    综上所述,"springmvc3+json参数传递后台接收json参数"涵盖了Spring MVC 3中处理JSON数据的核心概念和实践方法,包括JSON数据格式、`@RequestBody`注解、前端JSON数据封装、批量处理、错误处理和配置支持等方面的...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    默认情况下,Spring MVC使用`HttpMessageConverter`来完成这个转换,其中最常用的转换器是`MappingJackson2HttpMessageConverter`,它依赖于Jackson库来序列化对象为JSON。 接下来,我们将探讨如何实现JSON数据的...

    springmvc中json转换的jar

    为了使Spring MVC能够处理JSON数据,我们需要依赖特定的库来进行对象到JSON字符串以及JSON字符串到对象的转换。在这个场景中,提到了两个关键的jar文件:`jackson-core-asl.jar`和`Jackson-mapper-asl.jar`,它们是...

    springmvc加入json支持.zip

    要使Spring MVC能够处理JSON请求和响应,我们需要集成一个JSON库,如Jackson。在这个案例中,我们看到的三个jar文件——`jackson-databind-2.4.2.jar`、`jackson-core-2.4.2.jar`和`jackson-annotations-2.4.0.jar`...

    SpringMVC生成JSON(二)

    在本篇博文中,我们将深入探讨如何在SpringMVC框架中生成JSON响应,这是Web开发中的常见需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在...

    SpringMVC使用JSON的Jackson的jar包

    默认情况下,如果项目中包含Jackson库,SpringMVC会使用`MappingJackson2HttpMessageConverter`作为MessageConverter,实现JSON序列化。 5. 配置SpringMVC以使用Jackson: 虽然SpringMVC通常会自动检测并使用...

    扩展SpringMVC以支持绑定JSON格式的请求参数

    默认情况下,Spring MVC提供了一些内置的`HttpMessageConverter`,例如`MappingJackson2HttpMessageConverter`,它使用Jackson库将JSON字符串转换为Java对象。 ```java @RequestMapping(value = "/save", method ...

    springmvc处理json需要jar

    总之,处理JSON是Spring MVC开发中的重要部分,理解并熟练掌握JSON与Java对象之间的转换、注解的使用、自定义转换器的创建以及错误处理,将极大地提升你的开发效率和代码质量。记得正确引入和配置所需的jar文件,...

    SpringMVC4教程-超权威--超详细

    #### 十四、异常处理 - **全局异常处理**:SpringMVC支持定义全局异常处理器来统一处理异常情况,提高系统的健壮性。 #### 十五、SpringMVC运行流程 - **请求流程**:当用户发送请求时,请求会先到达...

Global site tag (gtag.js) - Google Analytics