当前位置: 代码网 > it编程>编程语言>Java > Spring MVC 四种核心传参形式对比分析

Spring MVC 四种核心传参形式对比分析

2026年01月26日 Java 我要评论
在使用 spring mvc 编写接口时,我们几乎每天都在和“参数”打交道。路径参数、请求参数、json、对象接收……看起来方式很多,但如果只停留在

在使用 spring mvc 编写接口时,我们几乎每天都在和“参数”打交道。
路径参数、请求参数、json、对象接收……看起来方式很多,但如果只停留在“记注解”,很容易越学越乱。

事实上,从参数来源的角度来看,spring mvc 中绝大多数的传参方式都可以归纳为 四种核心形式路径参数、请求参数、请求体参数、对象参数

理解这四类参数的来源和适用场景,基本就掌握了 spring mvc 80% 的参数接收机制。

一、路径参数:参数直接来自 url 路径

1. 什么是路径参数

路径参数是 url 路径本身的一部分,通常用于表示某个具体资源。

get /users/1

其中的 1,就是一个典型的路径参数。

2. 使用方式

@getmapping("/users/{id}")
public user getuser(@pathvariable long id) {
    return userservice.getbyid(id);
}

3. 特点与适用场景

  • 参数嵌入在 url 中,语义清晰
  • 符合 restful 设计风格
  • 通常用于资源的定位

常见场景:

  • 根据 id 查询详情
  • 根据 id 删除资源

二、请求参数:来自 url 或表单的 key-value 参数

1. 什么是请求参数

请求参数通常以 key=value 的形式出现,存在于 url 查询串或表单数据中。

get /users?name=zhangsan&age=18

2. 使用方式

@getmapping("/users")
public list<user> list(
        @requestparam string name,
        @requestparam integer age) {
    return userservice.list(name, age);
}

3. 特点与适用场景

  • 参数形式简单、直观
  • 适合可选参数较多的场景
  • 不具备强结构性

常见场景:

  • 条件查询
  • 分页、排序参数

三、请求体参数:来自 http request body 的结构化数据

1. 什么是请求体参数

请求体参数来源于 http 请求体,通常是 json 格式,前后端分离项目中非常常见。

{
  "name": "zhangsan",
  "age": 18
}

2. 使用方式

@postmapping("/users")
public void save(@requestbody user user) {
    userservice.save(user);
}

3. 特点与适用场景

  • 数据结构清晰、层次分明
  • 通常用于 post、put 请求
  • 依赖 httpmessageconverter 进行解析

常见场景:

  • 新增数据
  • 更新数据
  • 前后端分离接口

四、对象参数:请求参数的自动封装

1. 什么是对象参数

对象参数并不是单独的一种数据来源,而是 spring mvc 将请求参数自动绑定为 java 对象的结果

post /users
name=zhangsan&age=18

2. 使用方式

@postmapping("/users")
public void save(user user) {
    userservice.save(user);
}

3. 底层原理说明

spring 会根据以下规则进行自动绑定:

  • 请求参数名
  • 对象属性名
  • 对应的 setter 方法

只要三者匹配,就可以完成自动封装。

这是 spring mvc 非常“无感但强大”的能力。

五、一个非常容易混淆的点

对象参数 ≠ 请求体参数

很多人容易把下面两种写法混为一谈:

public void save(user user)              // 对象参数(来自请求参数)
public void save(@requestbody user user) // 请求体参数(来自 json)

关键区别在于:

  • 是否使用 @requestbody
  • 参数来自请求参数,还是请求体

这一点在实际开发中非常重要。

六、四种传参形式对比总结

类型参数来源典型注解常见场景
路径参数url 路径@pathvariable资源定位
请求参数url / 表单@requestparam条件查询
请求体参数request body@requestbodyjson 提交
对象参数请求参数封装无 / @modelattribute表单提交

七、总结

spring mvc 的传参,本质是根据“参数来源不同”,选择不同的解析与绑定方式。

到此这篇关于spring mvc 四种核心传参形式对比分析的文章就介绍到这了,更多相关spring mvc传参内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com