Bean Validation数据校验和分组校验

前端校验后,为什么需要后端校验在前面完成数据参数绑定到Controller时,我们可以在@RequestParam注解中做简单的空校验,就是设置required属性为true,以此来指定Controller方法中形参是否必须传入。数据校验是很常见的操作,有前端校验,即用户在前端页面上填写表单时,检查数据的合法性,再传入到后端。到了后端,还可以有后端的数据校验,后端校验通常是在业务逻辑方法,也就...
摘要由CSDN通过智能技术生成

前端校验后,为什么需要后端校验

在前面完成数据参数绑定到Controller时,我们可以在@RequestParam注解中做简单的空校验,就是设置required属性为true,以此来指定Controller方法中形参是否必须传入。数据校验是很常见的操作,有前端校验,即用户在前端页面上填写表单时,检查数据的合法性,再传入到后端。到了后端,还可以有后端的数据校验,后端校验通常是在业务逻辑方法,也就是我们的Controller方法里完成,例如在参数列表里使用注解完成数据校验。后端校验的原因是为了安全性考虑,防止别人通过接口乱调用后台的业务逻辑方法,假设在业务方法中不进行数据校验,有可能会被别让绕过前端校验,直接通过后端的接口方法调用,传入大量的脏数据到数据库。

在这篇日志中,总结自己使用集成Hibernate的校验框架, 和Spring MVC的Bean Validation数据校验。Bean Validation数据校验可以检查JavaBean中的数据,接下来先看看校验器的搭建。

 

配置validation校验器

validator声明和属性配置

上面说到,后端校验通常放在业务逻辑方法中,在Spring MVC里也就是我们的处理器适配器中具体实现方法,通过在形参列表中使用注解,完成数据校验。我的处理器映射器和适配器都是用注解的方式配置,即在Spring MVC的配置文件里使用的annotation-driven标签对,既然后端数据校验发生在处理器适配器中,当然校验器也要在annotation-driven标签里声明了:

<!-- 简写方式 配置注解的处理器映射器和适配器 -->
<!-- 添加名为"validator的校验器" -->
<mvc:annotation-driven  validator="validator"></mvc:annotation-driven>

在annotation-driven标签中我们声明一个validator属性,指定了一个id为validator校验器。然后我们就继续在下面配置这个id为“validator”的校验器属性:

<!-- 配置校验器 -->
<bean id="validator" 
			class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
	<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
	<property name="validationMessageSource" ref="messageSource" />
</bean>

LocalValidatorFactoryBean是默认的校验器实现,下面配置的providerClass为继承的Hibernate校验框架,最后validationMessageSource表示的是校验使用的资源文件,里面可以自定义编写当校验出数据不合法时,给出的错误提示。如果不配置这个校验资源文件,会默认使用ValidationMessages.properties。

校验资源文件配置

当我们声明了校验资源文件后,就可以使用自己编写的文件实现自定义错误提示信息。首先在Spring MVC配置文件中配置这个资源文件:

<!-- 配置校验资源文件 -->
		<bean id="messageSource" 
			class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
			<property name="basenam
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值