Springboot请求响应练习

        Springboot对于不同的请求进行响应

package com.wzb.ResponseExercise20240919;import com.wzb.ResponseExercise20240919.Result.Result;
import com.wzb.ResponseExercise20240919.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;// 添加RestController注解,表示此类中所有方法的返回值都作为浏览器的响应数据@RestController
public class ResponseExercise {// Controller方法中,已经设置了响应浏览器请求的数据// Controller方法中的return的结果,是通过@ResponseBody注解响应给浏览器的// @ResponseBody注解// 1.类型:方法注解,类注解;可以为类或者方法进行注解// 2.位置:书写在@Controller方法或者类上// 3.作用:将方法返回值直接响应给浏览器(如果方法返回值是实体对象/集合),那么将会转换为json格式后再响应给浏览器// 但是在一般的书写中,只是在类上添加了@RestController的注解,方法添加了@RequestMapping注解,并没有直接使用@RespondBody注解// 是因为@RestContorller是一个组合注解,是@Controller和@ResponseBody的组合,所以说不需要直接使用@RespondBody就可以响应浏览器// 可以理解为添加了@RestController注解就相当于添加了@ResponseBody注解// 类上有@RestController注解或者@ResponseBody注解时,表示当前类下所有的方法的返回值都作为浏览器的响应参数/* 无参数的请求 */@RequestMapping("/Hello")public Result function() {System.out.println("hello world");return Result.success("Hello World");}/* 请求普通参数 */@RequestMapping("/simpleParam")public Result simpleParam(String name) {System.out.println("I am " + name);return Result.success(("I am " + name));}/* 请求普通参数的复杂写法 */
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request) {
//        String name = request.getParameter("name");
//        int age = Integer.parseInt(request.getParameter("age"));
//        System.out.println(name + ": " + age);
//        return (name + ": " + age);
//    }/* 请求实体对象 *//* 若响应的是实体对象,那么前端将会以json格式展示出来 */@RequestMapping("/simplePojo")public Result simplePojo (User user) {System.out.println(user);return Result.success(user);}/* 请求数组 */@RequestMapping("/simpleArray")public Result simpleArray(String[] hobby) {System.out.println(Arrays.toString(hobby));return Result.success(hobby);}/* 请求集合 *//* 因为默认是响应数组,所以说想要响应集合需要用@RequestParam注解 */@RequestMapping("/simpleList")public Result simpleList(@RequestParam List<String> hobby) {System.out.println(hobby);return Result.success(hobby);}/* 请求时间日期参数 */@RequestMapping("/updateTime")public Result dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime) {System.out.println("现在的时间是: " + updateTime);return Result.success(updateTime);}/* 请求json参数 */@RequestMapping("/jsonParam")public Result jsonParam(@RequestBody User user) {System.out.println(user);return Result.success(user);}
}

        User类

package com.wzb.ResponseExercise20240919.pojo;public class User {private String name;private int age;private Address address;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}
}

        Address类

package com.wzb.ResponseExercise20240919.pojo;public class Address {private String province;private String city;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +'}';}
}

        统一返回结果Result

package com.wzb.ResponseExercise20240919.Result;public class
Result {private Integer code;  // 响应状态码:1代表成功;0代表失败private String message;  // 状态码信息 描述的字符串private Object data;  // 返回的数据,因为是返回的数据千奇百怪,所以说用顶级父类Object当作数据的类型public Result() {}public Result(Integer code, String message, Object data) {this.code = code;this.message = message;this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}// 为了提高效率,为成功响应和失败响应分别封装静态方法// 成功响应(不需要给前端返回数据)public static Result success() {return new Result(1, "success", null);}// 成功响应(需要给前端返回数据)public static Result success(Object data) {return new Result(1, "success", data);}// 失败响应public static Result error(String message) {return new Result(0, "Fail", null);}
}

        统一返回测试 

 

