java - @RequestParam 和 @PathVariable

@RequestParam@PathVariable 在处理特殊字符时有什么区别?

+@RequestParam 接受为空格。

@PathVariable 的情况下,+ 被接受为 +

最佳答案

  • @PathVariable 是从 URI 中获取一些占位符(Spring 称之为 URI 模板) — 见 Spring Reference Chapter 16.3.2.2 URI Template Patterns
  • @RequestParam 也是从 URI 中获取参数 — 参见 Spring Reference Chapter 16.3.3.3 Binding request parameters to method parameters with @RequestParam

如果 URL http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013 在 2013 年 12 月 5 日获取用户 1234 的发票,则 Controller 方法看起来像:

@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 开始,路径变量 can be optional as well .但请注意,这可能会更改 URL 路径层次结构并引入请求映射冲突。例如,/user/invoices 是否会为用户 null 提供发票或 ID 为“发票”的用户的详细信息?

https://stackoverflow.com/questions/13715811/

相关文章:

Java - 通过 POST 方法轻松发送 HTTP 参数

java - 单击两次后退按钮以退出 Activity

java - 将 Java 连接到 MySQL 数据库

java - 如何在 Mac 上的 IntelliJ IDEA 中增加 IDE 内存限制?

java - 在循环之前或循环中声明变量之间的区别?

java - Java中的静态 block

java - 如何在 Java 中获取用户输入?

java - 使模板更容易的 JSP 技巧?

java - 如何在Java中为正则表达式转义文本

java - 如何使用 apt-get 在 Ubuntu 18.04/17.04/16.10/16.