目录

2022-08-31-后端接收Get请求与Post请求-参数示例

后端接收Get请求与Post请求 参数示例

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

文章目录

前言

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

正文

接收Get请求的参数

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

Get请求的参数直接拼接在Url路径后面,如下所示:

http://localhost:8080/TW_Server/Test/getTest.do?userName=root&password=123456

该请求携带了两个名分别为 userNamepassword 的参数,他们的值分别是 root123456

后台写法如下:

https://i-blog.csdnimg.cn/blog_migrate/236f4bcbca84c9c4d31f91548b72bda3.png

测试结果:

https://i-blog.csdnimg.cn/blog_migrate/f4a0bf0e3bd6b750c86bc87b63d24da4.png

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

https://i-blog.csdnimg.cn/blog_migrate/88d2cac5fb7b35b8602936d7f63ebc86.png https://i-blog.csdnimg.cn/blog_migrate/c788ff129922319f31ee63a57e2895e0.png

使用PathVariable注解接收路径参数

Get请求参数写在Url路径中,如下所示:

http://localhost:8080/TW_Server/Test/root/123456/getTest.do

路径中 root123456 是我传的参数

后台写法如下:

https://i-blog.csdnimg.cn/blog_migrate/390535db0063ac9211292240e4af5314.png

测试结果:

https://i-blog.csdnimg.cn/blog_migrate/5370c5f93c9286c151e31e5c895796ea.png

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

https://i-blog.csdnimg.cn/blog_migrate/8b4e103047e12999d915d215a9b38189.png

测试结果:

https://i-blog.csdnimg.cn/blog_migrate/d4edcd6d678839e5d5599a081d0be229.png

接收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格式参数
不使用注解通过参数名接收对应参数

首先我创建一个文件如下所示:

https://i-blog.csdnimg.cn/blog_migrate/87c572aa3f2ddbdc9aaa21da5f69d5a2.png

后台写法(方法体就是将文件内容做个输出,不用过于纠结,我们的重点是接收参数):

https://i-blog.csdnimg.cn/blog_migrate/8a78712460286f635aaa741312f88f18.png

发送测试请求:

https://i-blog.csdnimg.cn/blog_migrate/4fe742929e1656610c320c8a6d2ae7fa.png

测试结果:

控制台输出的文件内容

https://i-blog.csdnimg.cn/blog_migrate/a55632f1f3ea43a737154f5e764999ff.png

接口返回的结果:

https://i-blog.csdnimg.cn/blog_migrate/554c049fff2ff2af17b17f5e5e6fda5b.png

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

后台写法:

https://i-blog.csdnimg.cn/blog_migrate/3e7bd4b6d3c4bf9c152ee8648fb45951.png

测试结果:

https://i-blog.csdnimg.cn/blog_migrate/5e039299d15d67bae3a9c2dddb398e6c.png

这个写法不能获取文件参数。

使用 @RequestParam 注解接收参数

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

后台写法:

https://i-blog.csdnimg.cn/blog_migrate/a12303b4b8176f52353d6e821d98671c.png

发送测试请求:

https://i-blog.csdnimg.cn/blog_migrate/771d23428cc462e87fbbf58a45af0643.png

测试结果依然是可以拿到数据,这里就不贴图了。


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

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


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

创建一个Param实体类:

https://i-blog.csdnimg.cn/blog_migrate/4bdcd82b6134dd2fbc3523c717c22cd0.png

后台写法:

https://i-blog.csdnimg.cn/blog_migrate/ce5c499b0463d2b9a73c4b20ff30424a.png

测试结果:

https://i-blog.csdnimg.cn/blog_migrate/f820a747c7cefb869ecc855b21936630.png

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

后台写法:

https://i-blog.csdnimg.cn/blog_migrate/057d8f277e30a2e1053c1816a09baa58.png

发送测试请求:

https://i-blog.csdnimg.cn/blog_migrate/d9eb5c6f367a0dc0a3cf50dabc614385.png

测试结果:

https://i-blog.csdnimg.cn/blog_migrate/9bf0d79dffd8f36d29c34fc0b79d3c3d.png

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

前端传参格式(请求方式为post):

https://i-blog.csdnimg.cn/blog_migrate/24d4b89362c87415046fa678703396b4.png

后端接受格式

https://i-blog.csdnimg.cn/blog_migrate/224bd80f5b466e6e330c998b72498b4a.png

输出结果:

https://i-blog.csdnimg.cn/blog_migrate/e0d9beb5f57c8f3539626b020e19566f.png

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

如下图所示,使用 List< String > a 接收参数:

https://i-blog.csdnimg.cn/blog_migrate/7dceee69aadb2b6a2316835e9286df67.png

如果传一个参数名为:a 的参数就会报错,但是如果将参数名改为stringList,会接收成功

https://i-blog.csdnimg.cn/blog_migrate/b0eaa7686f7c1290f8fbce7251c78639.png https://i-blog.csdnimg.cn/blog_migrate/836e220d0dc91034112d194ba845168c.png

而且stringList会匹配参数中所有的集合参数:

https://i-blog.csdnimg.cn/blog_migrate/60974c612c5edd27f1e679d85bbd6408.png

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

https://i-blog.csdnimg.cn/blog_migrate/a5e020586b156dc96e88a411162192e9.png

https://i-blog.csdnimg.cn/blog_migrate/116e284755bf9e596538313d1fa7a6a9.png

https://i-blog.csdnimg.cn/blog_migrate/33df6e650bdd84126ffca3ef319b3e5b.png

68747470733a2f:2f626c6f672e6373646e2e6e65742f4c6f766553746164792f:61727469636c652f64657461696c732f313236363230393232