将pojo中的每一个属性,从request参数中尝试取出来,并封装即可。
1. jsp页面中使用pojo中的属性作为input的name属性
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
This is my JSP page. <br>
<form action="SpringMvc/TestPojo" method="POST">
username:<input type="text" name="username" /> <br>
password:<input type="password" name="password" /> <br>
age: <input type="text" name="age" /> <br>
email: <input type="text" name="email" /> <br>
province:<input type="text" name="address.province" /> <br>
city: <input type="text" name="address.city" /> <br>
<input type="submit" value="Submit" />
</form>
<br><br>
</body>
</html>
2. 编写pojo类
package com.atChina.entities;
public class Address {
private String province;
private String city;
public String getProvince() {
return province;
}
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + "]";
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
package com.atChina.entities;
public class User {
private String username;
private String password;
private Address address;
public Address getAddress() {
return address;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password
+ ", address=" + address + ", email=" + email + ", age=" + age
+ "]";
}
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;
}
private String email;
private int age;
}
3. 控制器中,映射url的方法中,使用pojo作为参数
package com.atChina.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.atChina.entities.User;
@RequestMapping("/SpringMvc")
@Controller
public class RequestMapperingTest {
/*
* Spring Mvc会按请求参数名和POJO属性名进行自动匹配,自动为该对象
* 填充属性.支持级联属性。如 dept.deptId,dept.address.tel等
*/
@RequestMapping("/TestPojo")
public String TestPojo(User user){
System.out.println("TestPojo: "+user);
return "success";
}
}