SSM(数据绑定)

本文介绍了Spring MVC的数据绑定过程,包括简单数据绑定、复杂数据绑定和自定义数据绑定。讲解了@RequestParam注解的使用,以及如何配置编码过滤器。同时讨论了Spring MVC中的Converter接口在自定义数据类型转换中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

13.1 数据绑定介绍

Spring MVC根据客户端请求参数的不同,将请求消息中的信息以一定的方式转换并绑定到控制器类的方法参数中。这种将请求消息数据和后台方法参数建立连接的过程就是Spring MVC中的数据绑定。

数据绑定过程中,Spring MVC框架会通过数据绑定组件(DataBinder)将请求参数串的内容进行类型转换,然后将转换后的值赋给控制器中方法的形参,这样后台。

  1. Spring MVC 将 ServletRequest对象传递给 DataBinder
  2. 将处理方法的入参对象传递给 DataBinder
  3. 将DataBinder 调用 ConversionService组件进行数据类型转换、数据格式化等工作,并将ServletRequest对象中的消息填充到参数对象中。
  4. 调用Validator组件对已经绑定了请求消息数据的参数对象进行数据合法性校验。
  5. 校验完成后生成数据绑定结果 BindingResult对象 Spring MVC会将BindingResult对象中的内容赋给处理方法的相应参数。

13.2 简单数据绑定

请求参数比较简单,直接使用Spring MVC提供的默认参数类型进行数据绑定

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

前端请求中的参数名和后台控制器类方法中的形参名不一样,这样就会导致后台无法正确绑定并接收到前端请求的参数,

@RequestParam

为此Spring MVC提供了@RequestParam注解进行间接数据绑定。

属性说明
valuename属性的别名,参数的名字,如果只使用value属性可以省略value属性
name指定请求头绑定的名称
required指定参数是否必须,默认是true,表示请求中一定要有相应的参数
defaultValue默认值,表示如果请求中没有同名参数时的默认值

编码过滤器 — 配置一个filter统一过滤

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

自定义数据绑定

Converter

Spring框架提供了一个Converter将一种类型的对象转化为另一种类型的对象。
自定义的Converter类需要实现org.springframework.core.convert.converter.Converter接口

配置自定义类型转化器
<!-- 显示的装配自定义类型转换器 -->
<mvc:annotation-drivern conversion-service="conversionService" />
<!-- 自定义类型转换器配置 -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property>
<set>
<bean class="xxx"/>
</set>
</property>
</bean>

13.3 复杂数据绑定

使用集合数据绑定时,后台方法不支持使用集合形参就行数据绑定,需要使用包装类POJO作为形参,在包装POJO中包装一个集合属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值