前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >JavaEE进阶---SpringMVC(二)请求里面十种参数类型

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

作者头像
阑梦清川
发布2025-02-24 22:11:09
发布2025-02-24 22:11:09
240
举报
文章被收录于专栏:学习成长指南学习成长指南

1.请求

1.1接受单个参数的请求

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

image-20241110202806858
image-20241110202806858

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

image-20241110202515558
image-20241110202515558

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

image-20241110202629925
image-20241110202629925

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

image-20241110202648167
image-20241110202648167

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

image-20241110203139994
image-20241110203139994

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

image-20241110203204929
image-20241110203204929

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

image-20241110203340798
image-20241110203340798

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

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

image-20241110204029316
image-20241110204029316

1.2多个参数的传递

image-20241110205352312
image-20241110205352312

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

image-20241110205406216
image-20241110205406216

1.3传递对象

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

image-20241110210242096
image-20241110210242096
image-20241110210117339
image-20241110210117339
image-20241110210255988
image-20241110210255988

1.4参数重命名

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

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

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

image-20241110211141308
image-20241110211141308

1.5设置参数是非必传的

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

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

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

image-20241110211536927
image-20241110211536927

1.6数组的请求方式

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

image-20241110211910646
image-20241110211910646

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

image-20241110211850828
image-20241110211850828

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

image-20241110212126973
image-20241110212126973

1.7如何传递集合

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

image-20241110212754620
image-20241110212754620

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

image-20241110212304295
image-20241110212304295

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

image-20241110212322602
image-20241110212322602

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

image-20241110212425538
image-20241110212425538

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

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

image-20241110212405082
image-20241110212405082

1.8传递json数据

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

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

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

image-20241111164932474
image-20241111164932474

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

image-20241111165624489
image-20241111165624489

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

image-20241111165747330
image-20241111165747330

1.9获取url里面的参数

我们的这个注解里面的这个内容需要使用这个大括号包裹起来;

我们在这个postman里面直接输入我们的这个id,然后点击这个send之后就看到响应;

下面的这个是多个参数的url:我们直接写在这个url里面就可以了;但是这个需要加上我们的注解,而且这个注解要求我们传递参数的时候不可以是空的;

1.10获取文件

下面的这个就是获取这个文件的名字:我们使用的注解是这个requestpart

此外,我们可以添加这个路径让这个图片保存到这个指定的位置上面去,可以查看这个保存的效果;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.请求
    • 1.1接受单个参数的请求
    • 1.2多个参数的传递
    • 1.3传递对象
    • 1.4参数重命名
    • 1.5设置参数是非必传的
    • 1.6数组的请求方式
    • 1.7如何传递集合
    • 1.8传递json数据
    • 1.9获取url里面的参数
    • 1.10获取文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档