震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)

news2024/11/25 1:04:31

注:以下我写的所有方法都在我的一个类中,类已经添加好@Controller注解

1、返回静态页面

现在前后端分离,基本不再由后端来返回前端的静态页面,但此处还是分享一下用法,以防万一

如果想要返回静态页面,对应的类和方法就不能再用 @RestController @ResponseBody 这两个注解了,后者表示不再返回静态页面,而是返回数据,前者功能包含后者

需使用@Controller注解(已在类中使用):

    @RequestMapping("/index")
    public String returnIndex(){
        return "/index.html";
    }

index.html是我早已定义好,且放在static目录下的静态页面

你若也想返回静态页面,在static目录下也需要提前放好对应的静态页面

2、返回数据

    @ResponseBody
    @RequestMapping("/returnData")
    public String returnData(){
        return "返回视图需要的数据";
    }

返回数据需使用@ResponseBody注解

该注解可以修饰类,也可以修饰方法

  •         修饰类的时候,表示这个类下的所有方法,返回的均为数据
  •         修饰方法时,表示该方法返回的是数据

如果一个类中的所有方法返回的是数据,我们就把这个注解加在类上

3、返回html代码片段

    @ResponseBody
    @RequestMapping("/returnHtml")
    public String returnHtml(){
        return "<h1>返回HTML代码片段</h1>";
    }

直接在return处编写Html代码即可

4、返回JSON(即主要是对象和Map)

返回JSON是目前最常用的返回数据的格式,对象等数据格式通过注解会自动转换为JSON

    @ResponseBody
    @RequestMapping("/returnJson")
    public Person returnJson(){
        Person person = new Person();
        person.setId(1);
        person.setName("zhangsan");
        person.setAge(7);
        return person;
    }

    @ResponseBody
    @RequestMapping("/returnMap")
    public Map<String,String> returnMap(){
        Map<String,String> kv = new HashMap<>();
        kv.put("k1","v1");
        kv.put("k2","v2");
        kv.put("k3","v3");
        return kv;
    }

返回数据的格式是String还是对象,是通过content-type决定的(可以手动指定)

  •         当我们的接口返回的是String时,content-type是text/html
  •         当我们的接口返回的是对象/Map时,content-type自动设置为application/json

手动指定:

设置@RequestMapping的produces参数,来手动指定返回的数据格式

@RequestMapping(value = "/example", produces = "application/json")

5、设置状态码

状态码不影响页面的展示

    // 不常用,目前状态码通常还是用servlet设置的
    @ResponseBody
    @RequestMapping("/setStatus")
    public String setStatus(HttpServletResponse response){
        response.setStatus(401);//通常表示没有登录
        return "设置状态码";
    }

不常用,目前状态码通常还是用servlet设置的

6、设置响应的Header

    @ResponseBody
    @RequestMapping(value = "/r1",produces = "application/json;charset=utf-8")
//    @RequestMapping(value = "/r1")
    public String r1(HttpServletResponse response){
        //设置header
        response.setHeader("myhead","myhead");
        return "{'OK':1}";
    }

Header是HTTP的请求头

Header的详细介绍及获取方式

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

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

相关文章

PySide6 编写的仪表盘

PySide6 编写的仪表盘 本代码原链接&#xff1a;https://www.cnblogs.com/wangmantou/p/11662779.html 1、使用了PySide6替换了PyQt5, 2、if i % self._scaleMainNum is 0: 替换成了 if i % self.scaleMainNum 0: 3、app.exec() 替换成了 app.exec() 效果如下&#xff1a; …

数据结构───链表

花费一个周时间学完了链表&#xff08;的一部分&#xff09;&#xff0c;简单总结一下。 链表的学习离不开画图&#xff0c;将其抽象成一种逻辑模型&#xff0c;可以减少思考时间&#xff0c;方便理解。 链表大致分为8种结构&#xff0c;自己学习并实现了两种结构&#xff0c;也…

Spring Cloud 之RabbitMQ的学习【详细】

服务通信 分布式系统通信两种方式&#xff1a; 直接远程调用&#xff08;同步&#xff09;借助第三方间接通信&#xff08;异步&#xff09; 同步通讯的问题 Feign就属于同步通讯。存在的如下问题 耦合度高&#xff0c;每次添加新的模块就要修改原有模块的代码性能下降&am…

私有云:【8】VCenter安装Connection服务

私有云&#xff1a;【8】VCenter安装Connection服务 1、安装Connection服务 服务器创建好后配置IP&#xff0c;加入域以及添加域管理员cloudadmin&#xff0c;可参考安装sqlserver部分 1、安装Connection服务 使用cloudadmin用户登录Connection服务器 将connection安装包复制到…

导入的xls文件,数字和日期都是文本格式,到df3都正常,但df4报错,什么原因?...

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 脱我战时袍&#xff0c;著我旧时裳。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python最强王者交流群【斌】问了一个Pandas数据处理的问题&…

云闪付app拉新更新政策啦

云闪付app拉新一手平台 “聚量推客” 目前平台有3个云闪付的版本 1.云闪付高价版 2.云闪付京东版 3.云闪付普通版 普通版和最老的版本是一样的&#xff0c;高价办和京东版都是依托京东进行完成 云闪付拉新是什么&#xff1f;在拉新市场受各个地推人员和网推人员的追捧&am…

3D RPG Course | Core 学习日记一:初识URP

