SpingBoot快速入门下

news2024/10/23 5:02:53

响应HttpServietResponse

介绍
  • @ResponseBody 加到Controller方法/类上

  • 作用:将方法返回值直接响应,如果返回值是 实体对象/集合,将会自动转JSON格式响应

  • @RestController = @Controller + @ResponseBody;

一般响应

统一响应
  • 在实际开发中一般不会用不同的类作为响应,因为不方便管理,一般会有一个类统一响应

  • 一般会带状态码,和响应类型

public class Result{
    //响应状态 如 1代表成功 0失败
    private Integer status;
    //提示信息,告诉前端我响应的是响应
    private String msg;
    //数据部分
    private Object data;
    //所有get/set方法  要确保data的对象的属性也有所有set/get方法
    //返回的json 格式是根据getXXX(); XXX的名称来命名键名,本且转小写
}

@RestController
public class TestController{ 
    //一般响应
   @RequestMapping("/getData")
    public _User getData(){
        System.out.println("getDataRequest");
        _User user = new _User();
        user.test = "test_001";
        user.age= 500;
        user.addre = new Address();
        user.addre.province = "A";
        user.addre.city = "cityb_A_001";
        return user;
    }
    //统一响应
    @RequestMapping("/getResult")
    public Result getResult(){
        System.out.println("getResult");
        _User user = new _User();
        user.test = "test_001";
        user.age= 500;
        user.addre = new Address();
        user.addre.province = "A";
        user.addre.city = "cityb_A_001";
        Result res = new Result();
        res.status = 1;             //表示成功
        res.msg = "Class _User";     //表示数据是_User 类
        res.data = user;
        return res;
    }
}
总结

@ResponseBody 注解

  • 定义: @ResponseBody是Spring MVC框架中的一个注解,它的作用是指示方法的返回值应该直接作为响应体返回给客户端,而不是返回一个视图(View)。

  • 使用场景:

    • 当你想要返回JSON、XML等数据格式,而不是跳转到一个页面。

    • 当你正在构建RESTful API,需要直接返回数据而不是视图。

  • 工作原理:

    • @ResponseBody注解的方法,其返回值将被Spring MVC的HttpMessageConverter转换成客户端请求的格式(如JSON)。

    • 如果方法返回的是String类型,Spring MVC会将这个字符串直接写入响应体。

  • 示例:

    @RequestMapping("/greeting")
    @ResponseBody
    public String greeting() {
        return "Hello, World!";
    }

    上述代码中,访问

    /greeting

    路径将直接返回字符串"Hello, World!"作为响应体。

统一响应结果

  • 目的: 统一的响应格式有助于前后端分离的开发模式,使得前端开发者可以更容易地处理来自后端的数据。

  • 组成部分:

    • code: 通常是一个整数,表示请求的处理结果。例如,200表示成功,404表示未找到,500表示服务器错误等。

    • msg: 是一个字符串,提供关于响应的额外信息。在成功时,可能是操作的描述;在失败时,提供错误信息。

    • data: 包含实际返回的数据。在成功的响应中,这里可能是请求的数据对象或数据集合。

  • 优点:

    • 标准化: 使得API的响应格式统一,简化客户端的处理逻辑。

    • 易于调试: 通过状态码和消息,可以快速识别请求是否成功以及失败的原因。

    • 扩展性: 方便添加额外的信息,如时间戳、分页信息等,而不影响现有逻辑。

  • 示例:

    {
      "code": 200,
      "msg": "操作成功",
      "data": {
        // 实际的数据对象
      }
    }

    这个JSON对象是一个典型的统一响应结果示例,它清晰地表明了操作的状态和返回的数据。

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

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

相关文章

SpringBoot | 实现邮件发送

