在实际开发中如果参数太多就不能使用@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;
}
}
|