处理器方法的返回值--返回对象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")
    @ResponseBody
    public Student doJsonObject(){
        //创建java对象,转为json
        Student student = new Student("李四",22,"lisi@qq.com");
        return student;
    }

    @RequestMapping("/list.do")
    @ResponseBody
    public List<Student> doJsonArray(){
        //创建List对象,转为jsonArray
        List<Student> students = new ArrayList<>();
        students.add(new Student("李四",22,"lisi@qq.com"));
        students.add(new Student("王五",23,"wangwu@qq.com"));
        return students;
    }
}
当返回值为String类型时:

返回字符串对象

        若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符串即可。但若 返回的字符串中带有中文字符,则接收方页面将会出现乱码。此时需要使用 @RequestMapping 的 produces 属性指定字符集。 produces,产品,结果,即该属性用于设置输出结果类型。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【前端工程化】TypeScript概念及使用

前端工程化&#xff08;2&#xff09;- TS 文章目录 前端工程化&#xff08;2&#xff09;- TSTS概念TS声明变量方式TS的类访问修饰符静态属性抽象类 TS的数据类型tuple元祖enum枚举anyvoidnever enum枚举使用例子反向映射枚举和常量枚举&#xff08;const枚举&#xff09;的区…

一文读懂融资融券交易技巧!在上海开融资融券账户交易利率一般是多少?

融资融券交易技巧包括以下几点&#xff1a; 熟悉股票市场&#xff1a;了解市场走势、公司基本面等信息&#xff0c;根据趋势选择合适的股票进行交易。 做好风险管理&#xff1a;对买卖的风险进行合理评估&#xff0c;设定止损价位&#xff0c;防止损失过大。 控制杠杆比例&am…

PowerShell 一键更改远程桌面端口

前言 提高工作效率,安全性和规范化,最终实现一键更改Windows 远程桌面端口 前提条件 开启wmi,配置网卡,参考 一键更改远程桌面端口自动化脚本 默认端口3389变更后的端口3390win+r mstsc YOU_ip常规更改的连接方式win+r mstsc YOU_ip:3390需要恢复到原来的端口3390更改成3…

【Linux笔记】汇编

汇编笔记 启动方式

IoT 物联网场景中 LoRa + 蓝牙Bluetooth 室内场馆高精定位技术全面解析

基于LoRa蓝牙的室内场景定位技术&#xff0c;蓝牙主要负责位置服务&#xff0c;LoRa主要负责数据传输。 01 LoRa和蓝牙技术 LoRa全称 “Long Rang”&#xff0c;是一种成熟的基于扩频技术的低功耗、超长距离的LPWAN无线通信技术。LoRa主要采用的是窄带扩频技术&#xff0c;抗干…

【spring】@Lazy注解学习

Lazy介绍 Lazy 注解是一个配置注解&#xff0c;用于指示 Spring 容器在创建 bean 时采用延迟初始化的策略。这意味着&#xff0c;除非 bean 被实际使用&#xff0c;否则不会被创建和初始化。 在 Spring 框架中&#xff0c;默认情况下&#xff0c;所有的单例 bean 在容器启动时…

如何在Ubuntu使用宝塔部署Emlog网站并发布到公网实现任意浏览器访问

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

5G网络架构与组网部署03--5G网络组网部署

1. SA组网与NSA组网 &#xff08;1&#xff09;NSA 非独立组网&#xff1a;终端同时接入4G基站和5G基站&#xff0c;只能实现5G部分功能 &#xff08;2&#xff09;SA组网【最终目标】&#xff1a;5G基站可以单独提供服务&#xff0c;接入的是5G核心网 区别&#xff1a;同一时间…

从0到1:Java构建高并发、高可用分布式系统的实战经验分享

文章目录 引言基础架构选择与设计微服务架构分布式储存与计算 高并发处理策略异步处理与消息队列并发控制与资源隔离 高可用性设计与故障恢复冗余与集群化容错与自我修复监控与运维自动化 引言 随着互联网业务的快速发展和技术迭代升级&#xff0c;作为Java架构师&#xff0c;…

yank+mermaid+甘特图实例

因为notion对于mermaid支持很一般&#xff0c;尤其是甘特图&#xff0c;如果时间跨度大、节点多&#xff0c;字号会小到看不见&#xff0c;非常不方便。 同样的代码&#xff0c;在notion中如下图所示&#xff1a;&#xff08;下图是我的一份年度规划&#xff09; &#xff08;…

【C++ leetcode 】双指针问题

1. 183. 移动零 题目 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 题目链接 . - 力扣&#xff08;LeetCode&#xff09; 画图 和 文字 分…

云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度

作者&#xff1a;周静、吴宇奇、泮圣伟 在应用开发测试验证通过后、进行生产发布前&#xff0c;为了降低新版本发布带来的风险&#xff0c;期望能够先部署到灰度环境&#xff0c;用小部分业务流量进行全链路灰度验证&#xff0c;验证通过后再全量发布生产。本文主要介绍如何通…

九.pandas绘图基础

目录 九.pandas绘图基础 1-柱状图 --参数stackedTrue堆积 --参数figsize(宽,高) --自定义横坐标 --设置字体&显示负号 2.箱型图 3. 折线图 九.pandas绘图基础 Pandas的DataFrame和Series&#xff0c;在matplotlib基础上封装了一个简易的绘图函数, 使得我们在数据处…

刷题训练之滑动窗口

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握滑动窗口算法&#xff0c;并且能把下面的…

使用SourceTree获取git代码

1、在浏览器打开git的地址&#xff0c;并且使用用户名和密码登录&#xff1b; 2、输入你的git账号密码&#xff1b; 3、打开SourceTree&#xff0c;地址是自动带过来的&#xff0c;点击第二个“浏览”选择你在D盘或其它盘自己创建的文件夹&#xff1b; 4、正在拉代码&#…

GIT共享 跨仓库操作 子模块

初级代码游戏的专栏介绍与文章目录-CSDN博客 有些文件想在多个项目共享&#xff0c;但是又不能放在一个GIT仓库里&#xff0c;这要用到子模块&#xff08;submodule&#xff09;&#xff0c;说难不难&#xff0c;就是有些细节要注意。 不过说真的&#xff0c;共享向来不是个好主…

并发编程所需的底层基础

一、计算机运行的底层原理 1.多级层次的存储结构 ①:辅存 固态盘不是主要的应用对象&#xff0c;因为固态盘的使用次数是有限的&#xff0c;无法支撑高并发场景 磁盘存储的最基本原理是电生磁。 磁盘的磁道里边有很多的磁颗粒&#xff0c;磁颗粒上边有一层薄膜为了防止磁点氧…

Android VPN TLV协议场景使用

TLV协议格式是一种可变格式&#xff0c; TLV的意思就是&#xff1a;Type类型&#xff0c; Lenght长度&#xff0c;Value值&#xff1b; Type和Length的长度固定&#xff0c;一般那是2、4个字节&#xff1b; Value的长度有Length指定&#xff1b; 解析方法&#xff1a; 1.读取t…

C++ list详解及模拟实现

目录 本节目标 1. list的介绍及使用 1.2 list的使用 2.list的模拟实现 1.对list进行初步的实现 2.头插和任意位置的插入 3.pos节点的删除&#xff0c;头删&#xff0c;尾删 4.销毁list和析构函数 5.const迭代器 6.拷贝构造和赋值操作 3.完整代码 本节目标 1. list的…