@ResponseBody详解

@ResponseBody详解@ResponseBody的作用其实是将java对象转为json格式的数据。@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式…

大家好,又见面了,我是你们的朋友全栈君。

@ResponseBody的作用其实是将java对象转为json格式的数据。

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】。
注意:在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

后台 Controller类中对应的方法:
@RequestMapping("/login.do")
@ResponseBody
public Object login(String name, String password, HttpSession session) {
	user = userService.checkLogin(name, password);
	session.setAttribute("user", user);
	return new JsonResult(user);
}

@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象,
封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。
如上面的登录后台代码可以改为:
@RequestMapping("/login.do")
@ResponseBody
public Object login(@RequestBody User loginUuser, HttpSession session) {
	user = userService.checkLogin(loginUser);
	session.setAttribute("user", user);
	return new JsonResult(user);
}

=========================================================================================

@RequestBody

@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
作用:

1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定
    到要返回的对象上; 
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

使用时机:

A) GET、POST方式提时, 根据request header Content-Type的值来判断:

    application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute
也可以处理,当然@RequestBody也能处理); 
    multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据); 
    其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

B) PUT方式提交时, 根据request header Content-Type的值来判断:

application/x-www-form-urlencoded, 必须;multipart/form-data, 不能处理;其他格式, 必须;

说明:request的body部分的数据编码格式由header部分的Content-Type指定;

例如:

@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中
public User login(@RequestBody User user) {   
// 这样就不会再被解析为跳转路径,而是直接将user对象写入 HTTP 响应正文中
    return user;    
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140052.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java高级语言程序设计_高级程序设计语言包括

    java高级语言程序设计_高级程序设计语言包括Java程序设计(高级及专题)- XML

    2022年4月22日
    47
  • VMware虚拟机安装WIN7操作系统

    VMware虚拟机安装WIN7操作系统

    2021年5月30日
    142
  • 如何有效解决高清视频传输中出现的闪屏、黑屏、蓝屏问题?

    如何有效解决高清视频传输中出现的闪屏、黑屏、蓝屏问题?春节期间冬奥会上女足夺冠的精彩赛事是不是还历历在目?你知道体育赛事、音乐会直播以及远程医疗等对视频清晰度和稳定性要求极高的传输是怎么实现的吗?为什么别人4K超高清的视频看起来如此流畅,而你一个1080P的高清视频却经常出现闪屏、黑屏、蓝屏?​在很多视频监控传输的项目,当我们做完项目后,经常会遇到闪屏、黑屏、蓝屏的问题,反复检查线路和接线后仍一筹莫展,查不出问题所在。这是为什么,工程师为您解答,如何有效解决高清视频传输中出现的闪屏、黑屏、蓝屏的问题。​我们都知道一般高清.

    2022年10月3日
    5
  • ubuntu卸载cuda10.2_dpkg强制卸载软件

    ubuntu卸载cuda10.2_dpkg强制卸载软件一、参考资料CUDA、CUDNN在Ubuntu下的安装及配置二、注意事项用deb方式安装CUDA,会附带安装显卡驱动;用run方式安装CUDA,需要提前安装好显卡驱动;安装显卡驱动的时候,最好安装高版本的,这样不会受cuda版本的影响;三、run方式卸载用run方式安装的CUDA和驱动#uninstallcuda#第一行命令不要忘记要加上perl命令,要不然会报错sudoperl/usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl

    2025年9月1日
    6
  • python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)[通俗易懂]

    python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)[通俗易懂]最近我参加了一个人工智能与自然语言处理的课程,这是第一周的学习笔记。这份笔记不涉及一般知识,全部都是与实践(我在这门课上的作业)有关的总结。文章目录理论学习人工智能的五种模型:作业1.RuleBased基于规则的模型2.ProbabilityBased基于概率的模型理论学习人工智能的五种模型:RuleBased基于规则的模型ProbabilityBased基于概率的模型Sear…

    2022年5月24日
    40
  • Java实现两数之和「建议收藏」

    Java实现两数之和「建议收藏」给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。即:每个index上的数字只能用一次示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]方法一:暴力法遍历每个元素x,并查找是否存在一个值与target…

    2022年6月14日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号