Spring mvc 与@RequestParam和@QueryParam站有什么区别

Spring mvc 与@RequestParam和@QueryParam站有什么区别,spring-mvc,Spring Mvc,Spring MVC控制器中的@RequestParam和@QueryParam之间的主要区别是什么?@QueryParam是一个框架注释,@RequestParam来自于。除了框架中提到的这些区别之外,一个主要区别是@RequestParam总是希望绑定一个值。所以,若并没有传递值,它将给出错误。@QueryParam 要明确给出该选项,请在使用@RequestParam时使用required=false。此外,我观察到的另一个区别是QueryParam不会将参数值转换为列表类型,而Reque

Spring MVC控制器中的
@RequestParam
@QueryParam
之间的主要区别是什么?

@QueryParam
是一个框架注释,
@RequestParam
来自于。除了框架中提到的这些区别之外,一个主要区别是
@RequestParam
总是希望绑定一个值。所以,若并没有传递值,它将给出错误。
@QueryParam


要明确给出该选项,请在使用
@RequestParam

时使用required=false。此外,我观察到的另一个区别是QueryParam不会将参数值转换为列表类型,而RequestParam会


我的意思是“@RequestParam(“para”)List param”能够将逗号分隔的param值转换为List,@QueryParam无法转换此值。

我将尝试对这个问题进行更详细的说明

让我们从查询参数请求参数的语义开始,分别是
@QueryParam
@RequestParam

查询参数,根据HTTP规范以及此注释的(
@QueryParam
)实现
JAX-RS
,表示在查询字符串中找到的参数。i、 e.完整请求URL中问号后面的字符串

请求参数,根据HTTP规范以及此注释(
@RequestParam
)的实现
Spring MVC(org.springframework.web.bind.annotation)
,表示HTTP请求的参数,这里需要说明的是,它没有指定它是哪种类型的参数-query,标题、正文等。
现在让我们谈谈实现本身

@槲寄生
@QueryParam
注释属于
JAX-RS
规范,其中:

@QueryParam将HTTP查询参数的值绑定到资源 方法参数、资源类字段或资源类bean 财产

请注意,这里是查询参数,它绑定到资源方法的参数(即查询字符串中的参数)

@请求参数 另一方面,
@RequestParam
属于Spring框架,它:

@RequestParam注释表示方法参数应绑定到web请求参数。
•在Spring MVC中,“请求参数”映射到多部分请求中的查询参数、表单数据和部分。这是因为ServletAPI将查询参数和表单数据组合到一个称为“参数”的映射中,其中包括请求主体的自动解析



因此,我认为这些名字可能确实有点误导,但经过进一步挖掘,它们是不言自明的。当您只需要查询参数时,请尝试使用一个参数;当您需要任何请求参数时,请尝试使用另一个参数。

它们在功能上是相同的:它们允许您将命名HTTP参数的值绑定到带注释的变量。也就是说,这个问题非常广泛,所以如果您想要一个更有用的答案,您必须指定更多的细节。我的问题是关于它们在spring mvc控制器中的使用。。。因此,请简要描述一下……请同时指定我在spring中使用的mvc模型控制器QueryParam来自另一个框架,并且您提到的是spring时,必须使用哪一个(两者中的哪一个)@Flao写道,
@RequestParam
来自Spring,应该在Spring MVC中使用。但我看到了许多Spring MVC控制器示例,其中我们同时使用(@QueryParam和@RequestParam annotation)类型的注释。这就是为什么我的问题是,当…你能提供到它们的链接时,应该使用哪一个?另外,
@RequestParam
是Spring框架特有的,不需要额外的依赖项,当然,除了与web相关的依赖项。然而,
@QueryParam
处于Web服务的RESTful API之下,因此具有jsr311 API的依赖性。