数据绑定
概述
Spring MVC会根据客户端请求参数的不同,将请求参数以一定的方式转换并绑定到控制器类的方法参数中。Spring MVC会通过数据绑定组件(DataBinder) 将这种请求参数与后台方法参数建立连接的过程就叫Spring MVC的数据绑定。绑定过程如下:
由上图可知,Spring MVC进行数据绑定的核心是DataBinder,那么它具体如何工作的呢?
- Spring MVC将ServletRequest对象传递给DataBinder。
- 控制类的处理方法将形参对象传递给DataBinder
- DataBinder调用ConversionService组件进行数据类型的转换、格式化等工作。然后将ServletRequest对象中的请求参数填充到方法参数对象中。
- 对绑定好的数据会进行数据合法性检验
- 检验完成后生成数据绑定结果BindingResult对象。最后Spring MVC将BinderResult对象中的内容赋值给处理方法的相应参数(和第三步似乎冲突?暂且不管)
Spring MVC中的数据绑定共分为二种:
- 简单数据绑定
- 复杂数据绑定
简单数据绑定
绑定默认数据类型
当前端请求的参数比较简单时,可在后台方法的形参中直接使用Spring MVC提供的默认参数类型进行数据绑定。常用默认参数类型如下:
- HttpServletRequest:通过request对象获取请求信息
- HttpServletResponse:通过response对象处理响应信息
- HttpSession:session对象
- Model/ModelMap:作用是将model数据填充到request域
示例:
- 创建项目chapter13,并导入相关JAR包
- 配置web.xml和spring-config.xml文件
- 创建UserController控制类。
- view
绑定简单数据类型
绑定简单数据类型,就是指绑定Java中几种基本数据类型的绑定。会自动将请求参数和同名的处理方法参数绑定。例如:更改上文中的UserController类如下:
若想要绑定不同名的参数,可以使用@RequestParam注解进行间接绑定,如下:
绑定POJO类型
当客户端请求传递多个不同类型的参数数据,采用上文中的简单数据类型绑定,需要在处理方法中编写不同类型的参数,难免有些繁琐。此时可采用POJO类型进行数据绑定。
POJO类型数据绑定就是将所有请求参数封装在一个POJO类中,然后在方法使用该POJO类型接收参数。表单传递请求要以POST方式例如:
- 编写POJO类
package com.syl.po;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}