一、SpringMVC中请求参数获取

1. 直接方法参数获取请求参数

可用于获取url路径和表单提交的请求参数,get/post请求方式都行,也可用于获得ajax简单类型参数。

前台提交参数

后台直接方法参数获取

注意:

  • 请求参数名称要与方法形参名称一致,顺序无关但要区分大小写;
  • 如果方法接收多个参数,传入一个参数也行,其他默认为null;
  • 如果请求参数与方法参数类型不一致,会抛出转换异常。

2. @RequestParam注解方式获取请求参数

可用于获取url路径和表单提交的请求参数,get/post请求方式都行。

使用场景:

  • 简单类型的绑定或对象类型;
  • Content-Type: application/x-www-form-urlencoded编码的内容,提交方式get、post。

RequestParam接收参数

@RequestParam作用:把请求中指定名称的参数给控制器类中的形参赋值。

属性:
- value: 请求中指定参数的名称,如:/user/find?id=123中的id;
- required:请求参数中是否必须提供此参数。默认值为true,表示必须提供,如果不提供将报错;
- defaultValue:指定默认值,传递参数为null或不传递时使用该默认值。

注意:
- 参数类型需要保证一致;
- 不指定注解的value属性时,等同于第一种方式获取请求参数;
- 通过在后台方法接收请求数据时,使用包装类型没有传入参数不会报错。

3. RequestBody注解方式获取请求参数

使用场景:常用来处理Content-Type不是application/x-www-form-urlencoded编码的内容,如:application/json, application/xml等。

常用于获取请求体参数,如ajax,仅能使用post方式提交请求参数。

RequestBody接收请求体的参数

ajax提交请求

注意:
- required:是否必须有请求体,默认值是true,当取值为true时get请求方式会报错,如果取值为false,get 请求得到为null;
- 使用时机:当返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。

补充:

  • @RequestBody,作用:在处理器方法形参上使用,把请求的json格式数据,转换成java对象;
  • @ResponseBody,作用:在处理器方法返回值上使用,或者方法上使用,把响应的java对象,转换成json格式数据。

4. 通过 HttpServletRequest获取请求

常用于参数较多,且无法封装为对象的情况下,如ajax中传递请求参数。

ajax传递复杂参数

HTTPServletRequest获取请求参数

注意:
- 这是最基本的获取参数的方式,get/post请求都适用,通常在filter,intercepter中也是可以通过HttpServletRequest对象来获取请求参数;
- 除了获取常见的请求参数之外,HttpServletRequest可以获取请求头的完整信息。


星河滚烫,你是人间理想