处理特殊字符时,@RequestParam和@PathVariable之间有什么区别
+被@RequestParam接受为空格
在@PathVariable的情况下,+被接受为+
@PathVariable是从URI中获取一些占位符(Spring称之为URI模板)
-请参见Spring参考第16.3.2.2章uri模板模式@RequestParam也要从URI获取参数-请参见Spring参考第16.3.3.3章使用@RequestParam将请求参数绑定到方法参数
如果URLhttp://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013获取2013年12月5日用户1234的发票,控制器方法如下所示:
@RequestMapping(value=“/user/{userId}/invoices”,method=RequestMethod.GET)
公开名单<;发票>;listUsersInvoices(
@PathVariable(“userId”)int user,
@RequestParam(value=“date”,required=false)date(日期或完整){
...
}
此外,请求参数可以是可选的,从Spring 4.3.3开始,路径变量也可以是可选的。但是要小心,这可能会更改URL路径层次结构并引入请求映射冲突。例如,/user/invoices会为usernull提供发票,还是提供ID为“invoices”的用户的详细信息