JavaEE进阶---SpringMVC(二)请求里面十种参数类型

文章目录

  • 1.请求
    • 1.1接受单个参数的请求
    • 1.2多个参数的传递
    • 1.3传递对象
    • 1.4参数重命名
    • 1.5设置参数是非必传的
    • 1.6数组的请求方式
    • 1.7如何传递集合
    • 1.8传递json数据
    • 1.9获取url里面的参数
    • 1.10获取文件

1.请求

1.1接受单个参数的请求

下面的这个就是我们的项目代码,都是单个参数的,我们定义了两个方法:r1的这个参数就是name,r2的这个参数就是age;

image-20241110202806858

我们运行起来之后,这个r1需要传递的这个参数就是名字,我们设置之后直接点击发送,下面就会打印我们在这个IDEA里面设置的这个相应的相关的信息;

image-20241110202515558

同理,当我们把这个路径指定为我们的这个r2的路径的时候,这个里面就会把我们age传递过去,这个就会把我们的传递的这个age参数给打印出来作为这个响应的信息;

image-20241110202629925

我们上面的两个都是在这个postman里面构造这个请求的,构造之后我们就可以直接把这个url从这个postman复制到这个浏览器上面,使用我们的这个浏览器进行打开,这个也是可以看到效果的;

image-20241110202648167

但是如果我们给了这个参数但是什么都没有传递,这个时候就会报错:

image-20241110203139994

下面的这个大概说的就是我们的这个代码里面的这个参数类型int是我们的基本数据类型,我们想要不传递参数且不会报错,这个时候需要使用我们的包装类:integer

image-20241110203204929

使用包装类之后,及时我们使用这个postman的时候没有传递这个参数的实质性内容,但是这个不会报错,而是使用这个默认的nnull值进行处理;(因此我们对于接口设计的时候,通常使用包装类型)

image-20241110203340798

如果我们的这个需要传递的参数类型和我们传递这个参数的类型不匹配,这个时候就会被认为是客户端的错误(例如我们的这个age需要传递的是integer类型的,但是我们传递字符串过去)这个时候就会报错,说这个就是客户端的问题,我们的这个是无法进行解析的;

这个时候我们的这个日志里面也是会显示这个相关的信息的,就是说无法进行成功的转换;

image-20241110204029316

1.2多个参数的传递

image-20241110205352312

解释这个里面是多个参数,我们的这个参数的传递的方式还是不变的,就是按照这个顺序依次进行传递即可;

image-20241110205406216

1.3传递对象

当我们想要把上面的这个参数的数量进行调整的时候,上面的这个方式就显得很生硬,因此我们就可以考虑把我们的这个参数封装到一个对象里面去,我们直接把这个对象传递过去;

image-20241110210242096

image-20241110210117339

image-20241110210255988

1.4参数重命名

这个就是在我们的前后端进行交互的时候,我们的这个参数的名字可以进行设计,就是我们的前端传递的参数的叫法和我们的这个后端使用的这个参数的名字可以是不一样的;

我们可以使用这个@requestParam这个注解进行说明,这个注解里面的参数指的就是我们的这个前端传递的名字,也就是我们在这个postman里面进行测试的名字,我们的这个postman里面传递的这个name参数的内容被我们的这个代码里面的这个username接收到,这样的话我们的这个后端就可以根据自己的需求对于这个变量的名字进行修改;

只要这个注解里面的的这个名字和前端保持一致即可;

image-20241110211141308

1.5设置参数是非必传的

对于上面的这个注解,如果我们对于这个参数一旦加上了注解,这个时候我们的这个参数就是必须传递的,但是我们可以进行这个设置可以不传递这个参数;

就是这个注解里面对于这个参数的默认就是true,就是这个参数我们必须传递,但是我们可以加上这个required=false这个参数表示我们的这个参数不是必须的;

这样的话,如果我们的这个postman里面没有传递这个参数,这个时候我们的这个日志里面也是不会显示错误信息的;

image-20241110211536927

1.6数组的请求方式

定义这个r6方法,这个里面的参数就是我们的arr数组,这个返回值就是把我们的这个数组元素挨个的打印出来;

image-20241110211910646

postman里面的这个参数的传递的具体的写法:这个实际上是对于我们的这个int进行处理,因为我们设置的这个参数是string类型的数组,但是这个不影响;

image-20241110211850828

下面的这个是传递数组的第二个方式,我们可以了解一下,这个也是可以正常的进行打印输出的;

image-20241110212126973

1.7如何传递集合

我们的这个集合传递使用的这个参数就是list

