Springboot请求响应练习

devtools/2024/9/24 4:37:31/

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

java">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类

java">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类

java">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

java">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);}
}

        统一返回测试 

 

java">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.ppmy.cn/devtools/116325.html

相关文章

文件系统设计 - 开发文件系统 Store (上篇)

本节开始&#xff0c;我们将从最核心基础的文件系统进行设计实现&#xff0c;构建文件系统Store 一个基础的响应式Store类设计文件系统类接口小结 一个基础的响应式Store类 从Vue3 开始&#xff0c;Vue响应式借助Proxy重构后&#xff0c;整个响应式系统的应用变得非常的灵活&a…

Java集合(Map篇)

一.Map a.使用Map i.键值&#xff08;key-value&#xff09;映射表的数据结构&#xff0c;能高效通过key快速查找value&#xff08;元素&#xff09;。 ii.Map是一个接口&#xff0c;最常用的实现类是HashMap。 iii.重复放入k-v不会有问题&#xff0c;但是一个…

Opencv图像预处理(三)

blur&#xff08;均值滤波&#xff09; 一种常用的图像平滑处理方法&#xff0c;通过将像素的领域内像素值取平均来减少图像中的噪声&#xff0c;从而达到图像平滑的效果&#xff0c;图像会更模糊。 using System; using System.Collections.Generic; using System.Linq; usi…

Set 和 Map 的模拟实现

1、引言 在数据结构与算法的学习与实践中&#xff0c;关联容器&#xff08;associative containers&#xff09;是不可忽视的重要工具。作为高效管理数据的一类容器&#xff0c;C 标准库中的 set 和 map 在现代软件开发中扮演着关键角色。这两个容器通过平衡二叉搜索树&#x…

2024年9月21日---关于Maven

第一节&#xff1a;maven工具的简介 1.1 开发过程中遇到的问题 1、都是同样的代码&#xff0c;为什么在我的机器上可以编译执行&#xff0c;而在他的机器上就不行&#xff1f; 2、为什么在我的机器上可以正常打包&#xff0c;而配置管理员却打不出来? 3、项目组加入了新的人…

Qt窗口——QToolBar

文章目录 工具栏创建工具栏设置toolTip工具栏配合菜单栏工具栏浮动状态 工具栏 QToolBar工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。 可以有多个&#xff0c;也可以没有。 创建工具栏 #include "mainwindow.h" #include "ui_mainwindow.h&qu…

vue项目加载cdn失败解决方法

注释index.html文件中 找到vue.config.js文件注释、

卷积神经网络(Convolutional Neural Network,CNN)

CNN网络主要有三部分构成&#xff1a;卷积层、池化层和全连接层构成&#xff0c;其中卷积层负责提取图像中的局部特征&#xff1b;池化层用来大幅降低参数量级(降维)&#xff1b;全连接层类似神经网络的部分&#xff0c;用来输出想要的结果。 卷积思想 卷积Convolution&#x…