博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正。

前言

本文通过示例介绍:Controller层如何获取Get与Post请求携带的参数(SpringMVC框架)

正文

接收Get请求的参数

不使用注解直接通过参数名接收参数

Get请求的参数直接拼接在Url路径后面,如下所示:
http://localhost:8080/TW_Server/Test/getTest.do?userName=root&password=123456
该请求携带了两个名分别为userNamepassword的参数,他们的值分别是root123456

后台写法如下:
在这里插入图片描述
测试结果:
在这里插入图片描述

此方法要求请求的参数名与接口写的参数名必须一致,否则后台接收不到。

在这里插入图片描述在这里插入图片描述

使用PathVariable注解接收路径参数

Get请求参数写在Url路径中,如下所示:
http://localhost:8080/TW_Server/Test/root/123456/getTest.do
路径中root 123456 是我传的参数

后台写法如下:
在这里插入图片描述
测试结果:
在这里插入图片描述

还可以写成以下格式,这样只需要保证@PathVariable注解括号里的值与路径值对应就可以获取到参数,否则会报错:
在这里插入图片描述

测试结果:
在这里插入图片描述

接收Post请求的参数

Post请求提交的参数类型

我自己常遇到的:
Content-Type:multipart/form-data(用于在表单中上传文件)
Content-Type:application/x-www-form-urlencoded(浏览器原生的form表单类型,不能上传文件)
Content-Type:application/json(以json形式进行传输,通常是传输对象时使用)

不常遇到的:
Content-Type:application/xml
Content-Type:application/javascript
Content-Type:text/plain
Content-Type:text/html

Content-Type:multipart/form-data格式参数
不使用注解通过参数名接收对应参数

首先我创建一个文件如下所示:
在这里插入图片描述
后台写法(方法体就是将文件内容做个输出,不用过于纠结,我们的重点是接收参数):
在这里插入图片描述

发送测试请求:
在这里插入图片描述

测试结果:
控制台输出的文件内容
在这里插入图片描述
接口返回的结果:
在这里插入图片描述

不使用注解,通过HttpServletRequest对象获取参数

后台写法:
在这里插入图片描述
测试结果:
在这里插入图片描述
这个写法不能获取文件参数。

使用@RequestParam注解接收参数

@RequestParam注解括号中的值要与请求中传的参数名相同才行,否则会报错。

后台写法:
在这里插入图片描述
发送测试请求:
在这里插入图片描述
测试结果依然是可以拿到数据,这里就不贴图了。


Content-Type:application/x-www-form-urlencoded格式参数

该格式接收参数的方法直接参考multipart/form-data格式的就可以了,只是他不能上传文件而已。


Content-Type:application/json格式参数
使用@RequestBody注解接收参数:

创建一个Param实体类:
在这里插入图片描述
后台写法:
在这里插入图片描述
测试结果:
在这里插入图片描述

不使用注解,通过HttpServletRequest获取参数

后台写法:
在这里插入图片描述
发送测试请求:
在这里插入图片描述
测试结果:
在这里插入图片描述

后端使用集合接收参数(List)

前端传参格式(请求方式为post):
在这里插入图片描述
后端接受格式
在这里插入图片描述
输出结果:
在这里插入图片描述

有趣的点:前端传String 后端使用集合接收参数

如下图所示,使用 List< String > a 接收参数:
在这里插入图片描述
如果传一个参数名为:a 的参数就会报错,但是如果将参数名改为stringList,会接收成功
在这里插入图片描述在这里插入图片描述
而且stringList会匹配参数中所有的集合参数:
在这里插入图片描述

如果想用集合指定的参数名接收参数可以将集合封装到一个类中:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