前言 最近开始学习Unity中文课堂M_Studio&#xff08;麦大&#xff09;的3D RPG Course&#xff0c;学习一下3D RPG游戏核心功能的实现&#xff0c;第一课我们学习到的是地图场景的编辑&#xff0c;其中涉及到了URP渲染。 我们首先进入Unity资源商店把地图素材和人物素材导入好…

提高微星笔记本Linux下散热性能,MSI-EC 驱动新补丁发布

导读近日消息&#xff0c;今年早些时候&#xff0c;Linux 6.4 中添加了 MSI-EC 驱动程序&#xff0c;允许对 Linux 系统微星笔记本电脑进行更多控制。 MSI-EC 驱动程序近日迎来新补丁&#xff0c;为微星笔记本带来 Cooler Boost 功能。该功能允许提高笔记本电脑的风扇转速&…

MyBatis的增删改查

2023.10.29 本章学习MyBatis的基本crud操作。 insert java程序如下&#xff1a; ①使用map集合传参 Testpublic void testInsertCar(){SqlSession sqlSession SqlSessionUtil.openSession();//先将数据放到Map集合中&#xff0c;在sql语句中使用 #{map集合的key} 来完成传…

服务熔断保护实践--Hystrix

概述 微服务有很多互相调用的服务&#xff0c;构成一系列的调用链路&#xff0c;如果调用链路中某个服务失效或者网络堵塞等问题&#xff0c;而有较多请求都需要调用有问题的服务时&#xff0c;这是就会造成多个服务的大面积失效&#xff0c;造成服务“雪崩”效应。 服务“雪…

React Hooks 实战案例

文章目录 一、React Hooks 简介二、React Hooks 的基本用法1. 使用 useState 创建状态2. 使用 useEffect 添加副作用 三、React Hooks 的常见问题1. 循环引用问题2. 副作用问题 四、React Hooks 实战案例1. 使用 useReducer 和 Redux&#xff1a;2. 使用 useContext&#xff1a…

HashJoin 在 Apache Arrow 和PostgreSQL 中的实现

文章目录 背景PostgreSQL HashJoin实现PG 执行器架构HashJoin 基本流程HashJoin 实现细节Join 类型HashJoin 的划分阶段HashJoin 的分批处理阶段JOIN 类型的状态机转换HashJoin 的投影和过滤 Arrow Acero HashJoin实现Acero 基本框架HashJoin 基本流程 总结 背景 近两个月转到…

C++ 中的仿函数 functor

一 仿函数的概念 1. 定义 仿函数&#xff08;functor&#xff09;是一种使用上像函数的类&#xff0c;其本质是一个实现了 operato() 函数的类&#xff0c;这种类就有了类似于函数一样的使用行为&#xff0c;这就是仿函数的类。 仿函数在 C STL标准库中被大量使用。 2. 特…

图神经网络和分子表征:5. Completeness

大家都知道 “两点确定一线&#xff0c;三点确定一平面”&#xff0c;那么多少个变量可以确定一个分子呢&#xff1f;这是最近顶刊们热烈讨论的话题。 &#xff08;据笔者不完全统计&#xff09;最早在 SphereNet &#xff08;2022 ICLR&#xff09;论文里&#xff0c;摘要上就…

【多态-动态绑定-向上转型-抽象类】

文章目录 静态绑定动态绑定多态的具体实现向上转型多态的优缺点抽象类抽象类的作用 总结 静态绑定 重载就是典型例子 动态绑定 多态的具体实现 //多态 class Animal{public String name;public int age;//无参构造方法public Animal() {}//有参构造方法public Animal(Strin…

MySQL安装『适用于 CentOS 7』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 腾讯云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.MySQL 的清理与安装1.1查看是否存在 MySQL 服务1.2.卸载原有服务1.…

每日Python:十个实用代码技巧

1、Jpg转Png 示例代码&#xff1a; # 图片格式转换, Jpg转Png# 方法① from PIL import Imageimg Image.open(demo.jpg) img.save(demo_open.png)# 方法② from cv2 import imread, imwriteimage imread("demo.jpg", 1) imwrite("demo_imread.png", im…

近年来上海高考数学命题趋势和备考建议,附1990年以来真题和解析

这篇文章六分成长为您介绍上海高考数学科目的一些分析和如何备考2024年的上海高考数学&#xff0c;并且为您提供1990-2023年的34年的上海高考数学真题和答案解析&#xff0c;供您反复研究。 一、上海高考数学题近年来的命题特点和趋势 1. 注重基础知识和基本技能&#xff1a;…

一文带你在GPU环境下配置YOLO8目标跟踪运行环境

本文介绍GPU下YOLO8目标跟踪任务环境配置、也即GPU下YOLO8目标检测任务环境配置。 YOLO8不仅仅可以实现目标检测&#xff0c;其还内置有Byte-Tracker、Bot-Tracker多目标跟踪算法。可以实现行人追踪统计、车流量跟踪统计等功能。值得注意的是Byte-Tracker、Bot-Tracker多目标跟…

全面详细讲解OSEK直接网络管理,并对比Autosar网管。

搞了两年的Autosar&#xff0c;用到的网络管理都是Autosar网络管理&#xff0c;虽然偶尔有听到或看到Osek网络管理&#xff0c;但是一直没机会具体进行开发和测试。最近有机会具体接触和开发到&#xff0c;弄完之后感受就是&#xff1a;还是Autosar的网络管理好用&#xff0c;O…