SpringMVC高效獲取JavaBean對(duì)象指南
Spring MVC 獲取 JavaBean 對(duì)象指南
核心機(jī)制:數(shù)據(jù)綁定
Spring MVC 通過數(shù)據(jù)綁定機(jī)制,自動(dòng)將 HTTP 請(qǐng)求參數(shù)(包括表單字段和 URL 參數(shù))映射到 JavaBean 對(duì)象的屬性。
實(shí)現(xiàn)步驟
1. 定義 JavaBean
public class User {
private String name;
private Integer age;
// 必須提供無參構(gòu)造器和 getter/setter 方法
// 省略 getter/setter...
}2. 在 Controller 中接收對(duì)象
@Controller
public class UserController {
// 方式1:直接作為方法參數(shù)
@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) {
// 對(duì)象會(huì)被自動(dòng)放入模型,可用于視圖渲染
return "result";
}
}關(guān)鍵細(xì)節(jié)
參數(shù)名稱匹配規(guī)則
請(qǐng)求參數(shù)名必須與 JavaBean 屬性名完全匹配(區(qū)分大小寫)。
示例:表單字段 <input name="name"> 會(huì)自動(dòng)綁定到 user.setName()
支持嵌套屬性
public class Address {
private String city;
// getter/setter...
}
public class User {
private Address address; // 嵌套對(duì)象
}表單使用點(diǎn)號(hào)分隔:
<input name="address.city" value="北京">
日期類型處理
使用 @DateTimeFormat 注解:
public class User {
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthDate;
}數(shù)據(jù)驗(yàn)證
配合 @Valid 和校驗(yàn)注解使用:
public class User {
@NotBlank(message = "姓名不能為空")
private String name;
}
@PostMapping("/save")
public String save(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
// 處理驗(yàn)證錯(cuò)誤
}
return "...";
}數(shù)據(jù)來源
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 查詢參數(shù) (GET)
http://localhost:8080/user?name=John&age=25
Controller 方法:
@GetMapping("/user")
public String getUser(User user) { ... } // 自動(dòng)綁定參數(shù)3. JSON 請(qǐng)求體 (API 場景)
使用 @RequestBody:
@PostMapping("/api/user")
public ResponseEntity<?> createUser(@RequestBody User user) {
// 處理JSON數(shù)據(jù)
return ResponseEntity.ok(user);
}前端需發(fā)送 JSON 格式數(shù)據(jù):{"name":"John", "age":25}
常見問題解決
屬性未綁定?
- 檢查請(qǐng)求參數(shù)名與屬性名是否一致
- 確保 JavaBean 有 public 的 setter 方法
類型轉(zhuǎn)換失?。?/strong>
- 對(duì)于非字符串類型(如 Date、Integer),Spring 會(huì)自動(dòng)嘗試類型轉(zhuǎn)換
- 轉(zhuǎn)換失敗時(shí)會(huì)拋出
TypeMismatchException,可通過@ExceptionHandler處理
獲取原生請(qǐng)求對(duì)象?
public String register(User user, HttpServletRequest request) {
// 必要時(shí)訪問原生請(qǐng)求
}總結(jié)
| 場景 | 實(shí)現(xiàn)方式 | 示例 |
|---|---|---|
| 表單/URL參數(shù)綁定 | 直接聲明 JavaBean 參數(shù) | public String save(User u) |
| 顯式命名模型屬性 | 使用 @ModelAttribute | @ModelAttribute("user") |
| JSON數(shù)據(jù)綁定 | 使用 @RequestBody | @RequestBody User user |
| 數(shù)據(jù)驗(yàn)證 | 配合 @Valid + 校驗(yàn)注解 | @Valid User user |
掌握這些技巧,可以高效處理 JavaBean 對(duì)象綁定,減少冗余代碼!
到此這篇關(guān)于SpringMVC高效獲取JavaBean詳解的文章就介紹到這了,更多相關(guān)SpringMVC獲取JavaBean內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis通過if語句實(shí)現(xiàn)增刪改查操作
這篇文章主要介紹了mybatis通過if語句實(shí)現(xiàn)增刪改查操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
spring+springmvc+mybatis+maven入門實(shí)戰(zhàn)(超詳細(xì)教程)
這篇文章主要介紹了spring+springmvc+mybatis+maven入門實(shí)戰(zhàn)(超詳細(xì)教程),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05
使用mybatis切片實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的操作流程
數(shù)據(jù)權(quán)限控制需要對(duì)查詢出的數(shù)據(jù)進(jìn)行篩選,對(duì)業(yè)務(wù)入侵最少的方式就是利用mybatis或者數(shù)據(jù)庫連接池的切片對(duì)已有業(yè)務(wù)的sql進(jìn)行修改,本文給大家介紹了使用mybatis切片實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的操作流程,需要的朋友可以參考下2024-07-07
教你一步解決java.io.FileNotFoundException:找不到文件異常
這篇文章主要給大家介紹了關(guān)于如何一步解決java.io.FileNotFoundException:找不到文件異常的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
redis redisson 限流器的實(shí)例(RRateLimiter)
這篇文章主要介紹了redis redisson 限流器的實(shí)例(RRateLimiter),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
深入淺析Mybatis與Hibernate的區(qū)別與用途
這篇文章主要介紹了Mybatis與Hibernate的區(qū)別與用途的相關(guān)資料,需要的朋友可以參考下2017-10-10

