SpringMVC系列(四)使用 POJO 对象绑定请求参数

在实际开发中如果参数太多就不能使用@RequestParam去一个一个的映射了,需要定义一个实体参数对象(POJO)来映射请求参数。Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性如:address.province、address.city等。
1.定义需要的请求参数的实体

User.java [Java] 纯文本查看 复制代码 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 package com.study.springmvc.model;   public class User {           private String username;     private String password;       private String email;     private int age;           private Address address;       public String getUsername() {         return username;     }       public void setUsername(String username) {         this.username = username;     }       public String getPassword() {         return password;     }       public void setPassword(String password) {         this.password = password;     }       public String getEmail() {         return email;     }       public void setEmail(String email) {         this.email = email;     }       public int getAge() {         return age;     }       public void setAge(int age) {         this.age = age;     }       public Address getAddress() {         return address;     }       public void setAddress(Address address) {         this.address = address;     }       @Override     public String toString() {         return "User [username=" + username + ", password=" + password + ", email=" + email + ", age=" + age                 + ", address=" + address + "]";     }   }
Address.java [Java] 纯文本查看 复制代码 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package com.study.springmvc.model;   public class Address {       private String province;     private String city;       public String getProvince() {         return province;     }       public void setProvince(String province) {         this.province = province;     }       public String getCity() {         return city;     }       public void setCity(String city) {         this.city = city;     }       @Override     public String toString() {         return "Address [province=" + province + ", city=" + city + "]";     }       }

2. 在index.jsp页面编写传参的表单

[HTML] 纯文本查看 复制代码 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 <!--POJO测试 begin  --> <br> <form action="pojoTest/testPojo" method="post">     username: <input type="text" name="username"/>     <br>     password: <input type="password" name="password"/>     <br>     email: <input type="text" name="email"/>     <br>     age: <input type="text" name="age"/>     <br>     city: <input type="text" name="address.city"/>     <br>     province: <input type="text" name="address.province"/>     <br>     <input type="submit" value="Submit"/> </form> <!--POJO测试 end  -->

3.编写handler

PojoTest.java [Java] 纯文本查看 复制代码 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package com.study.springmvc.handlers;   import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;   import com.study.springmvc.model.User;   @RequestMapping("/pojoTest") @Controller public class PojoTest {       public static final String SUCCESS="success";           /**      * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,      * 自动为该对象填充属性值。支持级联属性。      * 如:address.province、address.city等。      */     @RequestMapping("/testPojo")     public String testPojo(User user) {         System.out.println("testPojo: " + user);         return SUCCESS;     } }
上一篇:java-命名查询中的休眠错误


下一篇:@Data的具体用法