@RequestParam vs @PathVariable
在处理特殊字符时,@RequestParam'和
@PathVariable'之间有什么区别?
+
被@RequestParam
接受为空格。
在@PathVariable
的情况下,+
被接受为+
。
322
3
在处理特殊字符时,@RequestParam'和
@PathVariable'之间有什么区别?
+
被@RequestParam
接受为空格。
在@PathVariable
的情况下,+
被接受为+
。
@PathVariable
是为了从URI中获取一些占位符(Spring称其为URI模板)@RequestParam
也是从URI中获取一个参数--参见Spring参考章节16.3.3.3 用@RequestParam将请求参数绑定到方法参数如果URL
http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
获得用户1234在2013年12月5日的发票,控制器方法将看起来像。另外,请求参数可以是可选的,从Spring 4.3.3开始,路径变量也可以是可选的。但要注意,这可能会改变URL路径的层次结构,并引入请求映射冲突。例如,
/user/invoices
会提供用户null
的发票,还是提供ID为"invoices"的用户的详细信息?@RequestParam注解,用于访问请求中的查询参数值。看看下面这个请求的URL。
在上述URL请求中,param1和param2的值可以被访问,如下所示。
以下是@RequestParam注解所支持的参数列表。
@PathVariable
@PathVariable标识了传入请求的URI中使用的模式。让我们看一下下面的请求URL。
上述URL请求可以在你的Spring MVC中写成如下。
@*PathVariable注解只有一个属性值用于绑定请求URI模板。允许在单个方法中使用多个@PathVariable注解。但是,要确保不超过一个方法有相同的模式。
此外,还有一个有趣的注解。 @MatrixVariable
以及对它的控制器方法
但你必须启用。
可能是application/x-www-form-urlencoded midia类型将空格转换为+,而接收者会通过将+转换为空格来解码数据。查看网址以获得更多信息。http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1