今天学习springmvc的时候,发现参数的类型是User的po类型,去了解了一下,原来是使用了pojo对象绑定参数值。

POJO 类型的数据绑定就是将所有关联的请求参数封装在一个POJO 中,然后在方法中直接使用该POJO 作为形参来完成数据绑定。

接下来用代码解释一下

这是po类User

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.po;

/**
* 用户po类
* 持久化对象
*/
public class User {
private Integer id; //用户id
private String username; //用户
private Integer password;//用户密码
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getPassword() {
return password;
}
public void setPassword(Integer password) {
this.password = password;
}

}

这是jsp中的表单 属性名分别为username和password

1
2
3
4
5
<form action="${pageContext.request.contextPath}/registerUser" method="post">
用户名:<input type="text" name="username" /><br />
密&nbsp&nbsp&nbsp码:<input type="text" name="password" /><br />
<input type="submit" value="注册"/>
</form>

这是一个接收用户注册信息的一个方法

1
2
3
4
5
6
7
8
9
10
11
/**
* 接收用户注册信息
*/
@RequestMapping("/registerUser")
public String registerUser(User user) {
String username = user.getUsername();
Integer password = user.getPassword();
System.out.println("username="+username);
System.out.println("password="+password);
return "success";
}/**

这里的参数User user就是一个pojo类型

Spring MVC 会按请求参数属性名和 POJ0 属性名进行自动匹配,自动为该对象填充属性值。并支持级联属性。

这里的参数属性名就是表单的参数属性名,也就是 username和password ,SpringMVC 会自动的获取User类属性名与之相同的属性,并附上传递的参数,所以表单中的参数属性名必须得和po层的属性名一样。

运行一下程序

image-20220410181751392

这样就方便不同类型的参数传递了。