前言:本篇主要介绍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>作为返回值;
相关推荐
4. **SpringMVC与JSON的结合**:在SpringMVC中,使用JSON进行数据传递,主要涉及到两个关键类:`HttpMessageConverter` 和 `Jackson` 库。`HttpMessageConverter` 负责将Java对象转换成JSON字符串,或将JSON字符串反...
综上所述,"springmvc-json_v2.zip"可能包含了Spring MVC项目中JSON处理的各种示例代码,如控制器、模型类、配置文件等,帮助开发者了解和学习如何在Spring MVC环境中有效地使用JSON进行数据交换。通过对这些知识点...
在实际开发中,你可能还需要处理JSON安全问题,例如使用`@JsonView`来限制返回的字段,或者使用`@JsonFormat`来控制日期格式等。同时,随着版本的更新,确保始终使用最新的稳定版本以获取最佳性能和安全性。
四、Spring MVC处理JSON实例 1. 创建Controller:在Spring MVC中,创建一个控制器类,定义处理JSON请求的方法。例如,处理一个POST请求,接收JSON数据并返回JSON响应: ```java @RestController public class ...
4. **MappingJackson2HttpMessageConverter**:这是SpringMVC中用于处理JSON的默认消息转换器。它负责将Java对象转换成JSON,并将JSON字符串解析回Java对象。你可以通过配置`messageConverters`属性来自定义转换器的...
Jackson是Java中广泛使用的JSON处理库,包括三个主要的模块:`jackson-databind`、`jackson-core`和`jackson-annotations`。在提供的文件列表中,我们看到这三个库的2.7.0版本,它们分别对应于: 1. `jackson-...
在SpringMVC项目中,我们需要添加Jackson库以处理Json序列化和反序列化。在`pom.xml`中引入以下依赖: ```xml <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind <version>2.9.8...
标题"Spring+SpringMVC+MyBatis返回json所需jar包"表明,我们关注的是如何配置SSM框架以便能够将处理后的数据以JSON格式返回给客户端。在这个过程中,`jackson`库起着至关重要的作用。Jackson是Java领域的一个流行...
本文将深入探讨如何在SpringMVC项目中集成并使用JSON库,以实现高效的数据交换。 首先,我们需要了解SpringMVC中的DispatcherServlet,它是整个SpringMVC框架的核心,负责接收请求、分发到相应的处理器并返回响应。...
为了在Spring MVC中处理JSON,我们需要在配置文件中启用`@EnableWebMvc`或`<mvc:annotation-driven>`,这会自动配置`MessageConverter`,包括处理JSON的`MappingJackson2HttpMessageConverter`(如果已经添加了...
综上所述,"springmvc3+json参数传递后台接收json参数"涵盖了Spring MVC 3中处理JSON数据的核心概念和实践方法,包括JSON数据格式、`@RequestBody`注解、前端JSON数据封装、批量处理、错误处理和配置支持等方面的...
7. **MessageConverter**:Spring MVC使用`HttpMessageConverter`来处理请求和响应的转换。默认情况下,它包含了对JSON的支持,但如果你需要自定义转换规则,可以通过配置`MappingJackson2HttpMessageConverter`来...
默认情况下,Spring MVC使用`HttpMessageConverter`来完成这个转换,其中最常用的转换器是`MappingJackson2HttpMessageConverter`,它依赖于Jackson库来序列化对象为JSON。 接下来,我们将探讨如何实现JSON数据的...
为了使Spring MVC能够处理JSON数据,我们需要依赖特定的库来进行对象到JSON字符串以及JSON字符串到对象的转换。在这个场景中,提到了两个关键的jar文件:`jackson-core-asl.jar`和`Jackson-mapper-asl.jar`,它们是...
要使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响应,这是Web开发中的常见需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在...
默认情况下,如果项目中包含Jackson库,SpringMVC会使用`MappingJackson2HttpMessageConverter`作为MessageConverter,实现JSON序列化。 5. 配置SpringMVC以使用Jackson: 虽然SpringMVC通常会自动检测并使用...
默认情况下,Spring MVC提供了一些内置的`HttpMessageConverter`,例如`MappingJackson2HttpMessageConverter`,它使用Jackson库将JSON字符串转换为Java对象。 ```java @RequestMapping(value = "/save", method ...
总之,处理JSON是Spring MVC开发中的重要部分,理解并熟练掌握JSON与Java对象之间的转换、注解的使用、自定义转换器的创建以及错误处理,将极大地提升你的开发效率和代码质量。记得正确引入和配置所需的jar文件,...
#### 十四、异常处理 - **全局异常处理**:SpringMVC支持定义全局异常处理器来统一处理异常情况,提高系统的健壮性。 #### 十五、SpringMVC运行流程 - **请求流程**:当用户发送请求时,请求会先到达...