在实际开发中如果参数太多就不能使用@RequestParam去一个一个的映射了,需要定义一个实体参数对象(POJO)来映射请求参数。Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:address.province、address.city等。
具体步骤如下:
1.定义需要的请求参数的实体
User.java
1 package com.study.springmvc.model; 2 3 public class User { 4 5 private String username; 6 private String password; 7 8 private String email; 9 private int age;10 11 private Address address;12 13 public String getUsername() {14 return username;15 }16 17 public void setUsername(String username) {18 this.username = username;19 }20 21 public String getPassword() {22 return password;23 }24 25 public void setPassword(String password) {26 this.password = password;27 }28 29 public String getEmail() {30 return email;31 }32 33 public void setEmail(String email) {34 this.email = email;35 }36 37 public int getAge() {38 return age;39 }40 41 public void setAge(int age) {42 this.age = age;43 }44 45 public Address getAddress() {46 return address;47 }48 49 public void setAddress(Address address) {50 this.address = address;51 }52 53 @Override54 public String toString() {55 return "User [username=" + username + ", password=" + password + ", email=" + email + ", age=" + age56 + ", address=" + address + "]";57 }58 59 }
Address.java
1 package com.study.springmvc.model; 2 3 public class Address { 4 5 private String province; 6 private String city; 7 8 public String getProvince() { 9 return province;10 }11 12 public void setProvince(String province) {13 this.province = province;14 }15 16 public String getCity() {17 return city;18 }19 20 public void setCity(String city) {21 this.city = city;22 }23 24 @Override25 public String toString() {26 return "Address [province=" + province + ", city=" + city + "]";27 }28 29 }
2. 在index.jsp页面编写传参的表单
1 2 318
3.编写handler
PojoTest.java
1 package com.study.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 import com.study.springmvc.model.User; 7 8 @RequestMapping("/pojoTest") 9 @Controller10 public class PojoTest {11 12 public static final String SUCCESS="success";13 14 /**15 * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,16 * 自动为该对象填充属性值。支持级联属性。17 * 如:address.province、address.city等。18 */19 @RequestMapping("/testPojo")20 public String testPojo(User user) {21 System.out.println("testPojo: " + user);22 return SUCCESS;23 }24 }