SpringMVC高效获取JavaBean对象指南
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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
这篇文章主要介绍了解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07
解决ObjectMapper.convertValue() 遇到的一些问题
这篇文章主要介绍了解决ObjectMapper.convertValue() 遇到的一些问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06
关于Unsupported major.minor version 49.0的错误解决办法
这篇文章主要介绍了关于Unsupported major.minor version 49.0的错误解决办法的相关资料,需要的朋友可以参考下2015-11-11
实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)
这篇文章主要介绍了实例解析Json反序列化之ObjectMapper,json自定义序列化的方法,需要的朋友可以了解下。2017-09-09
浅析java中String类型中“==”与“equal”的区别
这篇文章主要介绍了浅析java中String类型中“==”与“equal”的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08


最新评论