@RequestParam与@PathVariable
处理特殊字符时 和 处理特殊字符时有什么区别?@RequestParam
@PathVariable
+
被接受为空间。@RequestParam
在 的情况下,被接受为 。@PathVariable
+
+
处理特殊字符时 和 处理特殊字符时有什么区别?@RequestParam
@PathVariable
+
被接受为空间。@RequestParam
在 的情况下,被接受为 。@PathVariable
+
+
@PathVariable
是从URI中获取一些占位符(Spring称之为URI模板)— 参见春季参考第16.3.2.2章URI模板模式
@RequestParam
也是为了从URI中获取参数 — 参见《春季参考》第 16.3.3.3 章,将请求参数绑定到方法参数,@RequestParam
如果 URL 在 2013 年 12 月 5 日获取用户 1234 的发票,则控制器方法将如下所示:http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
@PathVariable("userId") int user,
@RequestParam(value = "date", required = false) Date dateOrNull) {
...
}
此外,请求参数可以是可选的,从Spring 4.3.3开始,路径变量也可以是可选的。但请注意,这可能会更改 URL 路径层次结构并引入请求映射冲突。例如,是否会提供用户的发票或有关具有 ID“发票”的用户的详细信息?/user/invoices
null
@RequestParam用于从请求访问查询参数值的批注。请查看以下请求 URL:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
在上面的URL请求中,可以按如下方式访问param1和param2的值:
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
...
}
以下是@RequestParam注释支持的参数列表:
@PathVariable
@PathVariable 标识在传入请求的 URI 中使用的模式。让我们看一下下面的请求 URL:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
上面的URL请求可以写在你的Spring MVC中,如下所示:
@RequestMapping("/hello/{id}") public String getDetails(@PathVariable(value="id") String id,
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
.......
}
@PathVariable 批注只有一个用于绑定请求 URI 模板的属性值。允许在单个方法中使用多个 @PathVariable 批注。但是,请确保没有多种方法具有相同的模式。
还有一个有趣的注释:@MatrixVariable
以及它的控制器方法
@RequestMapping(value = "/{stocks}", method = RequestMethod.GET)
public String showPortfolioValues(@MatrixVariable Map<String, List<String>> matrixVars, Model model) {
logger.info("Storing {} Values which are: {}", new Object[] { matrixVars.size(), matrixVars });
List<List<String>> outlist = map2List(matrixVars);
model.addAttribute("stocks", outlist);
return "stocks";
}
但您必须启用:
<mvc:annotation-driven enableMatrixVariables="true" >