Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如address.city,address.province。
如:
public class User {
private String username;
private String password;
private String email;
private int age;
private Address address;
public User() {
}
public User(String username, String password, String email, int age) {
super();
this.username = username;
this.password = password;
this.email = email;
this.age = age;
}
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() {
// TODO Auto-generated method stub
return "User [ username=" + username + ", password=" + password + ", email=" + email + ", age="
+ age + "]";
}
}
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() {
// TODO Auto-generated method stub
return "Address [province=" + province + ", city=" + city + "]";
}
}
@RequestMapping("/testPojoMethod")
public String testPojoMethod(User user){
System.out.println("testPojoMethod: " + user);
System.out.println("testPojoMethod: " + user.getAddress());
return "success";
}
<form action="springmvc/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>
SpringMVC也可以使用使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型:
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream
OutputStream
Reader
Writer
@RequestMapping("/testServletAPIMethod")
public void testServletAPIMethod(HttpServletRequest request,
HttpServletResponse response, Writer out) throws IOException {
System.out.println("testServletAPIMethod, " + request + ", " + response);
out.write("testServletAPIMethod");
}
<a href="springmvc/testServletAPIMethod">testServletAPIMethod</a>