接上文:【Spring】— Spring MVC简单数据绑定(一)
目录
- 2.3绑定POJO类型
2.3绑定POJO类型
在使用简单数据类型绑定时,可以很容易地根据具体需求来定义方法中的形参类型和个数,然而在实际应用中,客户端请求可能会传递多个不同类型的参数数据,如果还使用简单数据类型进行绑定,就需要手动编写多个不同类型的参数,这种操作显然比较烦琐。此时就可以使用POJO类型进行数据绑定。
POJO类型的数据绑定就是将所有关联的请求参数封装在一个POJO中,然后在方法中直接使用该POJO作为形参来完成数据绑定。
【示例】接下来通过一个用户注册案例来演示POJO类型数据的绑定,具体实现步骤如下。
步骤01 在src目录下创建一个com.ssm.po包,在该包下创建一个User类来封装用户注册的信息参数。
package com.ssm.po;
//用户类User
public class User {
private Integer id;
private String username;
private String 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 String getPassword() {
return password;
}
public void setPassword(String password){
this.password=password;
}
}
步骤02 在控制器 UserController类中编写向注册页面跳转和接收用户注册信息的方法,代码如下所示。
//向注册页面跳转
@RequestMapping("/toRegister")
public String toRegister() {
return "register";
}
//接受用户注册信息
@RequestMapping("registerUser")
public String registerUser(User user) {
String username = user.getUsername();
String password = user.getPassword();
System.out.println("username" + username);
System.out.println("password" + password);
return "success";
}
步骤03 在WEB-INF目录下创建一个用户注册页面register.jsp,在该界面中编写用户注册表单,表单需要以POST方式提交,并且在提交时会发送一条以“registerUser”结尾的请求消息,如文件12.6所示。
注意
在使用POJO类型数据绑定时,前端请求的参数名(本例中指form表单内各元素的name属性值)必须与要绑定的POJO类中的属性名一样,这样才会自动将请求数据绑定到POJO对象中,否则后台接收的参数值为null。
步骤04 发布并启动项目,在浏览器中访问地址http://localhost:8080/chapter12/toRegister,就会跳转到用户注册页面register.jsp。
填写对应的用户名和密码,然后单击“注册”按钮即可完成模拟注册功能。这里假设用户注册的用户名和密码分别为“jack”和“jack_123”,当单击“注册”按钮后,浏览器会跳转到结果页面。
使用POJO类型同样可以获取前端请求传递过来的数据信息,这就是POJO类型的数据绑定。
注意
在前端请求中,难免会有中文信息传递,用户名和密码输入框中输入用户名“张三”和密码“123”时,虽然浏览器可以正确跳转到结果页面,但是在控制台中输出的中文信息会出现乱码。为了防止前端传入的中文数据出现乱码问题,可以使用Spring提供的编码过滤器来统一编码。要使用编码过滤器,只需要在web.xml中添加如下代码。
上述代码中,通过<filter-mapping>
元素的配置会拦截前端页面中的所有请求,并交由名称为CharacterEncodingFilter的编码过滤器类进行处理。在<filter>
元素中,首先配置了编码过滤器类org.springframework.web.filter.CharacterEncodingFilter,然后通过初始化参数设置统一的编码为UTF-8。这样所有的请求信息都会以UTF-8的编码格式进行解析。