image-20241110212754620

我们进行这个传递之后发现是会报错的;

image-20241110212304295

我们进行这个错误日志的查看发现是这个没有找到合适的构造器,这个时候我们需要加上这个注解;

image-20241110212322602

其实上面的这个主要的原因是我们的这个一组数据进行传递的时候是使用这个数组的方式进行组织的,如果哦我们想要是用这个集合进行这个数据的组织,这个时候我们就需要使用这个注解进行额外的说明;

image-20241110212425538

即使进行上面的这个额外的说明,再次运行的时候是还会报错的,这个主要是因为我们的这个参数是空指针异常,因此我们需要向上面的这个里面添加我们的这个if进行判断,如果是空的话就会直接返回;

然后再次运行,这个时候才会打印出正确的结果;

image-20241110212405082

1.8传递json数据

我们首先需要创建对象,然后调用这个相关的成员方法对于这个相关的属性进行赋值;

1)我们把这个创建的对象转换为这个json数据之后输出;

2)把这个得到的json字符串转换为我们的这个对象再次打印,readvalue的参数就是我们的这个字符串和我们的这个类的类对象(反射);

image-20241111164932474

我们传递这个json数据的时候,需要注意这个选择的内容是body里面的这个raw里面的在这个json字符串,然后把我们的这个请求按照这个json格式进行输入;

image-20241111165624489

因为这个json传递的时候,是从这个body里面读取内容的,因此这个参数需要加上注解:@requestbody

image-20241111165747330

1.9获取url里面的参数

我们的这个注解里面的这个内容需要使用这个大括号包裹起来;
在这里插入图片描述
我们在这个postman里面直接输入我们的这个id,然后点击这个send之后就看到响应;
在这里插入图片描述
下面的这个是多个参数的url:我们直接写在这个url里面就可以了;但是这个需要加上我们的注解,而且这个注解要求我们传递参数的时候不可以是空的;
在这里插入图片描述

1.10获取文件

下面的这个就是获取这个文件的名字:我们使用的注解是这个requestpart
在这里插入图片描述
此外,我们可以添加这个路径让这个图片保存到这个指定的位置上面去,可以查看这个保存的效果;
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FIPS203 后量子安全ML-KEM(标准简读)

FIPS 203是美国国家标准与技术研究院(NIST)发布的关于模块格基密钥封装机制(ML-KEM)的标准,旨在提供一种能抵御量子计算机攻击的密钥建立方案。以下是对该文档的详细总结: 标准概述 目的与范围&#xff…

Android GPU纹理数据拷贝

在 Android 开发中读取纹理数据有以下几种方法: glReadPixelsImageReaderPBO(Pixel BufferObject) HardwareBuffer 1. glReadPixels glReadPixels 是 OpenGL ES 的 API,通常用于从帧缓冲区中读取像素数据,OpenGL ES…

NVM切换本地node版本

1、下载nvm https://github.com/coreybutler/nvm-windows/releases nvm-windows 然后点击nvm-setup.exe下载&#xff0c;尽可能都选择默认安装选项 2、nvm常用命令 使用以下命令安装特定版本的 Node.js&#xff1a; nvm install <version> nvm install 14.17.0 使…

GNN系统学习:消息传递图神经网络

引言 在开篇中我们介绍了&#xff0c;为节点生成节点表征&#xff08;Node Representation&#xff09;是图计算任务成功的关键&#xff0c;我们要利用神经网络来学习节点表征。 消息传递范式是一种聚合邻接节点信息来更新中心节点信息的范式&#xff0c;它将卷积算子推广到了…

C语言 | Leetcode C语言题解之第554题砖墙

题目&#xff1a; 题解&#xff1a; struct HashTable {int key, val;UT_hash_handle hh; };int leastBricks(int** wall, int wallSize, int* wallColSize) {struct HashTable* cnt NULL;for (int i 0; i < wallSize; i) {int n wallColSize[i];int sum 0;for (int j …

全文检索ElasticSearch到底是什么?

学习ElasticSearch之前&#xff0c;我们先来了解一下搜索 1 搜索是什么 ① 概念&#xff1a;用户输入想要的关键词&#xff0c;返回含有该关键词的所有信息。 ② 场景&#xff1a; ​ 1互联网搜索&#xff1a;谷歌、百度、各种新闻首页&#xff1b; ​ 2 站内搜索&#xff…

【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下&#xff0c;通过对vector的模拟实现&#xff0c;我们来说一下迭代器失效问题。 1.准备工作 在头文件vector.h里声明和实现函数&#xff0c;然后在test.cpp里测试代码的正确性。 在vector.h中用命名空间分隔一下&#xff0c;因为c库里面也有…

