天天看点

SpringMVC学习(6):使用 POJO对象绑定请求参数值(

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>
           

运行一下可以看到效果:

SpringMVC学习(6):使用 POJO对象绑定请求参数值(
SpringMVC学习(6):使用 POJO对象绑定请求参数值(