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.mzph.cn/diannao/60913.shtml

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

相关文章

服务端高并发分布式结构进阶之路

序言 在技术求知的旅途中,鉴于多数读者缺乏在中大型系统实践中的亲身体验,难以从宏观角度把握某些概念,因此,本文特选取“电子商务应用”作为实例,详细阐述从百级至千万级并发场景下服务端架构的逐步演变历程。同时&am…

WebRTC视频 02 - 视频采集类 VideoCaptureModule

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule(本文) WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

POI实现根据PPTX模板渲染PPT

目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…

sqli-labs靶场17-20关(每日四关)持续更新!!!

Less-17 打开靶场,发现页面比之前多了一行字 翻译过来就是,密码重置,大家肯定会想到,自己平时在日常生活中怎么密码重置,肯定是输入自己的用户名,输入旧密码,输入新密码就可以了,但…

node.js下载安装步骤整理

>> 进入node.js下载页面下载 | Node.js 中文网 >>点击 全部安装包 >>删除网址node后面部分,只保留如图所示部分,回车 >>点击进入v11.0.0/版本 >>点击下载node-v11.0.0-win-x64.zip(电脑是windows 64位操作系统适用) >…

ThinkServer SR658H V2服务器BMC做raid与装系统

目录 前提准备 一. 给磁盘做raid 二. 安装系统 前提准备 磁盘和系统BMC地址都已经准备好,可正常使用。 例: 设备BMC地址:10.99.240.196 一. 给磁盘做raid 要求: 1. 将两个894G的磁盘做成raid1 2. 将两块14902G的磁盘各自做…

SpringBoot配置类

在Spring Boot中,配置类是一种特殊的类,用于定义和配置Spring应用程序的各种组件、服务和属性。这些配置类通常使用Java注解来声明,并且可以通过Spring的依赖注入机制来管理和使用。 Spring 容器初始化时会加载被Component、Service、Reposi…

SpringBoot教程(二十五) | SpringBoot配置多个数据源

SpringBoot教程(二十五) | SpringBoot配置多个数据源 前言方式一:使用dynamic-datasource-spring-boot-starter引入maven依赖配置数据源动态切换数据源实战 方式二:使用AbstractRoutingDataSource1. 创建数据源枚举类2. 创建数据源…

ZooKeeper单机、集群模式搭建教程

单点配置 ZooKeeper在启动的时候,默认会读取/conf/zoo.cfg配置文件,该文件缺失会报错。因此,我们需要在将容器/conf/挂载出来,在制定的目录下,添加zoo.cfg文件。 zoo.cfg logback.xml 配置文件的信息可以从二进制包…

【大数据学习 | HBASE高级】hbase-phoenix 与二次索引应用

1. hbase-phoenix的应用 1.1 概述: 上面我们学会了hbase的操作和原理,以及外部集成的mr的计算方式,但是我们在使用hbase的时候,有的时候我们要直接操作hbase做部分数据的查询和插入,这种原生的方式操作在工作过程中还…

拆解测试显示Mac Mini (2024)固态硬盘并未锁定 互换硬盘后仍可使用

此前已经有维修达人尝试将 Mac Mini (2024) 固态硬盘上的 NAND 闪存拆下并替换实现扩容,例如可以从 256GB 扩容到 2TB。虽然接口类似于 NVMe M.2 SSD 但直接安装普通硬盘是无效的,苹果仍然通过某种机制检测硬盘是否能够兼容。 不过知名拆解网站 iFixit 的…

主界面获取个人信息客户端方

主界面获取个人信息客户端方 前言 上一集我们完成了websocket身份验证的内容,那么这一集开始我们将要配合MockServer来完成主界面获取个人信息的内容。 需求分析 我们这边是完成客户端那方的内容,当客户端登录成功之后,我们就要从服务器获…

Spring整合Redis

前言 在Spring项目中整合Redis,能显著提升数据缓存、分布式锁、会话管理等操作的效率。Jedis作为轻量级的Java Redis客户端,搭配Spring Data Redis模块,能够简化Redis的连接和数据操作,实现更高性能的读写与灵活的缓存管理。本文…

爬虫——Requests库的使用

在爬虫开发中,HTTP请求是与服务器进行交互的关键操作。通过发送HTTP请求,爬虫可以获取目标网页或接口的数据,而有效地处理请求和响应是爬虫能够高效且稳定运行的基础。Requests库作为Python中最常用的HTTP请求库,因其简洁、易用和…

LinkedHashMap实现LRU

LRU 环境:JDK11 最近接触LRU(Least Recently Used),即最近最少使用,也称淘汰算法,在JDK中LinkedHashMap有相关实现 LRU的LinkedHashMap实现 LinkedHashMap继承HashMap。所以内存的存储结构和HashMap一样,但是LinkedH…

IDEA部署AI代写插件

前言 Hello大家好,当下是AI盛行的时代,好多好多东西在AI大模型的趋势下都变得非常的简单。 比如之前想画一幅风景画得先去采风,然后写实什么的,现在你只需描述出你想要的效果AI就能够根据你的描述在几分钟之内画出一幅你想要的风景…

27-压力测试

测试目标 & 测试数据 ● 测试目标 ○ 测试集群的读写性能 / 做集群容量规划 ○ 对 ES 配置参数进行修改,评估优化效果 ○ 修改 Mapping 和 Setting,对数据建模进行优化,并测试评估性能改进 ○ 测试 ES 新版本,结合实际场…

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明 文章目录 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明前言1. Ribbon 介绍1.1 LB(Load Balance 负载均衡) 2. Ribbon 原理2.2 Ribbon 机制 3. Spring Cloud Ribbon 实现负载均衡算法-应用实例4. 总结&#x…

vue3【实战】切换全屏【组件封装】FullScreen.vue

效果预览 原理解析 使用 vueUse 里的 useFullscreen() 实现 代码实现 技术方案 vue3 vite UnoCSS vueUse 组件封装 src/components/FullScreen.vue <template><component:is"tag"click"toggle":class"[!isFullscreen ? i-ep:full-sc…

docker:基于Dockerfile镜像制作完整案例

目录 摘要目录结构介绍起始目录package目录target目录sh目录init.sh脚本start.sh脚本stop.sh脚本restart.sh脚本 config目录 步骤1、编写dockerfilescript.sh脚本 2、构件镜像查看镜像 3、保存镜像到本地服务器4、复制镜像文件到指定目录&#xff0c;并执行init.sh脚本5、查看挂…