运行环境: IntelliJ IDEA 2022.2.5 (Ultimate Edition) (注意:idea必须在2021版本以上)JDK17 项目目录: 该项目分为pojo,service,controller,utils四个部分, 在pojo层里面写实体内容(发邮件需要的发件人邮…

浅谈配置元件之HTTP Cookie管理器

浅谈配置元件之HTTP Cookie管理器 在进行Web测试时,处理Cookies是非常关键的一环,因为Cookies常用于存储用户会话信息、登录状态等。JMeter中的“HTTP Cookie管理器”(HTTP Cookie Manager)正是为此设计的配置元件,它…

后端学习笔记:Python基础

后端学习笔记:Python基础 数据类型: Python中主要有以下几种常用的基本数据类型: String 字符串类型,用单引号或者双引号引用Number 数字类型,包括浮点数,整数,长整数和复数List 列表项&…

24年计算机等级考试22个常见问题解答❗

24年9月计算机等级考试即将开始,整理了报名中容易遇到的22个问题,大家对照入座,避免遇到了不知道怎么办? 1、报名条件 2、报名入口 3、考生报名之后后悔了,不想考了,能否退费? 4、最多能够报多少…

【MySQL】(基础篇十五) —— 增删改数据

增删改数据 本文介绍如何利用SQL的INSERT语句将数据插入表中。以及如何利用UPDATE和DELETE语句进一步操纵表数据。 数据插入 INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用 插入完整的行;插入行的一部分;插…

目标检测技术学习

最近公司做一个目标检测相关的项目,对目标检测以及相关的深度学习知识有一些了解。这里整理一下。 一、目标检测定义 什么是目标检测?最近还碰到一个朋友做的项目,是无人机目标检测的,很有意思(据说还是军事用途&…

SpringBoot的冬奥会科普平台 LW +PPT+源码

3 平台分析 3.1 平台可行性分析 3.1.1 经济可行性 由于本平台是作为毕业设计平台,且平台本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该平台的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工…

python离线安装第三方库、及其依赖库(单个安装,非批量移植)

文章目录 1.外网下载第三方库、依赖库2.内网安装第三方库3.补充附录内网中离线安装python第三方库,这时候只能去外网手动下载第三方库,再传回内网进行安装。 问题是python第三方库往往有其前置依赖包,你很难清楚某个第三方库依赖的是哪些依赖包,更难受的是依赖包可能还有其…

谷歌个人号14天封闭测试,又添新要求?怎么提高封测通过率?

相信不少在Google Play上架应用的开发者们,对谷歌个人号的20人连续14天的封闭测试感到头疼。谷歌对个人号提出周期长达14天的封测要求,主要是希望开发者们能上架质量更好、体验感更好的app到谷歌商店。 而随着谷歌行业的发展,这项政策要求的执…

双网卡设置路由网络不通原因之一:静态ip设置失败

1.主要现象: 外网通,内网不通 外网IP设置 内网IP设置 路由表设置 内网不通 2.主要原因:在适配器中设置的内网静态IP没有成功 设置静态IP失败 在命令行使用ipconfig命令看到内网适配器的静态IP为192.168.0.55,并不是我们设置的1…

密码学及其应用——GMP库在密码学中的应用

GMP(GNU Multiple Precision arithmetic library,GNU多精度算术库)是一个针对大整数运算的库。这个库提供了许多针对多种多精度类型的计算函数: - 大整数:Z - 大有理数:Q - 大浮点数:R 1. 密码学…

Unity URP简单烘焙场景步骤

Unity URP简单烘焙场景步骤 前言项目场景布置灯光模型Lighting设置环境设置烘焙前烘焙后增加角色 前言 项目中要烘焙一个3D场景,用的URP渲染管线,简单记录一下。 项目 场景布置 灯光 因为场景中有能动的东西,需要一部分实时光照&#xf…

vuejs3+elementPlus后台管理系统,左侧菜单栏制作,跳转、默认激活菜单

默认激活菜单,效果&#xff1a; 默认激活菜单&#xff0c;效果1&#xff1a; 默认激活菜单&#xff0c;效果2&#xff1a; 跳转链接效果&#xff1a; 制作&#xff1a; <script setup> import {useUserStore} from "/stores/userStore.js"; import {ref} fr…

FKA总结

问题点&#xff1a; 原因分析: 工作状态下进入充电模式&#xff0c;程序检测到的电压会降低&#xff0c;比如8.07V的电池电压&#xff0c;它处于充满的临界状态&#xff0c;开机情况下程序检测的电压会降到7.98V&#xff0c;然后进入充电模式显示红灯 关机状态下进入充电模式…

volatile关键字(juc编程)

volatile关键字 3.1 看程序说结果 分析如下程序&#xff0c;说出在控制台的输出结果。 Thread的子类 public class VolatileThread extends Thread {// 定义成员变量private boolean flag false ;public boolean isFlag() { return flag;}Overridepublic void run() {// 线…

数据结构与算法3---栈与队

一、栈 1、顺序栈 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> //开辟空间#define MAXSIZE 50//顺序栈的基本算法 typedef struct {int stack[MAXSIZE];int top; }SqStack;//初始化 void InitStack(SqStack* S) {S->top …

[BUUCTF从零单排] Web方向 01.Web入门篇之粗心的小李解题思路

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

JEnv-for-Windows 详细使用

管理员执行jenv.bat文件 执行正常, 接下来就是按照官网的命令就行了 文件下载地址 https://download.csdn.net/download/qq_43071699/89462664 JEnv 是一个强大的Java版本管理工具&#xff0c;允许开发者在多个Java版本之间轻松切换。以下是一些常用的JEnv命令&#xff0c;这…

【网络安全产品】---网闸

了解了不少安全产品&#xff0c;但是对网闸的理解一直比较模糊&#xff0c;今天 what 网闸是安全隔离与信息交换系统的简称&#xff0c;使得在不影响数据正常通信的前提下&#xff0c;让络在不连通的情况下数据的安全交换和资源共享&#xff0c;对不同安全域/网络之间实现真正…

vue项目——前端CryptoJS加密、解密

1、vue项目需要安装CryptoJS安装包 npm install crypto-js 2、在项目中引入CryptoJS import CryptoJS from crypto-js 3、使用&#xff0c;代码如下 // 此处key为16进制let key jiajiajiajiajiajiajiajia;console.log(密钥&#xff1a;, key);// key格式化处理key Crypt…