POJO(Plain Ordinary Java Object)是普通Java类,用SpringMVC可以把一个表单直接映射到对应的一个类上,自动为该对象填充属性值,不用我们一个一个变量的赋值,而且它还支持对级联属性的赋值。
写两个POJO类
package springmvc;
public class User {
private String username;
private String password;
private String email;
private int age;
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.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;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password
+ ", email=" + email + ", age=" + age + ", address=" + address
+ "]";
}
}
package springmvc;
public class Address {
private String province;
private String city;
public Address() {
super();
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public Address(String province, String city) {
super();
this.province = province;
this.city = city;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + "]";
}
}
需要注意的是级联属性Address类应该有一个无参构造器。
写一个函数测试一下:package springmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import springmvc.User;
@Controller
@RequestMapping("/springmvc")
public class HelloWorld {
private static final String SUCCESS = "success";
@RequestMapping(value="/testPojo", method=RequestMethod.POST)
public String testPojo(User user) {
System.out.println("testPojo: " + user);
return SUCCESS;
}
}
改一下index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>SpringMVC</title>
</head>
<body>
<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>
</body>
</html>
运行一下可以看到效果: