SpringBoot获取请求参数

spring boot获取请求参数

文章目录

  • spring boot获取请求参数
    • 一、简单参数
    • 二、实体参数
    • 三、数组集合参数
    • 四、日期参数
    • 五、Json参数
    • 六、路径参数

开头概述

在Spring Boot框架中,处理HTTP请求并获取请求参数是开发Web应用程序中的一项基本任务。无论是简单的GET请求还是复杂的POST请求,Spring Boot都提供了多种灵活且高效的方法来获取请求参数。这些方法不仅简化了代码,还提高了开发效率和代码的可读性。

本文将从简单参数获取、实体参数绑定、数组和集合参数处理、日期参数解析、JSON参数接收以及路径参数传递等多个方面,详细介绍如何在Spring Boot中获取请求参数。通过实例代码和详细解释,让读者能够快速掌握这些技巧,并在实际开发中灵活运用。

一、简单参数

1. 原始方式
在原始的web程序,通过HttpServletRequest对象手动获取
例如请求url为:http://localhost:8080/testParam?name=jack&age=12

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

可以看到获取到的参数都是String类型变量,其他类型的变量还需要自己手动转换一下,比较繁琐。

2. spring boot方式(自动类型转换)
spring boot支持自动类型转换,使用方法如下:
public String 方法名(类型1 变量名1,类型1 变量名1,···)

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

可以发现,代码非常简洁,极大的减少了代码量。
注意:方法形参名必须和请求参数名称一致 (形参名==请求参数名)

3. 方法形参名必须和请求参数名不一致(@RequestParam注解)

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

二、实体参数

简单的实体对象:

	public class User {private String name;private Integer age;}

复杂的实体对象

public class Address {String province;String city;
}
public class User {private String name;private Integer age;private Address address;
}

请求的参数名和对象的属性名保持一致(参数名==属性名)

    @RequestMapping("/testPojo")public String testPojo(User user){System.out.println(user);return "OK";}

三、数组集合参数

1. 使用数组接收参数

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

2. 使用集合接收参数

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

四、日期参数

使用**@DateTimeFormat**注解调整数据格式

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

五、Json参数

JSON数据键名形参对象属性名需保持相同,定义POJO类型形参可以接收参数,需要使用**@RequestBody**注解标识

    @RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "OK";}

六、路径参数

通过url直接传递参数,比如http://localhost:8080/path/1

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

结尾总结

​ 综上所述,Spring Boot为开发者提供了多种便捷的方式来获取HTTP请求中的参数。从原始的通过HttpServletRequest对象手动获取,到Spring Boot自动类型转换和注解支持,每一步都体现了Spring框架的易用性和灵活性。

​ 无论是处理简单的基本类型参数,还是复杂的实体对象、数组集合、日期格式以及JSON数据,Spring Boot都提供了相应的解决方案。此外,通过路径参数传递方式,还可以直接在URL中嵌入参数,进一步丰富了参数传递的手段。

​ 掌握这些技巧,不仅能够提升开发效率,还能使代码更加简洁和易于维护。在实际开发中,可以根据具体需求选择合适的方法来获取请求参数,从而构建出更加健壮和高效的Web应用程序。

希望本文能够帮助读者更好地理解和运用Spring Boot获取请求参数的相关知识,为Web开发之路打下坚实的基础。

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

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

相关文章

Linux debian系统安装ClamTk开源图形用户界面(GUI)杀毒软件

一、ClamTk简介 ClamTk 是一个基于 ClamAV 的开源图形用户界面(GUI)杀毒软件。它使用 GTK2-Perl 脚本构建而成,支持32位与64位操作系统。ClamTk 提供了一个直观的用户界面,使得用户无需深入了解命令行即可完成大部分操作。它具备…

Java期末复习暨学校第八次上机课作业

Java期末复习暨学校第八次上机课作业: 第一题: 分别给出了一个无参构造方法和有参构造方法,然后针对半径给出了set和get方法。针对面积给出了getArea方法,返回面积的值。 针对周长给出getPerimeter方法,返回周长。最后…

ShardingSphere如何轻松驾驭Seata柔性分布式事务?

0 前文 上一文解析了 ShardingSphere 强一致性事务支持 XAShardingTransactionManager ,本文继续: 讲解该类介绍支持柔性事务的 SeataATShardingTransactionManager sharding-transaction-xa-core中关于 XAShardingTransactionManager,本文…

将 SQL 数据库连接到云:PostgreSQL、MySQL、SQLite 和云集成说明

在当今数据驱动型世界中,云技术已经完全改变了数据库的管理和扩展。SQL 数据库(包括 PostgreSQL、MySQL 和 SQLite)在相当长的一段时间内一直是开发人员的最爱。然而,为了响应对可扩展、适应性强且经济高效的解决方案日益增长的需…

Vulnhub靶场案例渗透[10]- Momentum2

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建 1. 靶场描述 - Difficulty : medium - Keywords : curl, bash, code reviewThis wor…

STM32设计防丢防摔智能行李箱

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展,嵌入式系统、物联网技术、智能设备…

前后端请求响应

引入 在之前的例子中,我们编写了一个简单的web类,我们运行启动类,启动内嵌的tomcat后就可以在浏览器通过特定的路径访问tomcat中的应用程序。 但之前编写的程序仅仅是个简单的java类,其并未实现某个接口或继承某个类&…

爬虫——数据解析与提取

第二节:数据解析与提取 在网络爬虫开发中,获取网页内容(HTML)是第一步,但从这些内容中提取有用的数据,才是爬虫的核心部分。HTML文档通常结构复杂且充满冗余信息,因此我们需要使用高效的解析工…

数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…

设计模式-策略模式

1. 策略模式 策略模式(Strategy Pattern)针对一组算法,将每一个算法封装到 具有共同接口 的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 在软件开发中,经常会遇到…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十四,总结编码过程,从摄像头获得数据后,转成AVFrame,然后再次转成AVPacket,

也就是将摄像头采集到的YUV 的数据换成 AVFrame,然后再次转成 AVPacket,那么这AVPakcet数据要怎么办呢?分为三种情况: 一种是将AVPacket存储成h264文件,由于h264编码器在将avframe变成avpacket的时候就是按照h264的格…

【srm,招标询价】采购电子化全流程,供应商准入审核,在线询价流程管理(JAVA+Vue+mysql)

前言: 随着互联网和数字技术的不断发展,企业采购管理逐渐走向数字化和智能化。数字化采购平台作为企业采购管理的新模式,能够提高采购效率、降低采购成本、优化供应商合作效率,已成为企业实现效益提升的关键手段。系统获取在文末…

Transformer学习笔记(一)

Transformer学习笔记 基于 3B1B 可视化视频 自注意力机制 1.每个词的初始嵌入是一个高维向量,只编码该单词含义,与上下文没有关联 2.对初始向量进行位置编码,在高维向量中编码进位置信息(单词在语言序列中的位置信息&#xff…

4.4.5 timer中断流向Linux(从interrupt log回放)

4.4.5 timer中断流向Linux(从interrupt log回放) 按上文所述,timer中断3已经记录到root domain的interrupt log。在《3.4.1.3 IPIPE interrupt log数据结构》中,已经讨论过interrupt log的记录与回放。本小结,讨论什么…

WinDefender Weaker

PPL Windows Vista / Server 2008引入 了受保护进程的概念,其目的不是保护您的数据或凭据。其最初目标是保护媒体内容并符合DRM (数字版权管理)要求。Microsoft开发了此机制,以便您的媒体播放器可以读取例如蓝光,同时…

基于redis完成延迟队列

添加依赖 使用redisson完成延迟队列效果 <!-- redisson依赖 --><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.17.4</version> <!-- 请使用最新版本 --></dependency&g…

星辰资讯 | TiDB v7.5.4 v8.4.0 发版

作者&#xff1a; ShawnYan 原文来源&#xff1a; https://tidb.net/blog/6e299751 TiDB 8.4.0 DMR 发版 11 月 11 日&#xff0c;TiDB 8.4.0 版本发布&#xff0c;以下是该版本的一些关键特性和改进&#xff1a; 性能 分区表全局索引成为正式功能 &#xff1a;提高检索…

Spring基础

Spring基础 目录&#xff1a; 一、Spring框架简介 二、Spring容器机制 一、Spring框架简介 1. Spring发展历程 •在Spring兴起之前&#xff0c;Java企业级开发主要通过EJB (Enterprise JavaBean)完成。EJB是服务器端的组件模型&#xff0c;由于它过于依靠EJB容器&#xf…

二分查找法(leetcode 704)

在一个数组里找一个target&#xff0c;判断这个target在不在这个数组里&#xff0c;如果在&#xff0c;返回这个数组所对应的这个元素所对应的下标&#xff0c;否则返回-1. 易错点&#xff1a; &#xff08;1&#xff09;while(left<right) vs while(left<…

python的matplotlib实现数据分析绘图

目录 需求 效果 数据分析绘图示例 代码解释 运行结果 需求 分析一个班级中学生成绩分布&#xff0c;并绘图 效果 数据分析绘图示例 import matplotlib.pyplot as plt import numpy as np# 假设的学生成绩数据 np.random.seed(0) # 设置随机种子以确保结果可复现 score…