SpringMVC(三)数据绑定

一、数据绑定介绍

将请求数据与后台方法参数建立连接的过程叫做SpringMVC的数据绑定。
主要分为简单数据绑定和复杂数据绑定。

在这里插入图片描述
关于图中的描述:
(1)Spirng MVC将ServletRequest 对象传递给数据绑定组件(DataBinder)。
(2)将处理方法的入参对象传递给DataBinder。
(3)DataBinder调用ConversionService组件进行数据类型转换/格式化等工作,并将对象值填充到参数对象中。
(4)调用Validator组件,对参数对象今夕数据校验。
(5)生成数据绑定结果BindingResult对象,赋值给方法的响应参数。

二、简单数据绑定

1、绑定默认数据类型

常用的默认参数类型

  • HttpServletRequest:通过request对象获取请求。
  • HttpServletResponse:通过response处理响应信息。
  • HttpSession:通过Session对象得到session中的对象。
  • Model/ModelMap:Mdoel是一个接口,ModelMap是一个接口实现,将model数据填充到request域。

以HttpServletRequest为例:
输入路径:http://localhost:8080/firstController?id=3
在这里插入图片描述

2、绑定简单数据类型

八种基本数据类型及对应的封装类型的绑定

    @RequestMapping(value ="/firstController")
    public String handleRequest(int id) {
        System.err.println("id=" + id);
        return "first";
    }
注:前端请求的参数名可能与后台参数不一致,所有提供了@RequestParam注解

在这里插入图片描述
请求路径: http://localhost:8080/firstController?user_id=3

    @RequestMapping(value ="/firstController")
    public String handleRequest(@RequestParam(value = "user_id") int id) {
        System.err.println("id=" + id);
        return "first";

    }

3、绑定POJO类型

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

    @RequestMapping(value ="/registerUser")
    public String handleRequest(UserEntity userEntity) {
        System.err.println(userEntity.getName());
        System.err.println(userEntity.getPwd());
        return "first";
    }

public class UserEntity{

    private Integer id;
    private String name;
    private String pwd;
    ...
    ...set get方法
}

4、绑定保证POJO类型

所谓的包装POJO,就是在一个POJO中包含另一个简单的POJO。例如订单对象中包含用户信息。

5、绑定自定义数据类型

日期数据需要自定义转换器(Converter)或格式化(Formatter)来进行绑定

(1)converter

//实现Converter 第一个是源类型, 第二个是目标类型(从String类型转成Date类型)
public class DateConverter implements Converter<String, Date> {
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public Date convert(String source) {
        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

在springmvc-config.xml文件进行配置

    <mvc:annotation-driven conversion-service="conversionService" />
    
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
      <property name="converters">
         <set>
            <bean class="converter.DateConverter" />
         </set>
     </property>
     </bean>
    @RequestMapping("/converterDate")
    public String  converterDate(Date date){
        System.err.println(date);
        return "first";
    }

访问:http://localhost:8080/converterDate?date=2017-04-12 15:55:55

(2)formatter

//实现Formatter                                 目标类型
public class DateFormatter implements Formatter<Date> {
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public Date parse(String source, Locale locale) throws ParseException {
        return sdf.parse(source);
    }

    @Override
    public String print(Date date, Locale locale) {
        return sdf.format(date);
    }
}

在springmvc-config.xml文件进行配置

    <mvc:annotation-driven conversion-service="conversionService" />

    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="formatters">
            <set>
                <bean class="formatter.DateFormatter" />
            </set>
        </property>
    </bean>
    @RequestMapping("/converterDate")
    public String  converterDate(Date date){
        System.err.println(date);
        return "first";
    }

访问:http://localhost:8080/converterDate?date=2017-04-12 15:55:55

三、复杂数据绑定

1、绑定数组

在这里插入图片描述

2、绑定集合

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC 数据绑定是指将客户端提交的数据绑定到 Controller 中的方法参数或类属性上,从而方便地获取表单数据并进行处理。 Spring MVC 数据绑定主要分为两种类型: 1. 基本类型数据绑定:将客户端提交的基本类型数据(如字符串、整数、布尔型等)绑定到 Controller 中的方法参数上。 例如: ```java @RequestMapping("/login") public String login(String username, String password) { // do something } ``` 2. 对象类型数据绑定:将客户端提交的表单数据绑定到 Controller 中的 POJO(Plain Old Java Object,普通 Java 对象)上。 例如: ```java @RequestMapping("/register") public String register(User user) { // do something } ``` 在对象类型数据绑定中,Spring MVC 默认使用 JavaBean 规范的 setter 方法进行属性赋值,例如: ```java public class User { private String username; private String password; // 省略 getter 和 setter 方法 } ``` 当客户端提交的表单数据包含 username 和 password 参数时,Spring MVC 将自动调用 User 类中对应的 setter 方法将数据绑定到 User 对象中。 除了默认的 setter 方法,Spring MVC 支持使用自定义的属性编辑器(PropertyEditor)来实现数据类型换和数据格式化等功能。例如,可以通过自定义属性编辑器将字符串类型日期换为 Date 类型。 要使用自定义的属性编辑器,需要在 Controller 类中注册 PropertyEditor 实例: ```java @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); } ``` 上面代码中,我们注册了一个 SimpleDateFormat 类型的属性编辑器,并将其注册到 WebDataBinder 中。然后,我们在 Controller 中的方法参数上使用 Date 类型来接收客户端提交的日期数据Spring MVC 将自动根据我们注册的属性编辑器将字符串类型日期换为 Date 类型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值