springmvc学习笔记(22)——自定义类型转换器

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

数据绑定流程

  • 使用springmvc框架有诸多好处,其中较为突出的就是它的数据绑定。
  • 当我们的前端传过来一个表单的时候,我们只需要使用一个类对象(如Student对象)就接收,springmvc将帮我们把属性一一对应的填充进去。这就是数据绑定。
  • 数据绑定过程中,springmvc帮我们把前端传来的字符串,转化为属性对应的数据类型(如String->Integer)
  • 那么,springmvc是如何实现数据绑定的呢,我们来简单分析一下。
 
     
  • springmvc将request对象以及目标方法的参数传给WebDataBinderFactory 实例,得到一个DataBinder
  •  
  • DataBinder调用 ConversionService组件来完成数据类型的转换,数据格式化。
  •  
  • 调用Validator组件对数据进行合法性校验,并最终生成数据绑定结果BindingData对象
  •  
  • Spring MVC 抽取 BindingResult 中的入参对象和校验错误对象,将它们赋给处理方法的响应入参
  •  

下面配上一张示意图(该图来自尚硅谷)
这里写图片描述

自定义类型转换器

控制层

    @RequestMapping("/testConverter")    public String testConverter(@RequestParam("student")Student student){        StudentDao.add(student);        return "redirect:/student";    }
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

前端

界面中只有一个input,输入一串字符串

<form action="testConverter" method="post">    <input type="text" name="student" />    <input type="submit" value="add"/></form>
   
   
  • 1
  • 2
  • 3
  • 4

springmvc如何将String转化为Student对象

写一个自己的类型转换器

package com.zj.converter;import org.springframework.core.convert.converter.Converter;import org.springframework.core.convert.converter.ConverterFactory;import org.springframework.stereotype.Component;import com.zj.model.Address;import com.zj.model.Student;@Componentpublic class StudentConverter implements Converter<String, Student> {    @Override    public Student convert(String source) {        //将String类型转化为Student类型        //source形式: 123-tom-男-福建省-泉州市        Student student = null;        if(source!=null){            String[] values = source.split("-");            if(values!=null && values.length==5){                student = new Student();                student.setStudentId(Integer.parseInt(values[0]));                student.setName(values[1]);                student.setSex(values[2]);                student.setAddress(new Address(values[3], values[4]));            }        }        return student;    }}
   
   
  • 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
  • 31
 

这个类实现了spring的Converter,记得给它加上@Component注解,让springmvc帮我们创建bean

在springmvc配置文件中配置

    <!-- 在这里启用转换器 -->    <mvc:annotation-driven conversion-service="conversionService"/>    <!-- 定义自定义类型转换器的bean -->   <bean id="conversionService"        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">        <property name="converters">            <set>                <!-- 这里是我们自己定义的类型转换器 -->                <!-- 注意,这里首字母要小写,因为springmvc帮我们创建bean的时候,是以类名首字母小写命名 -->                <ref bean="studentConverter"/>            </set>        </property>     </bean>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

按以上的方法,就可以轻松的实现自定义类型转换器啦。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_43678306/article/details/84104695