在以下示例中,@PathVariable
和@RequestParam
之间有什么区别?
@RequestMapping(value = "/portfolio/{portfolioIdPath}", method = RequestMethod.GET)
public final String portfolio(HttpServletRequest request, ModelMap model,
@PathVariable long portfolioIdPath, @RequestParam long portfolioIdRequest)
答案 0 :(得分:17)
@RequestParam 将请求参数绑定到方法中的参数。在您的示例中,GET请求中名为“portfolioIdRequest”的参数的值将作为“portfolioIdRequest”参数传递给您的方法。一个更具体的例子 - 如果请求URL是
http://hostname/portfolio/123?portfolioIdRequest=456
然后参数“portfolioIdRequest”的值将为“456”。
@PathVariable 类似地将URI模板变量“portfolioIdPath”的值绑定到方法参数“portfolioIdPath”。例如,如果您的URI是
/portfolio/123
然后“portfolioIdPath”方法参数的值将为“123”。
答案 1 :(得分:2)
@RequestParam标识客户端(用户)发送的HTTP GET或POST参数,而@RequestMapping提取URL的一段,该段因请求而异:
http://host/?var=1
在上面的网址“var”是一个请求参数。
http://host/registration/{which}
以上网址的 {which} 是请求映射。您可以将您的服务称为:
http://host/registration/user
或喜欢
http://host/registration/firm
在您的应用程序中,您可以访问 {which} 的值(在第一种情况下=“user”,在第二种情况下=“firm”。
答案 2 :(得分:0)
这取决于您希望如何处理您的请求
@RequestParam example
(request)http://something.com/owner?ownerId=1234
@PathVariable example
(request) http://something.com/owner/1234
(in tour code) /owner/{ownerId}