SpringMVC高效獲取JavaBean對象指南
Spring MVC 獲取 JavaBean 對象指南
核心機制:數(shù)據(jù)綁定
Spring MVC 通過數(shù)據(jù)綁定機制,自動將 HTTP 請求參數(shù)(包括表單字段和 URL 參數(shù))映射到 JavaBean 對象的屬性。
實現(xiàn)步驟
1. 定義 JavaBean
public class User {
private String name;
private Integer age;
// 必須提供無參構(gòu)造器和 getter/setter 方法
// 省略 getter/setter...
}2. 在 Controller 中接收對象
@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) {
// 對象會被自動放入模型,可用于視圖渲染
return "result";
}
}關(guān)鍵細(xì)節(jié)
參數(shù)名稱匹配規(guī)則
請求參數(shù)名必須與 JavaBean 屬性名完全匹配(區(qū)分大小寫)。
示例:表單字段 <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;
}數(shù)據(jù)驗證
配合 @Valid 和校驗注解使用:
public class User {
@NotBlank(message = "姓名不能為空")
private String name;
}
@PostMapping("/save")
public String save(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
// 處理驗證錯誤
}
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) { ... } // 自動綁定參數(shù)3. JSON 請求體 (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}
常見問題解決
屬性未綁定?
- 檢查請求參數(shù)名與屬性名是否一致
- 確保 JavaBean 有 public 的 setter 方法
類型轉(zhuǎn)換失???
- 對于非字符串類型(如 Date、Integer),Spring 會自動嘗試類型轉(zhuǎn)換
- 轉(zhuǎn)換失敗時會拋出
TypeMismatchException,可通過@ExceptionHandler處理
獲取原生請求對象?
public String register(User user, HttpServletRequest request) {
// 必要時訪問原生請求
}總結(jié)
| 場景 | 實現(xiàn)方式 | 示例 |
|---|---|---|
| 表單/URL參數(shù)綁定 | 直接聲明 JavaBean 參數(shù) | public String save(User u) |
| 顯式命名模型屬性 | 使用 @ModelAttribute | @ModelAttribute("user") |
| JSON數(shù)據(jù)綁定 | 使用 @RequestBody | @RequestBody User user |
| 數(shù)據(jù)驗證 | 配合 @Valid + 校驗注解 | @Valid User user |
掌握這些技巧,可以高效處理 JavaBean 對象綁定,減少冗余代碼!
到此這篇關(guān)于SpringMVC高效獲取JavaBean詳解的文章就介紹到這了,更多相關(guān)SpringMVC獲取JavaBean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題
這篇文章主要介紹了解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
解決ObjectMapper.convertValue() 遇到的一些問題
這篇文章主要介紹了解決ObjectMapper.convertValue() 遇到的一些問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
關(guān)于Unsupported major.minor version 49.0的錯誤解決辦法
這篇文章主要介紹了關(guān)于Unsupported major.minor version 49.0的錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2015-11-11
實例解析Json反序列化之ObjectMapper(自定義實現(xiàn)反序列化方法)
這篇文章主要介紹了實例解析Json反序列化之ObjectMapper,json自定義序列化的方法,需要的朋友可以了解下。2017-09-09
淺析java中String類型中“==”與“equal”的區(qū)別
這篇文章主要介紹了淺析java中String類型中“==”與“equal”的區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

