欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 前端传来的不同类型参数,后端 SpringMVC 怎么接收?

前端传来的不同类型参数,后端 SpringMVC 怎么接收?

2025/9/23 1:03:00 来源:https://blog.csdn.net/m0_69091618/article/details/146481549  浏览:    关键词:前端传来的不同类型参数,后端 SpringMVC 怎么接收?

SpringMVC 处理前端请求参数的方式主要有 4 种常见情况:

参数来源前端传递方式后端接收方式示例
1. 路径参数PathVariable/user/1001@PathVariable@GetMapping("/user/{id}")
2. 查询参数RequestParam/user?id=1001@RequestParam@GetMapping("/user")
3. 请求体参数RequestBody{ "id": 1001, "name": "张三" }(JSON)@RequestBody@PostMapping("/user")
4. 表单参数RequestParamname=张三&age=22x-www-form-urlencoded@RequestParamJava 对象@PostMapping("/user")

📌 1. 路径参数(@PathVariable)

👉 场景:前端把参数放到 URL 里(RESTful 风格)
📌 示例:查询 id=1001 的用户

  • 前端请求

  • GET /user/1001
    @GetMapping("/user/{id}")
    public Result<User> getUserById(@PathVariable Long id) {
        return Result.success(userService.getById(id));
    }

  • 特点

    • @PathVariable 把 URL 里的 {id} 取出来,自动转成 Java 类型。

    • 适合 RESTful API 设计,比如 /user/1001

2. 查询参数(@RequestParam)

👉 场景:前端以 ?key=value 形式传参(URL 查询参数)
📌 示例:查询 id=1001 的用户

  • 前端请求

  • GET /user?id=1001
    @GetMapping("/user")
    public Result<User> getUserById(@RequestParam("id") Long id) {
        return Result.success(userService.getById(id));
    }

  • 特点

    • @RequestParam("id") 从 URL 查询参数获取值

    • 如果前端没传 id,SpringMVC 会报错(可以加 required = false 设置为可选)。

    • 适用于 简单查询参数,如 /search?keyword=apple&sort=desc

📌 多个参数的情况

@GetMapping("/search")
public Result<List<User>> search(@RequestParam String name, @RequestParam(required = false) Integer age) {
    return Result.success(userService.search(name, age));
}

请求:

GET /search?name=张三&age=22
 

📌 3. 请求体参数(@RequestBody)

👉 场景:前端提交 JSON 数据,后端解析成 Java 对象
📌 示例:前端提交用户信息

  • 前端请求(POST 请求,JSON 数据):

  • {
      "id": 1001,
      "name": "张三",
      "phone": "1234567890"
    }
    @PostMapping("/user")
    public Result createUser(@RequestBody UserDTO userDTO) {
        userService.create(userDTO);
        return Result.success();
    }

    特点

  • @RequestBody 接收 JSON 数据,并自动解析成 Java 对象

  • 适用于 POST、PUT 请求,比如用户注册、订单提交。

4. 表单参数(@RequestParam 或 Java 对象)

👉 场景:前端以 x-www-form-urlencoded 方式提交表单数据
📌 示例:用户提交表单

  • 前端请求

    POST /user
    Content-Type: application/x-www-form-urlencodedname=张三&age=22
    后端处理(方式 1:单个参数用 @RequestParam)@PostMapping("/user")
    public Result createUser(@RequestParam String name, @RequestParam Integer age) {return Result.success();
    }
    
  • 后端处理(方式 2:封装成 Java 对象)
  • @PostMapping("/user")
    public Result createUser(UserDTO userDTO) {
        return Result.success();
    }
     
  • 这里 不用 @RequestParam,SpringMVC 会自动把表单数据映射到 UserDTO

综合案例

后端方法:支持 GETPOST

@RestController
@RequestMapping("/user")
public class UserController {
    // 查询用户(路径参数)
    @GetMapping("/{id}")
    public Result<User> getUserById(@PathVariable Long id) {
        return Result.success(userService.getById(id));
    }

    // 查询用户(查询参数)
    @GetMapping
    public Result<User> getUserById(@RequestParam("id") Long id) {
        return Result.success(userService.getById(id));
    }

    // 创建用户(JSON 请求体)
    @PostMapping
    public Result createUser(@RequestBody UserDTO userDTO) {
        userService.create(userDTO);
        return Result.success();
    }

    // 更新用户(表单提交)
    @PostMapping("/update")
    public Result updateUser(UserDTO userDTO) {
        userService.update(userDTO);
        return Result.success();
    }
}

 

🔹 总结

参数来源传输方式后端注解适用场景
路径参数/user/1@PathVariableRESTful API,用户详情
查询参数/user?id=1@RequestParam搜索、分页、简单查询
请求体 JSON{ "id": 1, "name": "张三" }@RequestBody创建、更新数据(POST/PUT)
表单参数name=张三&age=22@RequestParam 或 Java 对象普通表单提交

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词