SpringMVC中的注解@RequestParam、@RequestBody和@ModelAttribute区别
Joel
发布于 2023-12-13 / 485 阅读 / 0 评论 / 2 点赞

SpringMVC中的注解@RequestParam、@RequestBody和@ModelAttribute区别

在SpringMVC中,@RequestParam@RequestBody@ModelAttribute都是用于处理请求参数的注解,但它们在用法和处理的数据类型上有一些区别

一、@RequestParam

  • 用法: 用于从请求中提取单个或多个查询参数。

  • 数据类型: 主要用于处理简单的键值对形式的参数,如 URL 查询参数。用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。提交方式为get或post。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)

  • 示例:

    @GetMapping("/example")
    public String example(@RequestParam String name, @RequestParam int age) {
        // Method implementation
    }

二、@RequestBody

  • 用法: 用于获取请求体中的数据,并将其转换为对象。

  • 数据类型: 主要用于处理请求体中的 JSON、XML 等格式的数据,将其转换为相应的Java对象。(请求头Content-Type要设置为application/json或application/xml类型)

  • 示例:

    @PostMapping("/example")
    public String example(@RequestBody User user) {
        // Method implementation
    }

三、@ModelAttribute

  • 用法: 用于将请求参数绑定到方法的参数或方法级别的属性上,也可以用于将模型属性添加到视图中。

  • 数据类型: 主要用于处理表单提交的数据,将表单字段映射到Java对象中。(请求头Content-Type要设置为application/x-www-form-urlencoded。)

  • 示例:

    @PostMapping("/example")
    public String example(@ModelAttribute User user) {
        // Method implementation
    }

评论