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

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

文章目录

    • 前言
    • 正文
      • 接收Get请求的参数
        • 不使用注解直接通过参数名接收参数
        • 使用PathVariable注解接收路径参数
      • 接收Post请求的参数
        • Post请求提交的参数类型
        • Content-Type:multipart/form-data格式参数
          • 不使用注解通过参数名接收对应参数
          • 不使用注解,通过`HttpServletRequest`对象获取参数
          • 使用`@RequestParam`注解接收参数
        • Content-Type:application/x-www-form-urlencoded格式参数
        • Content-Type:application/json格式参数
          • 使用`@RequestBody`注解接收参数:
          • 不使用注解,通过`HttpServletRequest`获取参数
    • 后端使用集合接收参数(List)
    • 有趣的点:前端传String 后端使用集合接收参数

前言

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

正文

接收Get请求的参数

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

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

后台写法如下:
后端接收Get请求与Post请求 参数示例_第1张图片
测试结果:
后端接收Get请求与Post请求 参数示例_第2张图片

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

后端接收Get请求与Post请求 参数示例_第3张图片后端接收Get请求与Post请求 参数示例_第4张图片

使用PathVariable注解接收路径参数

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

后台写法如下:
后端接收Get请求与Post请求 参数示例_第5张图片
测试结果:
后端接收Get请求与Post请求 参数示例_第6张图片

还可以写成以下格式,这样只需要保证@PathVariable注解括号里的值与路径值对应就可以获取到参数,否则会报错:
后端接收Get请求与Post请求 参数示例_第7张图片

测试结果:
后端接收Get请求与Post请求 参数示例_第8张图片

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

首先我创建一个文件如下所示:
后端接收Get请求与Post请求 参数示例_第9张图片
后台写法(方法体就是将文件内容做个输出,不用过于纠结,我们的重点是接收参数):
后端接收Get请求与Post请求 参数示例_第10张图片

发送测试请求:
后端接收Get请求与Post请求 参数示例_第11张图片

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

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

后台写法:
后端接收Get请求与Post请求 参数示例_第12张图片
测试结果:
后端接收Get请求与Post请求 参数示例_第13张图片
这个写法不能获取文件参数。

使用@RequestParam注解接收参数

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

后台写法:
后端接收Get请求与Post请求 参数示例_第14张图片
发送测试请求:
后端接收Get请求与Post请求 参数示例_第15张图片
测试结果依然是可以拿到数据,这里就不贴图了。


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

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


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

创建一个Param实体类:
后端接收Get请求与Post请求 参数示例_第16张图片
后台写法:
后端接收Get请求与Post请求 参数示例_第17张图片
测试结果:
后端接收Get请求与Post请求 参数示例_第18张图片

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

后台写法:
后端接收Get请求与Post请求 参数示例_第19张图片
发送测试请求:
在这里插入图片描述
测试结果:
后端接收Get请求与Post请求 参数示例_第20张图片

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

前端传参格式(请求方式为post):
后端接收Get请求与Post请求 参数示例_第21张图片
后端接受格式
后端接收Get请求与Post请求 参数示例_第22张图片
输出结果:
后端接收Get请求与Post请求 参数示例_第23张图片

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

如下图所示,使用 List< String > a 接收参数:
后端接收Get请求与Post请求 参数示例_第24张图片
如果传一个参数名为:a 的参数就会报错,但是如果将参数名改为stringList,会接收成功
后端接收Get请求与Post请求 参数示例_第25张图片后端接收Get请求与Post请求 参数示例_第26张图片
而且stringList会匹配参数中所有的集合参数:
后端接收Get请求与Post请求 参数示例_第27张图片

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

后端接收Get请求与Post请求 参数示例_第28张图片
后端接收Get请求与Post请求 参数示例_第29张图片
后端接收Get请求与Post请求 参数示例_第30张图片

你可能感兴趣的:(java,spring,后端)