技术背景
接受参数部分:前后端有时候需要以json格式的数据进行传输,springmvc默认为后台封装了对json字符串解析为java对象的解析器.前端传值如果为json字符串,对应的请求处理器只需要定义与json格式匹配的对象,并且在前加上@RequestBody注解,spring就会自己完成转化过程。
返回参数部分,使用@ResponseBody可以将返回对象转化为json格式数据.
以上两种情况在默认情况下都会出现两个问题,接收部分如果后台定义的对象前台没有传值则会抛出异常,而返回部分如果有字段值为空,该字段还是会被序列化成json字符串,这样对于流量是有消耗的.
以下直接给出相关配置
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
<mvc:message-converters>
<ref bean="jsonMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<ref bean="jacksonObjectMapper" />
</property>
<property name="targetMethod" value="configure" />
<property name="arguments">
<list>
<value type="com.fasterxml.jackson.databind.DeserializationFeature">FAIL_ON_UNKNOWN_PROPERTIES</value>
<value>false</value>
</list>
</property>
</bean>
<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
<!-- 处理responseBody 里面日期类型 -->
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
<!-- 为null字段时不显示 -->
<property name="serializationInclusion">
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
</property>
</bean>
分享到:
相关推荐
在Spring MVC框架中,`@RequestBody` 和 `@ResponseBody` 是两个非常重要的注解,它们在处理HTTP请求和响应时起到了关键作用。本篇文章将详细解释这两个注解的工作原理、使用场景以及如何实现Java对象与XML/JSON数据...
在开发Web应用时,我们经常会遇到一个问题:当使用Spring MVC的`@ResponseBody`注解将后端处理结果直接转化为HTTP响应体时,如果这个结果中包含HTML特殊字符,如尖角号、引号、按位与符号等,浏览器可能会误解析,...
总结来说,`@RequestBody`和`@ResponseBody`是Spring MVC中处理HTTP请求和响应的关键工具,它们使得Java对象与HTTP数据之间能够无缝地转换,大大提升了开发效率和代码的可读性。理解和掌握这两个注解的使用,对构建...
综上所述,`@ResponseBody`是Spring MVC中实现数据返回的关键组件,它使得我们可以方便地构建RESTful服务,与各种数据格式进行交互。理解其工作原理和使用方式,有助于我们更好地设计和实现高效的Web应用程序。
当我们在控制器方法的参数前加上`@RequestBody`时,Spring MVC会尝试将请求体中的内容(通常是以JSON格式)转换为与参数类型匹配的对象。例如,在示例中,如果前端发送了一个嵌套的JSON对象,`@RequestBody Map, ...
Spring MVC注解之@ResponseBody和@RequestBody详解 在Spring MVC框架中,@ResponseBody和@RequestBody是两个非常重要的注解,它们分别用于处理HTTP请求响应体和请求体的序列化和反序列化。下面,我们将详细介绍这两...
-- @ResponseBody() spring-mvc 3 xml 配置--> <!--处理 @ResponseBody 中文乱码问题 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> ...
快速解决SpringMVC @RequestBody 用map接收请求参数的问题 在 SpringMVC 中,使用 @RequestBody 注解可以将请求体中的数据转换为 Java 对象,但是在使用 map 接收请求参数时,经常会遇到一些问题。本文将讨论如何...
@ResponseBody注解的功能与@RequestMapping中的consumes属性和@RequestBody注解刚好相反。@RequestBody注解用于方法的参数,表示HTTP请求体中的内容需要被转换成相应的Java对象。而@ResponseBody则用于方法的返回值...
本文主要介绍如何在SpringMVC中使用@RequestBody注解来接收JSON对象字符串。 首先,前端页面向服务器发送数据通常有两种格式:form格式和JSON格式。Form格式提交的数据通常由键值对组成,其格式通常为k=v&k=v,这种...
`@RequestBody`注解也可以用于处理HTTP请求的主体内容,将请求中的JSON数据转换为Java对象。 标签"源码"意味着文章可能深入讲解了Spring MVC框架的内部实现,或者提供了自定义的代码示例。"工具"可能指的是使用了...
### Spring MVC 中的 RequestBody 和 ResponseBody 及 RequestParam 使用详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring Framework 的一部分,它提供了一种清晰的模型—视图—控制器架构实现,用于构建 Web ...
springmvc+国际化i18N+springmvc验证+jetbrick-template使用+@responsebody+谷歌guava: 1)围绕springmvc做的国际化 2)围绕springmvc做的验证 3)使用的jetbrick-template模板引擎 ……
基于maven的springMVC@RestController的使用,适合初学者,......................................................................................................................................................
本教程将指导你如何搭建一个非Maven的SpringMVC项目,主要关注@RequestBody和@ResponseBody的配置。 首先,让我们了解SpringMVC的基本结构。一个标准的SpringMVC项目通常包含以下几个关键部分: 1. **src目录**:...
本项目"Java后台服务器Maven+SpringMVC+Ajax+@RequestBody+Json传输"就是一个很好的示例,它展示了如何利用这些技术进行前后端的数据交互。下面我们将详细探讨这些知识点。 首先,`Maven`是Java项目管理工具,它...
这个注解主要用于标注字段或者方法,以便Spring容器能够自动为它们提供实例化对象。本文将深入探讨`@Resource`注解的用法、原理以及与`@Autowired`的区别,帮助开发者更好地理解和应用这一特性。 ### `@Resource`...
描述中提到的"springmvc进行Jason数据封装转化时可以即使用也是@responsebody",指的是在Spring MVC的控制器(Controller)中,我们可以使用`@ResponseBody`注解配合Jackson库,实现将Java对象直接转换为JSON格式的...
1)spring MVC 中@ResponseBody需要的所有JAR包 2)性能还不错的模板引擎jetbrick-template-2.x 2.x的所需的所有jar包 3)日志jar包:slf4j和logback 所有 4)阿里 druid 连接池jar包 5)mysql数据库链接驱动jar包 6...
本文将深入探讨如何使用`@RequestBody`和`@ResponseBody`注解来实现JSON的处理。 首先,JSON作为一种轻量级的数据交换格式,其简单性和易于解析的特性使得它在接口调用和HTML页面中被广泛使用。例如,在Web服务接口...