Spring MVC控制器中@RequestParam
和@QueryParam
之间的主要区别是什么?
答案 0 :(得分:36)
答案 1 :(得分:9)
除了框架中提到的这些差异之外,一个主要区别是@RequestParam
总是期望绑定一个值。因此,如果未传递值,则会出错。 @QueryParam
要明确提供该选项,请在使用@RequestParam
答案 2 :(得分:0)
除了以上所述,我观察到的另一个区别是QueryParam不会将参数值转换为List类型,而RequestParam可以。
我的意思是“ @RequestParam(” para“)List param”能够将逗号分隔的参数值转换为List,@ QueryParam无法将其转换。
答案 3 :(得分:0)
我将尝试更详细地阐明这个问题。
让我们从查询参数和请求参数分别为@QueryParam
和@RequestParam
@QueryParam
)实现JAX-RS
的查询参数表示在查询字符串中找到的参数。即完整请求网址中问号后的字符串。
请求参数,根据HTTP规范以及此注释的(@RequestParam
)实现Spring MVC (org.springframework.web.bind.annotation)
,表示HTTP请求的参数,在此处需要明确说明,它没有指定参数的类型-查询,标头,正文等。
@QueryParam
注释属于JAX-RS
规范,该规范states,即:
@QueryParam将HTTP查询参数的值绑定到资源 方法参数,资源类字段或资源类Bean 财产
请注意,这是查询参数,它绑定到资源方法的参数(即查询字符串中的参数)
@RequestParam
属于Spring Framework,states属于:
@RequestParam批注指示应将方法参数绑定到Web请求参数。
•在Spring MVC中,“请求参数”映射到查询参数,表单数据和多部分请求中的零件。这是因为Servlet API将查询参数和表单数据组合到一个称为“参数”的映射中,并且包括对请求正文的自动解析。