SpringMVC数据绑定

  1. 什么是数据绑定
    在客户端向服务端发送请求的过程中,可能有参数,此时我们需要在处理器方法的形参获取此参数。所以就需要对请求参数和方法上的形参进行建立连接。连接的过程中就是数据绑定。

  2. 数据绑定的原理
    SpringMVC会把ServletRequest传递给DataBinder,然后把形参上的对象传递给DataBinder,DataBinder调用ConversionServlet进行数据类型转换和格式化,并把数据填充到对象中。然后校验是否合法,合法的话就生成BindingResult,把数据赋值给处理器方法上的形参
    在这里插入图片描述
    数据绑定分为简单数据绑定复杂数据绑定
    一、简单数据类型绑定

  3. 默认类型数据绑定
    常见的默认类型

    1. HttpServletRequest:获取请求信息
    2. HttpServletResponse:处理响应信息
    3. HttpSession:获取session中存放的信息
    4. Model/ModelMap:Model是一个接口,ModelMap是一个类,Model的实现类对象和ModelMap对象都可以设置model数据,model数据会填充到request域。
      在这里插入图片描述
  4. 简单数据类型数据绑定
    形参是java的简单数据类型。如String,int等。 在这里插入图片描述
    7. POJO绑定
    一般情况传输的数据较多,所以需要用类将其封装,形参只要用对象去接收就好,不用写太多的简单数据类型。
    在这里插入图片描述
    在这里插入图片描述

  5. 自定义转换器
    springmvc没有帮我们把字符串转为日期,所以需要自己配置
    springmvc.xml配置

    <!--声明自定义类型转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.lzx.DateConverter"></bean>
            </set>
        </property>
    </bean>

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

自定义类

/**
 * 1.自定义日期类型转换器,实现Convert接口(S,R)
 * S-原始类型
 * R-转换后类型
 */
public class DateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String dateStr) {
        Date date=null;
        try {
            date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

二、复杂数据绑定

  1. 数组
    在这里插入图片描述
    在这里插入图片描述

  2. 集合,需要@RequestParam注解。postman发送方式同数组一样
    在这里插入图片描述

  3. 复杂POJO ,属性可能有对象 list map 数组等复杂类型

    1. 对象在这里插入图片描述
    2. 接口在这里插入图片描述
    3. postman传输格式在这里插入图片描述
  4. Json数据格式传输
    因为Json数据解析速度更快,占用空间更小,所以一般开发用Json数据传输。
    springmvc中导入依赖

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.54</version>
    </dependency>

springmvc.xml配置

   <!--配置mvc的注解驱动-->
<mvc:annotation-driven/>

在这里插入图片描述
在这里插入图片描述

  1. @PathValiable,@RequestParam,@ResponseBody的区别?
    @RequestParam:接收url传参和表单传参
    @ResponseBody:接收Json数据
    @PathValiable:接收restful风格的请求,如/{id}

代码:https://gitee.com/lin_zixiang/programming-daily/tree/master/springmvc_restful

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值