Spring Boot Web开发实践:请求与响应参数的使用方法

主要介绍了请求响应的简单参数、实体参数、数组集合参数、日期参数、路径参数等各自的使用方法!!!

文章目录

前言

Postman

简单参数

原始方式

 SpringBoot方式

实体参数

数组集合参数

日期参数

 路径参数

总结


前言

主要介绍了请求响应的简单参数、实体参数、数组集合参数、日期参数、路径参数等各自的使用方法!!!


提示:以下是本篇文章正文内容,下面案例可供参考

 

请求响应:

  • 请求(HttpServletRequest):获取请求数据
  • 响应(HttpServletResponse):设置响应数据
  • BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(维护方便、体验一般)
  • CS架构:Client/Server,客户端/服务器架构模式。(开发、维护麻烦,体验不错)

前后端分离

当前最为主流的开发模式:前后端分离

Postman

 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。

作用:常用于进行接口测试

官网:Postman API Platform

 

 

简单参数

原始方式

在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。

@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){    String name = request.getParameter("name");    String ageStr = request.getParameter("age");int age = Integer.parseInt(ageStr);    System.out.println(name+"  :  "+age);return "OK";
}

 SpringBoot方式

简单参数:参数名与形参变量名相同,定义形参即可接收参数。

@RequestMapping("/simpleParam")
public String simpleParam(String name , Integer age){System.out.println(name+"  :  "+age);    return "OK";
}

 

 简单参数:如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。

@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name= "name") String username,@RequestParam(name = "age") Integer age) {System.out.println(username+" : "+age);return "OK";}

 注意事项:

@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将required属性设置为false。、

实体参数

简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可


public class User {private String name;private int age;
}
    @RequestMapping("/simplePojo")public String simplePojo(User user){System.out.println(user);return "OK";}

 

 

 复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。

public class User {private String name;private int age;private Address address;
}
public class Address {private String province;private String city;
}
    @RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println("user");return "OK";}

 规则:请求参数名与形参对象属性名相同,即可直接通过POJO接收

数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

    @RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "OK";}

 集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系

@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "OK";
}

 数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装

集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系

日期参数

 日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换 

@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "OK";
}

 

 JSON 参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识

public class Address {private String province;private String city;
}
public class User {private String name;private int age;private Address address;
}
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){System.out.println(user);return "OK";
}

 

 路径参数

路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数

@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){System.out.println(id);return "OK";
}

 

@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable Integer id, @PathVariable String name){System.out.println(id+ " : " +name);return "OK";
}

 

 


总结

简单参数:

  • 定义方法形参,请求参数名与形参变量名一致。
  • 如果不一致,通过@RequestParam手动映射。

实体参数:

  • 请求参数名,与实体对象的属性名一致,会自动接收封装 

数组集合参数:

  • 数组:请求参数名与数组名一致,直接封装
  • 集合:请求参数名与集合名一致,@RequestParam绑定关系 

日期参数:

  • @DateTimeFormat 

JSON参数:

  • @RequestBody 

路径参数:

  • @PathVariable 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tkinter Checkbutton设置了一个多选,为什么初始值都是勾选的:

代码如下&#xff1a; from tkinter import *master Tk()renyuan ["唐僧", "沙僧", "悟空", "八戒"]def r_change():rec ""ci 0for el in vars:rec el.get() "、"ci 1rec "九点" rec "离…

PHP概述-特点-应用领域-如何学习

老师建议注册使用百度文心一言&#xff1b;讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞&#xff1b;Kimi.ai - 帮你看更大的世界 等人工智能工具软件的一个到两个&#xff0c;也可下载文心一言、讯飞星火、kimi等APP软件使用&#xff0c;对于我们在读的大二学生来说有什么…

GPT-6曝光!阉割版「草莓」秋季兑现

夕小瑶科技说 原创 作者 | 海野 OpenAI的Q* 项目&#xff0c;也就是后来在网上沸沸扬扬的Strawberry草莓&#xff0c;终于定档于秋季上线。 据The Information爆料&#xff0c;作为GPT-4的下一代&#xff0c;Strawberry很惊艳&#xff1a; 拥有极强的推理和数学能力&#xf…

【人工智能 | 机器学习 | 理论篇】决策树(decision tree)

文章目录 1. 基本流程2. 划分选择2.1 信息增益2.2 增益率2.3 基尼系数 3. 剪枝处理3.1 预剪枝3.2 后剪枝 4. 连续与缺失值4.1 连续值处理4.2 缺失值处理 5. 多变量决策树 1. 基本流程 二分类任务决策树流程&#xff1a; 决策树&#xff1a;包含 1个根结点、若干个内部结点、若…

vue.js3+element-plus+typescript add,edit,del,search

vite.config.ts server: {cors: true, // 默认启用并允许任何源host: 0.0.0.0, // 这个用于启动port: 5110, // 指定启动端口open: true, //启动后是否自动打开浏览器 proxy: {/api: {target: http://localhost:8081/, //实际请求地址&#xff0c;数据库的rest APIschangeOr…

Maven Wrapper深入实战

概述 官网&#xff0c;GitHub。 Maven Wrapper&#xff0c;缩写为mvnw&#xff0c;是一个受Gradle Wrapper和Takari Wrapper启发而产生的Maven子项目&#xff0c;主要有以下三个用途&#xff1a; 让开发者电脑上无需安装Maven&#xff0c;也不用配置环境变量&#xff0c;即可…

【案例63】SSL RC4 加密套件支持检测 (Bar Mitzvah)修复方案

漏洞详情信息 漏洞名称 SSL RC4 加密套件支持检测 (Bar Mitzvah) 漏洞等级 高 漏洞描述 远程主机支持在一个或多个密码组中使用 RC4。 RC4 密码在伪随机字节流的生成中存在缺陷&#xff0c;导致引入了各种各样的小偏差&#xff0c;降低了其随机 性。 如果反复加密明文&am…

Linux下qt程序缺少中文字库,中文显示为框框

现象 Linux下qt5.9编译程序&#xff0c;运行时候界面上的中文显示一个一个的框框。 如图 原因 开发板里缺少中文字库或者qt字库环境未正常配置导致的。 解决方法一&#xff1a; 如果系统中存在中文字库&#xff0c;一般是在/usr/share/下有一个fonts文件夹 配置qt中文字库路…

【雷电防护】同为科技为国科大构建雷电防护系统

中国科学院大学&#xff08;University of Chinese Academy of Sciences&#xff09;&#xff0c;以下简称“国科大”&#xff0c;主校区位于北京市&#xff0c;是一所以科教融合为办学模式、研究生教育为办学主体的创新型大学&#xff0c;是国家“双一流”建设高校&#xff0c…

go+gin+vue入门

后端框架 1、安装go、goland 2、创建空项目 3、下载要用的包&#xff1a;命令行输入go get -u github.com/xxxx 4、安装mysql数据库&#xff0c;使用navicat创建数据库。 5、按照项目框架搭建目录、文件、代码&#xff1a;如router、model… 6、运行测试&#xff0c;go run ma…

openshift node NotReady kubelet http: TLS handshake error

文章目录 问题现象解决方法 问题现象 openshift 集群 node 节点 notready $ oc get node NAME STATUS ROLES AGE VERSION master1.ocp4.demo.com Ready control-plane,master 4d14h v1.29.76abe8a1 master2.ocp4…

什么是响应式?

表达式: 用于表达式进行插值,渲染到页面之中 语法: {{ 表达式 }} 案例 <template><h1>{{ arr[2] }}</h1><h1>{{ 9 5 }}</h1><h1>{{ "神奇" }}</h1> </template><script setup> import { ref } from vue; …

C++ | Leetcode C++题解之第375题猜数字大小II

题目&#xff1a; 题解&#xff1a; class Solution { public:int getMoneyAmount(int n) {vector<vector<int>> f(n1,vector<int>(n1));for (int i n - 1; i > 1; i--) {for (int j i 1; j < n; j) {f[i][j] j f[i][j - 1];for (int k i; k &l…

刚开始学习软件编程,如何克服编程学习中的挫折感?

编程学习之路往往充满挑战&#xff0c;即便是最优秀的程序员也会遇到挫折。克服挫折感的关键在于心态、方法和持续的学习。以下是一些通俗易懂的建议和案例&#xff0c;展示了如何在遇到编程难题时保持积极态度。 1. 接受挫折是成长的一部分 编程是一个不断学习和成长的过程。…

【Java设计模式】Bridge模式:在Java中解耦抽象与实现

文章目录 【Java设计模式】Bridge模式&#xff1a;在Java中解耦抽象与实现一、概述二、Bridge设计模式的别名三、Bridge设计模式的意图四、Bridge模式的详细解释及实际示例五、Java中Bridge模式的编程示例六、Bridge模式类图七、Java中何时使用Bridge模式八、Java中Bridge模式的…

【日记】今天实在太累了(436 字)

正文 今天的工作强度跟之前完全不是一个级别。能不能不要给我找这么多事做&#xff0c;我只想摸鱼摆烂。以后到下一个单位就说自己啥都不会好了&#xff0c;省得一天天全来找我。 忙碌程度上升了一个数量级&#xff0c;一天结束之后完全不想说话。 好想睡觉。 昨晚尝试完成年度…

【Python】Python 函数综合指南——从基础到高阶

文章目录 Python 函数综合指南1. 函数介绍1.1 什么是函数&#xff1f;1.2 定义函数示例&#xff1a;1.3 调用函数1.4 函数参数1.4.1 必需参数1.4.2 默认参数1.4.3 关键字参数1.4.4 可变长度参数 2. Python 内置函数2.1 字符串处理函数示例&#xff1a; 2.2 数学函数示例&#x…

大数据之数据湖Apache Hudi

一、Hudi框架概述 Apahe Hudi (Hadoop Upserts delete and Incrementals) 是Uber主导开发的开源数据湖框架&#xff0c;为了解决大数据生态系统中需要插入更新及增量消费原语的摄取管道和ETL管道的低效问题&#xff0c;该项目在2016年开始开发&#xff0c;并于2017年开源&#…

Memcached:单节点、集群案例;概念、工作原理

目录 案例前置知识点 Memcached 概念 部署场景 Memcached常用架构 流程 Memcached Memcached API 数据存储方式 数据过期方式 LRU Lazy Expiration Memcached缓存机制 Memcached路由算法 求余数hash算法 一致性hash算法 Memcached分布式 案例 单节点Memcach…

mysql数据库--表的操作

目录 1.创建表 2.查看表 3.修改表 对于表的重命名 更改某一列的属性 直接删除某一列 修改某一列的名称&#xff1a; 增加某一列 4.删除表 1.创建表 按照上次的那个创建表的操作&#xff0c;我们创建完成之后首先就是去把这个use一下&#xff0c;即进入到这个表里面去…