@RequestParam详解——获取QueryString格式参数

获取QueryString格式参数(@RequestParam)

  QueryString(查询字符串)是指URL中?符号后面的参数部分。它通常用于在HTTP请求中传递参数给服务器。

比如:http://localhost:8080/test?q=apple&category=fruit

  其中,?之后的部分就是查询字符串,包括q=applecategory=fruits两个参数。

  我们可以使用@RequestParam来获取QueryString格式的参数。

1.参数单独的获取

  @RequestParam把QueryString格式参数的参数绑定在方法的参数上,则想获取的参数单独的获取即把参数放在方法上即可。

  在方法中定义方法参数,方法参数名要和请求参数名一致,这种情况下可以省略@RequestParam注解。

@GetMapping("/test")public String testRquestParam(Integer id, String name, String[] likes){System.out.println(id);System.out.println(name);System.out.println(Arrays.toString(likes));return "success";}
​

如果方法参数名和请求参数名不一致,我们可以加上@RequestParam注解例如:

    @GetMapping("/test")public String testRquestParam(@RequestParam("id") Integer uid,@RequestParam("name") String name, @RequestParam("likes")String[] likes){System.out.println(uid);System.out.println(name);System.out.println(Arrays.toString(likes));return "success";}

2.获取参数封装成实体对象

如果我们想把这些参数封装到一个User对象中可以使用如下写法:

  @GetMapping("/test")public String testRquestParam(User user){System.out.println(user);return "success";}

User类定义如下:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private String[] likes;
}

测试时请求url如下:

http://localhost:8080/test?id=1&name=z&likes=唱&likes=跳

注意:实体类中的成员变量要和请求参数名对应上。并且要提供对应的set/get方法。

2.1 相关注解其他属性

2.1.1 required

   代表是否必须默认值为true也就是必须要有对应的参数。如果没有就会报错。

   如果对应的参数可传可不传则可以把其设置为fasle

例如:

   @GetMapping("/test")public String test(@RequestParam(value = "id",required = false) Integer uid,@RequestParam("name") String name, @RequestParam("likes")String[] likes){System.out.println(uid);System.out.println(name);System.out.println(Arrays.toString(likes));return "success";}

4.3.4.2 defaultValue

假如没有传对应的参数,可以用defaultValue属性设置默认值

例如:

    @GetMapping("/test")public String test(@RequestParam(value = "id",required = false,defaultValue = "666") Integer uid,@RequestParam("name") String name, @RequestParam("likes")String[] likes){System.out.println(uid);System.out.println(name);System.out.println(Arrays.toString(likes));return "success";}

@RequestBody与@RequestParam()可以同时使用

  一个请求,只有一个@RequestBody,但是可以有多个@RequestParam。

 可以使用@RequestBody获取请求体中的json数据,然后使用@RequestParam获取url中的参数

@PostMapping("/test")
public String example(@RequestParam("id") Long id, @RequestBody User user) {// 处理逻辑return  id + user.toString();
}

用@RequestParam接收的参数:

url: localhost:8080/example?id=123

用@RequestBody接收前端传的的json参数

Content-Type: application/json
​
{"name": "z","age": 3
}

  注意:参数加了@RequestParam()的话,那么前端必须传对应参数值(不过可以设置required属性来调节是否必须传),否者会报错;如果参数前没有加@RequestParam()注解,那么前端可以传,也可以不传。

 ——————————————————————————————————————————

其他Controller类常用的注解可以这个文章的汇总:Web开发Controller类详解-CSDN博客

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

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

相关文章

JavaScript 中的提升是什么

JavaScript中的提升(Hoisting)是指在代码执行之前,变量和函数的声明都会被提升到作用域的顶部。换句话说,变量和函数可以在它们被声明之前就可以使用。 变量提升: 在JavaScript中,变量的声明可以在赋值语句之前。在变…

C/C++ BM4 合并两个排序的链表

文章目录 前言题目1. 解决方案一1.1 思路概述1.2 源码 2. 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题采用两种方式,一种是直接插入法,还有一种就是递归调用。 题目 输入两个递增的链表,单个链表的长度为n,合并这两个链表…

用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)

前言: 笔者最近在学习java,最开始在用很笨的方法:先克隆远程仓库到本地,再把自己练习的代码从本地仓库上传到远程仓库,很是繁琐。后发现可以IDEA只需要做些操作可以直接把代码上传到远程仓库,也在网上搜了些…

【linux】head的用法 输出文件开头的内容

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

Redis 数据库,忘记密码如何找回或重置

