处理器方法的返回值--返回对象Object

        处理器方法也可以返回Object对象。这个Object可以是Integer,String,自定义对象, Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。 返回对象,需要使用@ResponseBody注解,将转换后的JSON数据放入到响应体中。

实现步骤:
        1.在pom.xml中加入处理json的工具库的依赖,springmvc默认使用的jackson:

        由于返回Object数据,一般都是将数据转化为了JSON对象后传递给浏览器页面的。而 这个由Object转换为JSON,是由消息转换器HttpMessageConverter底层使用Jackson工具完成的,所以需要导入Jackson 的相关Jar包。

    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency>
        2.在springmvc配置文件中加入 <mvc:annotation-driven> 注解驱动:

                                注解驱动涉及到了消息转换器接口

                        

                                <!-- 注册mvc的注解驱动 -->
                                <mvc:annotation-driven/>
           作用:<mvc:annotation-driven/>在加入到springmvc配置文件后,会自动创建消息转换器HttpMessageConverter接口的7个实现类对象,完成java对象到json、xml、text、二进制等数据格式的转换。(这里:将JAVA对象转换为JSON格式的数据  )

                ObjectMapper om = new ObjectMapper();
                json = om.writevalueAsString(student);

        3.在处理器方法的上面加入@ResponseBody注解:

            作用:通过HttpServletResponse应答对象,将转换后的JSON数据放入到响应体中,输出给浏览器
                response.setContentType("application/json;charset=utf-8");
                PrintWriter pw = response.getWriter();
                pw.printIn(json);  


 HttpMessageConveter接口 :消息转换器。

        注解驱动涉及到了消息转换器接口。
        功能:定义了java转为json,xml,二级制,text等数据格式的方法。 这个接口有很多的实现类
这些实现类完成 java对象到json , java对象到xml,java对象到二进制等数据的转换

        <mvc:annotation-driven/>在加入到springmvc配置文件后,会自动创建消息转换器HttpMessageConverter接口的7个实现类对象,包括 MappingJackson2HttpMessageConverter ( 使用jackson工具库中的ObjectMapper实现java对象转换成json字符串:
                  ObjectMapper om = new ObjectMapper();
                  json = om.writevalueAsString(student);                        

@Controller
@RequestMapping("/data")
public class MyController4 {@RequestMapping("/single.do")@ResponseBodypublic Student doJsonObject(){//创建java对象,转为jsonStudent student = new Student("李四",22,"lisi@qq.com");return student;}@RequestMapping("/list.do")@ResponseBodypublic List<Student> doJsonArray(){//创建List对象,转为jsonArrayList<Student> students = new ArrayList<>();students.add(new Student("李四",22,"lisi@qq.com"));students.add(new Student("王五",23,"wangwu@qq.com"));return students;}@RequestMapping(value = "/string.do",produces = "text/palin;charset = utf-8")@ResponseBodypublic String doStringData(String name , Integer age){return "有ResponseBody注解,返回String就是数据";}
}
当返回值为String类型时:

        当处理器方法返回的是String时,区分返回值String是数据,还是视图,就看有没有@ResponseBody注解,如果有ResponseBody注解,返回String就是数据,反之就是视图
        默认使用“text/plain;charset=ISO-8859-1”作为contentType,导致中文有乱码。

        解决方案:
        RequestMapping增加一个属性 produces,使用这个属性指定新的contentType,设置输出结果类型。

    @RequestMapping(value = "/string.do",produces = "text/palin;charset = utf-8")@ResponseBodypublic String doStringData(String name , Integer age){return "有ResponseBody注解,返回String就是数据";}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python第三次项目作业

打印课堂上图案 判断一个数是否是质数&#xff08;素数&#xff09; 设计一个程序&#xff0c;完成(英雄)商品的购买&#xff08;界面就是第一天打印的界面&#xff09; 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票&a…

九州家庭教育:关注孩子心理健康,增强亲子沟通

家庭教育现在越来越受重视&#xff0c;尤其孩子心理健康&#xff0c;当下社会&#xff0c;孩子心理健康问题频出&#xff0c;很多地方不时传出孩子轻生的新闻&#xff0c;这就是在教育过程中&#xff0c;沟通出现了严重问题&#xff0c;随着心理变化产生&#xff0c;孩子这时候…

在flutter项目中使用自己做的flutter插件

常规做法如下&#xff1a; 1. 将插件放在Flutter项目中 把插件项目放置在Flutter项目根目录下的一个特定文件夹中。这里&#xff0c;我是创建了一个文件夹&#xff0c;名字为plugins&#xff0c;并把插件项目复制进去。 2. 在Flutter项目中使用插件 在Flutter项目的 pubspec.…

电商API接口苏宁易购获得suning商品详情页实时数据API请求接入演示

要接入苏宁易购的API接口获取商品详情页实时数据&#xff0c;你需要遵循以下步骤&#xff1a; 注册成为开放平台的开发者&#xff0c;获取ApiKey和ApiSecret。 使用ApiKey和ApiSecret获取访问令牌&#xff08;AccessToken&#xff09;。 使用AccessToken调用苏宁易购的API接口…

FCN(全卷积神经网络)

目录 一、什么是FCN 1、FCN简介 2、核心思想 二、代码实现 1、FCN结构介绍 2、ResNet-18提取图像特征 3、11卷积层将通道数变换为类别个数 4、转置卷积还原输入图像的高和宽 5、初始化转置卷积层 6、读取数据集 7、训练 8、预测 三、总结 一、什么是FCN 1、FCN简介…

CSDN个人简介优化 html font属性

CSDN个人简介优化 html font属性 个人简介个人简介优化字体21种样式选择字体大小设置4号字体 字体颜色设计渐变色&#xff08;可惜不能显示&#xff09; 字体加粗设置 <b>标签 个人简介 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光…

Django日志(四)

一、Filters介绍 过滤器用于从logger传递给handler的哪些日志要做额外控制 默认情况下,满足日志级别的任何消息都将处理。只要级别匹配,任何日志消息都会被处理。不过,也可以通过添加 filter 来给日志处理的过程增加额外条件。例如,可以添加一个 filter 只允许某个特定来源…

Linux 文件系统:动静态库

目录 一、静态库 1、概念 2、为什么要打包成库 3、创建自定义静态库 4、使用Makefile创建静态库 5、使用静态库(导入系统) 6、删除静态库 7、使用静态库(不导入系统) 二、动态库 1、概念 2、生成动态库&#xff08;共享库&#xff09; 3、使用动态库的过程 4、Mak…

Python学习笔记02

第三章、Python判断语句 前言 进行逻辑判断&#xff0c;是生活中常见的行为。同样&#xff0c;在程序中&#xff0c;进行逻辑判断也是最为基础的功能。 如果 → 判断 → 是 → ... → 否 → ... 布尔类型和比较运算符 布尔类型 进行判断&#xff0c;只有2个结果&#xff…

产品说明书怎么制作?学会用模板事半功倍!

产品说明书常常被低估&#xff0c;但其实它是一个企业的名片&#xff0c;在阐述你的产品服务时大有作用。如果你在制作产品说明书上面花费大量的时间和精力&#xff0c;那么今天的文章可能会对你有所帮助。此文将会引领你了解如何制作产品说明书&#xff0c;以及推荐几款高效的…

【JS面试题 - 打印结果】++[[]][+[]] + [+[]]

现有一段代码&#xff0c;说出打印结果 [[]][[]] [[]]这道题考验的是运算符的基础知识&#xff0c;下面来逐步分析&#xff1a; 先把表达式按照优先级最低的运算符&#xff08;&#xff09;进行分割&#xff0c;得到两部分&#xff1a; [[]][[]] 和 [[]] [[]][[]] 表达式中…

Redis 不再“开源”,对中国的影响及应对方案

Redis 不再“开源”&#xff0c;使用双许可证 3 月 20 号&#xff0c;Redis 的 CEO Rowan Trollope 在官网上宣布了《Redis 采用双源许可证》的消息。他表示&#xff0c;今后 Redis 的所有新版本都将使用开源代码可用的许可证&#xff0c;不再使用 BSD 协议&#xff0c;而是采用…

这些流行的银行木马,你都了解吗?

银行木马是一款对针对金融客户为目标&#xff0c;通过各种方式窃取客户网上银行凭证信息的恶意软件&#xff0c;最近几年一些银行木马不仅仅传播自己&#xff0c;还充当勒索病毒的分销商&#xff0c;传播勒索病毒&#xff0c;笔者今天给大家介绍一些比较流行的银行木马家族。 …

面试算法-85-删除有序数组中的重复项 II

题目 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说…

【Web】记录巅峰极客2023 BabyURL题目复现——Jackson原生链

目录 前言 分析 EXP SignedObject打二次反序列化 打TemplatesImpl加载恶意字节码 前文&#xff1a;【Web】浅聊Jackson序列化getter的利用——POJONode 前言 题目环境:2023巅峰极客 BabyURL 之前AliyunCTF Bypassit I这题考查了这样一条链子&#xff1a; BadAttributeV…

通过rmi实现远程rpc(可以认为java自带Dubbo RPC)

背景&#xff1a; 发现公司几个运行10年的游戏&#xff0c;用的竟然是rmi&#xff0c;而我只听说过dubbo 和 基于netty的rpc&#xff0c;于是就补充了下rmi。 其次&#xff0c;是最近对于跨服的思考&#xff0c;如何避免回调也需要用同步写法&#xff0c;rmi比较适合。 1)api…

408学习笔记-16-C-动态内存管理

1、为什么要有动态内存分配 常规定义出来的变量&#xff0c;它们的大小都是已经规定好的&#xff0c;即在内存中开辟的内存空间都是固定的&#xff1b;且空间大小不可调整&#xff0c;可能会造成内存空间的浪费。 于是C语言引入了动态内存开辟功能&#xff0c;让程序员自己可…

IDEA/Android Studio格式化代码快捷键失效的解决

问题描述 用AS写一个项目的时候&#xff0c;发现CtrlAltL的格式化快捷键并不生效&#xff0c;按下之后没有任何反应。而格式化文件快捷键CtrlAltShiftL依旧生效&#xff0c;难道是设置出了问题&#xff1f; 打开设置页面发现快捷键设置很正确&#xff0c;并没问题&#xff0c…

综合能源系统多时间尺度优化调度研究综述

1.研究背景 随着全球能源需求的增长以及环境保护的压力&#xff0c;综合能源系统&#xff08;IES&#xff09;成为了实现能源可持续发展的关键方案之一。IES通过集成多种能源资源&#xff0c;优化能源的产、供、存、消过程&#xff0c;提高能源利用效率&#xff0c;减少环境污染…

「JS 基础」异步解决方案入门

前言 为了解决Javascript 语言的执行环境是单线程所带来的问题&#xff0c;Javascript 将任务的执行模式分为两种&#xff1a;同步和异步 同步即为后一个任务等待前一个任务结束再继续执行&#xff0c;程序的执行顺序与任务的排列顺序是一致的 异步则完全不同&#xff0c;每…