package com.wzb.ResponseExercise20240919;import com.wzb.ResponseExercise20240919.Result.Result;
import com.wzb.ResponseExercise20240919.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ResponseTogetherExercise {/* 响应的值多种多样,没有规范;不便于前后端分离开发:前端若拿到响应的数据,没有统一的规范,那么需要对不同的数据进行不同的解析,成本高、效率低、维护困难 *//* 所以说一般在开发中,定义一个统一的返回结果,所有请求都返回这个类型的结果,便于开发 *//* 这个统一的返回结果应该包含:1.响应状态码:当前的请求的成功还剩失败2.状态码信息:给页面的提示信息3.返回的数据:给前端响应的数据(字符串、对象、集合;所以说要用Object定义数据类型)*//* 有了统一的返回结果Result之后,就可以对Controller进行改造 */@RequestMapping("/simplePojoTogether")public Result simplePojo(User user) {System.out.println(user);/* 能够走到这一步,那么说明成功响应了 */return Result.success(user);}}

         

 

 

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

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

相关文章

防火墙配置变更管理

在任何组织中&#xff0c;当涉及到网络安全时&#xff0c;频繁地更换防火墙是必要的&#xff0c;实施简化的防火墙更改管理策略模板可以减少管理时间&#xff0c;还可以减少每次变更引入新的安全性或合规性问题的可能性。典型的防火墙变更管理流程将包括以下步骤&#xff1a; …

排序----插入排序

一开始把第一个元素看成是有序的&#xff0c;然后从第二个元素开始拿出来与前面的数据比较&#xff0c;若前面的数据小&#xff0c;就把前面的数据不断后移&#xff08;注意要把拿出来的那个元素提前保存下来&#xff09;&#xff0c;直到遇到比自己小的元素&#xff0c;然后插…

大语言模型-教育方向数据集

大语言模型-教育方向数据集 编号论文数据集1Bitew S K, Hadifar A, Sterckx L, et al. Learning to Reuse Distractors to Support Multiple-Choice Question Generation in Education[J]. IEEE Transactions on Learning Technologies, 2022, 17: 375-390.Televic, NL, https…

Java 每日一刊(第12期):面向对象

“任何复杂的程序&#xff0c;都可以通过分解成若干个简单的问题来解决。” 前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内容&#xff1a; 类对象类与对象的关系Java 中的三种变量类型OOP 的三大特性 类 类 是对现实世界中某类事物…

AntFlow系列教程之流程拒绝

这是开源项目AntFlow的一个系统入门使用教程.AntFlow是一款开源免费的企业级低代码工作流引擎.仿照钉钉设计,极大降低流程设计、开发和维护成本。详细介绍请查看历史文章&#xff1a;AntFlow开源仿钉钉低代码工作流平台集成RuoYi版本来啦 流程拒绝和流程同意提交的参数是一样的…

基于milvus数据库的RAG-Demo

1.上传文本并将文本向量化 import os from django.conf import settings from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter from langchain.vectorstores import Chroma from l…

【JAVA入门】Day47 - 线程

【JAVA入门】Day47 - 线程 文章目录 【JAVA入门】Day47 - 线程一、并发和并行二、多线程的实现方式2.1 继承 Thread 类的方式2.2 实现 Runnable 接口的方式2.3 利用 Callable 接口实现 三、Thread 类中常见的成员方法四、线程的调度和优先级4.1 抢占式调度4.2 优先级4.3 守护线…

如何不终止容器退出Docker Bash会话

如何不终止容器退出Docker Bash会话 💖The Begin💖点点关注,收藏不迷路💖 当通过docker exec进入Docker容器的bash会话后,如果想退出但不停止容器,可以使用快捷键组合: 按下Ctrl+P然后紧接着按下Ctrl+Q。 这个操作会让你从bash会话中“分离”出来,但容器会继续运行…

Zabbix 部署----安装 Zabbix(监控服务器)

目录 zabbix 官网: 1、准备一台虚拟机 1.整理配置yum源(192.xx.xx.10) 2.设置主机名(192.xx.xx.10) 3.防火墙 4.selinux 2、准备Zabbix-repo 使用阿里提供的zabbixYUM源 3、安装Zabbix服务器 4、初始化数据库 1.安装数据库 2.启动数据库 3.授权zabbix账号 4.初始化…

解决使用nvm ls命令没有出现*的问题

