分享一下我老师大神的人工智能教程!零基础,通俗易懂!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
按以上的方法,就可以轻松的实现自定义类型转换器啦。