spring mvc 获取 javabean 对象指南
核心机制:数据绑定
spring mvc 通过数据绑定机制,自动将 http 请求参数(包括表单字段和 url 参数)映射到 javabean 对象的属性。
实现步骤
1. 定义 javabean
public class user {
private string name;
private integer age;
// 必须提供无参构造器和 getter/setter 方法
// 省略 getter/setter...
}2. 在 controller 中接收对象
@controller
public class usercontroller {
// 方式1:直接作为方法参数
@postmapping("/register")
public string register(user user) {
system.out.println("用户名: " + user.getname());
system.out.println("年龄: " + user.getage());
return "success";
}
// 方式2:使用 @modelattribute 显式绑定
@postmapping("/update")
public string update(@modelattribute("user") user user) {
// 对象会被自动放入模型,可用于视图渲染
return "result";
}
}关键细节
参数名称匹配规则
请求参数名必须与 javabean 属性名完全匹配(区分大小写)。
示例:表单字段 <input name="name"> 会自动绑定到 user.setname()
支持嵌套属性
public class address {
private string city;
// getter/setter...
}
public class user {
private address address; // 嵌套对象
}表单使用点号分隔:
<input name="address.city" value="北京">
日期类型处理
使用 @datetimeformat 注解:
public class user {
@datetimeformat(pattern = "yyyy-mm-dd")
private date birthdate;
}数据验证
配合 @valid 和校验注解使用:
public class user {
@notblank(message = "姓名不能为空")
private string name;
}
@postmapping("/save")
public string save(@valid user user, bindingresult result) {
if (result.haserrors()) {
// 处理验证错误
}
return "...";
}数据来源
1. 表单提交 (post)
<form action="/register" method="post">
<input type="text" name="name"> <!-- 绑定到 user.name -->
<input type="number" name="age"> <!-- 绑定到 user.age -->
<button>提交</button>
</form>2. url 查询参数 (get)
http://localhost:8080/user?name=john&age=25
controller 方法:
@getmapping("/user")
public string getuser(user user) { ... } // 自动绑定参数3. json 请求体 (api 场景)
使用 @requestbody:
@postmapping("/api/user")
public responseentity<?> createuser(@requestbody user user) {
// 处理json数据
return responseentity.ok(user);
}前端需发送 json 格式数据:{"name":"john", "age":25}
常见问题解决
属性未绑定?
- 检查请求参数名与属性名是否一致
- 确保 javabean 有 public 的 setter 方法
类型转换失败?
- 对于非字符串类型(如 date、integer),spring 会自动尝试类型转换
- 转换失败时会抛出
typemismatchexception,可通过@exceptionhandler处理
获取原生请求对象?
public string register(user user, httpservletrequest request) {
// 必要时访问原生请求
}总结
| 场景 | 实现方式 | 示例 |
|---|---|---|
| 表单/url参数绑定 | 直接声明 javabean 参数 | public string save(user u) |
| 显式命名模型属性 | 使用 @modelattribute | @modelattribute("user") |
| json数据绑定 | 使用 @requestbody | @requestbody user user |
| 数据验证 | 配合 @valid + 校验注解 | @valid user user |
掌握这些技巧,可以高效处理 javabean 对象绑定,减少冗余代码!
到此这篇关于springmvc高效获取javabean详解的文章就介绍到这了,更多相关springmvc获取javabean内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论