@RequestParam 和 @PathVariable 一样,都是用于从request请求中绑定参数的,区别在于:@RequsetParam是用于接收URL的查询串中的相应参数及请求体中的参数;@PathVariable 和 @PathParam 是用于接收URL中占位符的参数
@RequestParam 示例
接收请求行中URL后的查询串参数
现有Controller如下,当访问URL为 localhost:8080/demo1?name=Aaron&age=18 时,将会把查询串(name=Aaron&age=18)中的参数按名绑定到demo1方法的相应形参上
1 |
|
控制台输出如下:1
get name is : Aaron, age: 18
Note:
后端如果是分别接收前端传过来的多个基本类型参数,可以使用上文所示的@RequsetParam来分别按名进行绑定即可。但是如果参数数量过多,上述写法下的方法中的形参列表将会过长导致可读性降低。可以直接使用一个POJO对象来进行绑定接收,而不需要使用@RequestParam注解,其自动将参数按名绑定到对象的属性中。如下所示,形参使用Student对象进行数据绑定,其含有name,age属性
1 |
|
接收请求体中的参数
当请求头中的 Content-Type 类型为:multipart/form-data 或 application/x-www-form-urlencoded 时,该@RequestParam注解同样可以把请求体中相应的参数绑定到Controller方法的相应形参中
1 |
|
Note:
后端如果是分别接收前端传过来的多个基本类型参数,可以使用上文所示的@RequsetParam来分别按名进行绑定即可。但是如果参数数量过多,上述写法下的方法中的形参列表将会过长导致可读性降低。可以直接使用一个POJO对象来进行绑定接收,而不需要使用@RequestParam注解,其自动将参数按名绑定到对象的属性中。如下所示,形参使用Student对象进行数据绑定,其含有name,age属性
1 |
|
@PathVariable 示例
现有Controller如下,当访问URL为 localhost:8080/demo2/Bob/12 时,将会把URL占位符的的参数按名绑定到demo2方法的相应形参上
1 |
|
控制台输出如下:1
get name is : Bob, id: 12
@PathParam 注解
@PathParam 注解 也是用于从绑定URL中占位符的参数,只不过其是JBoss下的实现