前端CSS3 渐变详解

文章目录 CSS3 渐变详解一、引言二、CSS3 渐变基础1、线性渐变1.1、基本线性渐变1.2、改变渐变方向 2、径向渐变2.1、基本径向渐变2.2、设置径向渐变的中心 三、高级渐变技巧1、重复渐变1.1、重复线性渐变1.2、重复径向渐变 四、总结 CSS3 渐变详解 一、引言 在现代网页设计中…

Docker学习—Docker的安装与使用

Docker安装 1.卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先…

M1M2 MAC安装windows11 虚拟机的全过程

M1/M2 MAC安装windows11 虚拟机的全过程 这两天折腾了一下windows11 arm架构的虚拟机&#xff0c;将途中遇到的坑总结一下。 1、虚拟机软件&#xff1a;vmware fusion 13.6 或者 parallel 19 &#xff1f; 结论是&#xff1a;用parellel 19。 这两个软件都安装过&#xff0…

蓝桥杯备考——算法

一、排序 冒泡排序、选择排序、插入排序、 快速排序、归并排序、桶排序 二、枚举 三、二分查找与二分答案 四、搜索&#xff08;DFS&#xff09; DFS&#xff08;DFS基础、回溯、剪枝、记忆化&#xff09; 1.DFS算法&#xff08;深度优先搜索算法&#xff09; 深度优先搜…

‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,Miniconda

下载了conda&#xff0c;但是在cmd里执行conda --version会显示’conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 原因是环境变量里没有添加conda&#xff0c;无法识别路径。 需要在系统环境变量里添加如下路径&#xff1a; 保存之后重新打开cmd&am…

UE5 随机生成地牢关卡

参考视频&#xff1a;【UE5 | 教程 | 地编】虚幻引擎5 中创建史诗级 程序化 地下城_哔哩哔哩_bilibili 首先创建一个父项Actor 这个BOX碰撞提是和地板重叠的 这三个是场景组件&#xff0c;这个ExitsFolder下面的箭头等会会在子蓝图中添加 接下来创建BP_MasterRoom的子蓝图&…

Qt信号和槽-->day04

Qt信号和槽 标准的信号和槽函数Qt中的槽函数Qt中的信号 connect案例 自定义信号和槽案例分析 信号槽的拓展信号连接信号案例 信号槽的两种连接方式Qt5中的处理方式Qt4中的处理方式Qt5处理信号槽重载问题案例 lambda表达式简单案例Qt中的应用 补充知识点 标准的信号和槽函数 QW…

十大经典排序算法-冒泡算法详解介绍

1、十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要…

ASMR助眠声音视频素材去哪找 吃播助眠素材网站分享

在快节奏的现代生活中&#xff0c;越来越多的人感到压力山大&#xff0c;许多人开始寻求助眠和放松的方式。而ASMR&#xff08;自发性知觉经络反应&#xff09;助眠声音视频&#xff0c;凭借其独特的声音刺激和放松效果&#xff0c;成为了睡前的“神器”。如果你是一位内容创作…

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令&#xff08;help&#xff09;2.4. 命令说明书&#xff08;man&#xff09;2.5. 切换用户&#xff08;su&#xff09;2.6.历史指令 3.目录…

量化分析工具日常操作日记-5-通合科技

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技&#xff08;300491&#xff09;。 周末国家新政策&#xff0c;要大力支持军工行业&#xff0c;我用工具挖掘了两个低位股&#xff0c;供大家参考。通合科技&#xff08;300491&#xff…

4D施工奇迹:废弃码头变身地标体育场

SYNCHRO 促进协同和战略性施工&#xff0c;完成大型项目交付 改造举世闻名的海滨城市 为了提升球迷的比赛日体验&#xff0c;英国足球俱乐部埃弗顿足球俱乐部正在利物浦默西河畔废弃的布拉姆利摩尔码头建造一座新的现代化体育场。该体育场是利物浦城市总体规划的一部分&#xf…

图神经网络(GNN)入门笔记(1)——图信号处理与图傅里叶变换

一、信号处理&#xff1a;时域与频域 时域&#xff08;Time Domain&#xff09;是我们生活中常见的信号表示方式&#xff0c;以横轴为时间&#xff0c;纵轴为信号该时刻的强度&#xff08;幅度&#xff09;&#xff0c;就可以得到一张时域图。打个比方&#xff0c;通过每时每刻…