列举一下@RequestParam接收参数的几种前后端对应情况:

大前提:

1,如果后端使用了@RequestParam,前端就必须提供相应的参数,否则会报400并提示所需参数不存在。如果有多个@RequestParam,只会提示第一个。
2,如果使用request.getParameter(“xxx”)接收参数,就不存在这种情况,即使前端不提供相应参数,后端只是获取到空值,但是不会报错。

一,前端用vue,get请求,参数拼接在url中:

java中接收不到前端传的Double值_request


后端用@RequestParam或者request.getParameter(“xxx”)都可以获取所需参数。

java中接收不到前端传的Double值_传参数_02

二,前端vue,post请求,参数在请求体中,不拼接在url上:

java中接收不到前端传的Double值_java_03


后端无法获取参数,并且报错。

java中接收不到前端传的Double值_传参数_04

三,前端html页面上,在表单里写参数

java中接收不到前端传的Double值_java_05


后端用@RequestParam或者request.getParameter(“xxx”)都可以获取所需参数。

java中接收不到前端传的Double值_java_06

四,前端html,把参数拼接在url里

java中接收不到前端传的Double值_java_07

后端用@RequestParam或者request.getParameter(“xxx”)都可以获取所需参数。

java中接收不到前端传的Double值_传参数_08

五,当参数直接放在url中,不使用键值对时:

java中接收不到前端传的Double值_html_09

后端使用@PathVariable可获取此类参数,但是request.getParameter(“xxx”)获取不到。并且如果把@PathVariable改成@RequestParam会报400错误

java中接收不到前端传的Double值_request_10

六,后端没有使用@RequestParam,但是使用了简单类型接收参数,

比如用name,那么前端可以传参数也可以不传参数,如果前端有相应的名称的参数,则后端自动匹配,如果前端没有,则后端获取到的位null

下图是自动匹配的,

java中接收不到前端传的Double值_传参数_11


下边两图是前端修改了参数名,与后端不匹配,后端获取到的参数为空

java中接收不到前端传的Double值_后端_12


java中接收不到前端传的Double值_request_13

七,前端将参数放在url中,后端使用对象接收

注意前端传的key-value 要跟后端接收参数用的对象中的属性一致。

java中接收不到前端传的Double值_java_14

java中接收不到前端传的Double值_java_15