一、前言
前面我们学习了@RequestParam注解,可以获得请求的参数,但是如果前台传来的是一个表单,表单中有很多参数,那么这个时候使用@RequestParam注解一个一个去映射的话,方法中就会有N多个注解在里面,显然这种方式获取参数是不可取的。这个时候我们可以使用一个Java对象来获得请求参数。
Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。而且支持级联属性,如:user.roleId、user.role.roleName等。
二、案例
新建一个表单
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>测试</title>
</head>
<body>
<form action="springmvctest/testPojo" method="post">
用户名: <input type="text" name="userName"/><br>
密码: <input type="password" name="password"/><br>
邮箱: <input type="text" name="email"/><br>
角色: <input type="text" name="role.roleName"/><br>
<input type="submit" value="提交"/>
</form>
</body>
</html>
新建User类和Role类
public class User {
private String userName;
private String password;
private String email;
private Role role;
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 Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
@Override
public String toString() {
return "User [userName=" + userName + ", password=" + password
+ ", email=" + email + ", role=" + role + "]";
}
}
public class Role {
private String roleId;
private String roleName;
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
@Override
public String toString() {
return "Role [roleId=" + roleId + ", roleName=" + roleName + "]";
}
}
编写测试方法
@RequestMapping(value = "/testPojo", method = RequestMethod.POST)
public String testPojo(User user) {
System.out.println("testPojo: " + user);
return "success";
}
测试运行,点击Submit按钮,如下:
至此,我们关于SpringMVC教程之使用POJO作为参数介绍完毕。