对于 Redis 数据库,如果忘记了密码,可以通过以下步骤进行密码重置: 找到 Redis 配置文件 redis.conf。通常情况下,该文件位于 Redis 安装目录下的 etc 或 conf 文件夹中。使用任意文本编辑器打开 redis.conf 文件。在文件中找到 …

Qt Creator可视化交互界面exe快速入门5

上一期介绍了加法计算器,本期介绍QObject定时器。 首先一样先建个工程,比如我这项目名为QObject 本期的任务就是制作图片在界面上显示,然后每秒定时切换,点击另一个暂停按钮,可以定格当前图片,即取消定时切换功能。 显示图片的我们可以使用显示里面的label 这个用于显示…

机场信息集成系统系列介绍(6):机场协同决策支持系统ACDM*续集

目录 1、A-CDM实施效果评估背景 2、评估核心指标项 (1)机位效率 (2)登机效率 (3)推出效率 (4)滑行效率 (5)协同效率 3、其他指标项 (1&a…

计算机基础--Linux详解

一概述 Linux是一种自由和开放源码的类UNIX操作系统。它是由林纳斯托瓦兹于1991年首次发布的,并从那时起在全球范围内得到了广泛的应用和开发。Linux具有强大的可定制性,可以运行在各种硬件平台上,包括x86、ARM、MIPS等。它不仅广泛应用于服…

在 Linux 中使用 cat 命令

cat 命令用于打印文本文件的文件内容。至少,大多数 Linux 用户都是这么做的,而且没有什么问题。 cat 实际上代表 “连接(concatenate)”,创建它是为了 合并文本文件。但只要有一个参数,它就会打印文件内容。因此,它是用…

R语言孟德尔随机化研究工具包(1)---friendly2MR

friendly2MR是孟德尔岁随机化研究中的一个重要补充工具,可以批量探索因素间的因果关系,以及快速填补缺失eaf的数据,但是存在细微差异需要注意。 remotes::install_github("xiechengyong123/friendly2MR") library(friendly2MR)lib…

工程(十七)——自己数据集跑R2live

博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。 r2live是比较早的算法,编译过程有很多问题,通过以下两个博客可以解决 编译R2LIVE问题&解决方法-CSDN博客 r2live process has died 问题解决了_required process …

[设计模式 Go实现] 创建型~单例模式

使用懒惰模式的单例模式,使用双重检查加锁保证线程安全 代码实现 package singletonimport "sync"// Singleton 是单例模式接口,导出的 // 通过该接口可以避免 GetInstance 返回一个包私有类型的指针 type Singleton interface {foo() }// s…

华为交换机生成树STP配置案例

企业内部网络怎么防止网络出现环路?学会STP生成树技术就可以解决啦。 STP简介 在二层交换网络中,一旦存在环路就会造成报文在环路内不断循环和增生,产生广播风暴,从而占用所有的有效带宽,使网络变得无法正常通信。 在…

uni-app API接口扩展组件(uni-ui)

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

【Java | 多线程案例】定时器的实现

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 这里写…

Spring Boot快速搭建一个简易商城项目【完成登录功能且优化】

完成登录且优化: 未优化做简单的判断: 全部异常抓捕 优化:返回的是json的格式 BusinessException:所有的错误放到这个容器中,全局异常从这个类中调用 BusinessException: package com.lya.lyaspshop.exce…

2020年认证杯SPSSPRO杯数学建模A题(第一阶段)听音辨位全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 A题 听音辨位 原题再现: 把若干 (⩾ 1) 支同样型号的麦克风固定安装在一个刚性的枝形架子上 (架子下面带万向轮,在平地上可以被水平推动或旋转,但不会歪斜),这样的设备称为一个麦克风树。不同的麦…

x-cmd-pkg | 音视频处理领域中常用的开源转换工具:ffmpeg

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 ffmpeg 是音视频处理领域中常用的开源转换工具。以强大的功能、广泛的格式支持和丰富的参数调节在处理音视频格式的任务中得到了广泛的使用。 FFmpeg 是由 Fabrice Bellard 于 2000 年发起的开源多媒体框架&#xff…

starrocks集群fe/be节点进程守护脚本

自建starrocks集群,有时候服务会挂掉,无法自动拉起服务,于是采用supervisor进行进程守护。可能是版本的原因,supervisor程序总是异常,无法对fe//be进行守护。于是写了个简易脚本。 #!/bin/bash AppNameFecom.starrock…

189. 轮转数组(Java)

题目描述: 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮…