浅析@ResponseBody注解作用和原理

浅析@ResponseBody注解作用和原理    @ResponseBody这个注解通常使用在控制层(controller)的方法上,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。    假如是字符串则直接将字符串写到客户端,假如是一个对象,此时会将对象转化为json串然后写到客户…

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

       @ResponseBody这个注解通常使用在控制层(controller)的方法上,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。

       假如是字符串则直接将字符串写到客户端,假如是一个对象,此时会将对象转化为json串然后写到客户端。这里需要注意的是,如果返回对象,按utf-8编码。如果返回String,默认按iso8859-1编码,页面可能出现乱码。因此在注解中我们可以手动修改编码格式,例如@RequestMapping(value=”/cat/query”,produces=”text/html;charset=utf-8″),前面是请求的路径,后面是编码格式。

       那么,控制层方法的返回值是如何转化为json格式的字符串的呢?其实是通过HttpMessageConverter中的方法实现的,因为它是一个接口,因此由其实现类完成转换。如果是bean对象,会调用对象的getXXX()方法获取属性值并且以键值对的形式进行封装,进而转化为json串。如果是map集合,采用get(key)方式获取value值,然后进行封装。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140116.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 互联网金融风控模型「建议收藏」

    互联网金融风控模型「建议收藏」一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对接第三方征信公司芝麻信用分,通过用户信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度对…

  • okio分析

    okio分析Okio是一个对原有的java.io和java.nio进行改进的IO库,使IO操作更加高效和方便。Okio的高效主要体现在三个方面:一它对数据进行了分块处理,这样在大数据IO的时候可以以块为单位进行IO,这可以提高IO的吞吐率。二它对这些数据块使用链表进行管理,这可以仅通过移动“指针”就进行数据的管理,而不用真正去处理数据,而且对扩容来说也十分方便。三对闲置的块进行管理,通过一个块池(Se

  • 26524中位数第二人生_计数原理与排列组合是选修几

    26524中位数第二人生_计数原理与排列组合是选修几洛谷P2606 [ZJOI2010]排列计数(组合数 dp)

  • pycharm全局查找一个关键词

    pycharm全局查找一个关键词PyCharm的FindinPath功能提供了全局查找功能,快捷键为Ctrl+Shift+F。Find则是在当前文件查找,快捷键为Ctrl+F。这两个个功能非常实用。FindinPath的使用:按快捷键Ctrl+Shift+F或从从菜单Edit-》Find-》FindinPath进入全局查找界面。如下图所示,在Texttofind输入要查找的内容,可以说某…

  • 关于java类加载正确的是_java类什么时候被加载

    关于java类加载正确的是_java类什么时候被加载注意我们当在另一个类中引用其他类的final静态值的时候,编译器把其他类的final符号引用存储在自己类的常量池中了

  • java交换二维数组行列_java二维数组行列

    java交换二维数组行列_java二维数组行列培训系列AmberXie求二维数组行列之和把二维数组a各行之和分别放入b…二维数组例题答案[技巧]【例1】编写程序,利用二维数组在窗体上输出如图5×5…如果没有max为行列都是最大值flag=0Forj=1To5Ifa(j……二维数组行列数的检测也是通过属性length进行的,不同的是测列数时需要给定一…程序中定义了二维数组arr,a…

发表回复

您的电子邮箱地址不会被公开。

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