SpringMVC中注解@RequestBody和@ResponseBody的使用区别
首先上源码
在面试时经常会问到我们如何使用SpringMVC将Http请求转换为java对象,或者又是问如何将结果转换为java的呢?
SpringMVC在接收到请求之后HandlerMapping像是一个路由找到处理器和拦截器,而处理器对控制器进行包装就是对控制器进行了功能的增强,而处理器如何能是json和java对象的转换呢?这就要了解
这个时候就会使用到一个类他的作用是HttpMessageConverter<T>,这个的作用是将媒体类型对应的请求读入,控制器返回转换为对应媒体类型
,第二是webDataBinder是提供数据绑定和验证,将结果传给HttpMessageConverter
//HttpMessageConverter的源代码可以分为
是否可以读入媒体类型,是否可以写入媒体类型,
获取媒体类型,读入请求体,将其转换为媒体类型
控制器返回内容
在SpringMVC中关于HttpMessageConverter<T>实现的类有很多,SpringMVC会将实现HttpMessageConverter<T>的实现类组织成一条链存放起来,,而支持JSON转换的是
MappingJackson2HttpMessageConverter<T>springMVC会自动将它放入到MVC的链中,在这里我们不需要进行任何编码
@RequestBody的执行流程是,在HttpMessageConver中会有5个方法,在加上注解之后其中的canRead会去判断是否能读,如果可以就会执行MappingJackson2HttpMessageConverter,跟着会去执行read方法
,将请求体转换为java对象,这就是#RequestBody的原理
@ResponseBody的执行流程是,当你标注之后就会记录相应体为JSON类型,当控制器返回后走到HttpMessageConverter链的时候通过canWriter判断是否能进行写,在经过MappingJackson2HttpConverter的实例调用writer方法将控制器返回JSON,之后的流程会得到一个空参数就不在执行了
转载于:https://www.cnblogs.com/chenligeng/p/10784584.html
SpringMVC中注解@RequestBody和@ResponseBody的使用区别相关推荐
- 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案
在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@Reque ...
- 在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案
在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@RequestBody注解处理json ...
- SpringMVC中的拦截器、过滤器的区别、处理异常
SpringMVC中的拦截器.过滤器的区别.处理异常 参考文章: (1)SpringMVC中的拦截器.过滤器的区别.处理异常 (2)https://www.cnblogs.com/ahaijava/p ...
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)
Spring3.1开始使用新的HandlerMapping 和 HandlerAdapter 来支持@Contoller 和@RequestMapping注解处理:处理器映射RequestMappin ...
- SpringMVC中注解和非注解形式配置
目录 一.注解形式 1.各组件的配置文件 springmvc1.xml 2.Controller类 二.非注解形式实现 1.各组件的配置文件 springmvc2.xml 2.User1Control ...
- SpringMVC中注解的使用
1.@RequestMapping:在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中 ...
- Spring MVC常用注解--“姐妹花”@RequestBody和@ResponseBody
1. 引言 在这篇短文中,我们简要地介绍了Spring MVC中常用的注解 @RequestBody和@ResponseBody. 2. @RequestBody 简单地说,在@RequestBody ...
- SpringMVC中使用@ResponseBody注解标注业务方法
SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面 导包: 除了一些spring的包之外,还需要jackson-annotations.jar ...
- java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)
九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!-- 解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...
最新文章
- 重新挂载linux分区添加硬盘
- paddleoc onnx转换推理
- Asp.net中Postback及Callback
- python for循环连续输入五个成绩判断等级_Python 入门(五)条件判断和循环
- swf批量转png_CAD批量打印(探索者易打软件)优势介绍
- Centos7下python2.x 和python3.x共存
- 160 - 8 Andrnalin.1
- 【服务器】【个人网盘】宝塔安装OneIndex
- java getselecteditem_java – 为什么JComboBox上的getSelectedItem()不是通用的?
- 5、Android搭建RN开发环境
- 金蝶KIS/K3全版本下载地址
- 3D视频调校技术解决之道重点在3D眼镜
- 国家/地区 语言缩写代码 查询备用
- 为什么走线选择50欧姆阻抗
- 滴滴Uber又打起来了!外卖领域C位花落谁家?
- proxmox换源_安装proxmox后注意事项
- php使用imagemagick处理图片圆角
- 【Java】java格式化时间到毫秒
- 解决更新音频驱动后显示驱动异常——Smart Sound Technology
- SCI论文写作神器集合 —— 超级实用