一、引言 在输命令的时候不知道手误写了什么导致node命令用不了&#xff0c;查看环境变量配的nvm对应的路径没问题&#xff0c;试过网上说的修改文件夹名字但是没有用&#xff01;&#xff01; 输入 nvm ls 显示已下载的node版本&#xff0c;发现前面没有* 输入nvm use 使用其中…

【macOS】【zsh报错】zsh: command not found: python

【macOS】【zsh Error】zsh: command not found: python 本地已经安装了Python&#xff0c;且能在Pycharm中编译Python程序并运行。 但是&#xff0c;在macOS终端&#xff0c;运行Python&#xff0c;报错。 首先要确认你在macOS系统下&#xff0c;是否安装了Python。 如果安…

去噪扩散隐式模型

dataset_name "datasets/oxford-102-flowers/" dataset_repetitions 2 # 数据集重复 num_epochs 25 image_size 64 # 模型训练和生成图像的大小 # KID 内核初始距离 kid_image_size 75 # 从噪声中逐步“去噪”或“扩散”到最终图像所需的步骤数。 kid_diffusi…

NEMESIS: NORMALIZING THE SOFT-PROMPT VECTORS OF VISION-LANGUAGE MODELS

文章汇总 发现的现象 动机的描述 Norm增加会导致性能下降&#xff0c;Norm降低会导致性能上升。于是作者提出&#xff1a; 我们需要规范化VLMs中的软提示吗? 实验验证 在左图中的紫色块中可以看到&#xff0c;随着模型性能的上升&#xff0c;Norm value会不断下降。 解决…

C语言 | Leetcode C语言题解之第419题棋盘上的战舰

题目&#xff1a; 题解&#xff1a; int countBattleships(char** board, int boardSize, int* boardColSize){int row boardSize;int col boardColSize[0];int ans 0;for (int i 0; i < row; i) {for (int j 0; j < col; j) {if (board[i][j] X) {if (i > 0 &…

ant vue3 datePicker默认显示英文

改前&#xff1a; 改后&#xff1a; 处理方法&#xff1a; 在App.vue页加上以下导入即可 import dayjs from dayjs; import dayjs/locale/zh-cn dayjs.locale(zh-cn); 如图&#xff1a;

电力电塔电线缺陷检测数据集 voc yolo

电力 电塔电线缺陷检测数据集 10000张 带标注 voc yolo 电力电塔电线缺陷检测数据集 数据集描述 该数据集旨在用于电力电塔和电线的缺陷检测任务&#xff0c;涵盖多种常见的缺陷类型。数据集包含了大量的图像及其对应的标注信息&#xff0c;可用于训练计算机视觉模型&#x…

如何搭建虚拟机Ubuntu?

1.创建新虚拟机 2.进入新建虚拟机向导&#xff0c;选择稍后安装 3. 选择Linux中的Ubuntu 4.为虚拟机命名设置路径 5. 设置磁盘容量大小 6.选择自定义硬件 7.设置设备状态 8.完成Ubuntu虚拟机创建

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL24

边沿检测 有一个缓慢变化的1bit信号a&#xff0c;编写一个程序检测a信号的上升沿给出指示信号rise&#xff0c;当a信号出现下降沿时给出指示信号down。 注&#xff1a;rise,down应为单脉冲信号&#xff0c;在相应边沿出现时的下一个时钟为高&#xff0c;之后恢复到0&#xff0…

Pandas_数据结构详解

1.创建DataFrame对象 概述 DataFrame是一个表格型的结构化数据结构&#xff0c;它含有一组或多组有序的列&#xff08;Series&#xff09;&#xff0c;每列可以是不同的值类型&#xff08;数值、字符串、布尔值等&#xff09;。 DataFrame是Pandas中的最基本的数据结构对象&am…

【kafka-04】kafka线上问题以及高效原理

Kafka系列整体栏目 内容链接地址【一】afka安装和基本核心概念https://zhenghuisheng.blog.csdn.net/article/details/142213307【二】kafka集群搭建https://zhenghuisheng.blog.csdn.net/article/details/142253288【三】springboot整合kafka以及核心参数详解https://zhenghui…