1、什么是数据校验?
是指用来校验数据是否合法—合乎规定
2、数据校验包括页面校验、后台校验;
页面校验一般不安全,很容易出现校验被绕行;
在对于数据安全要求较高的情况下要采用后台校验
3、后台校验
1)在web项目中,规定了一种数据校验模式,称为JSR303校验方式
这种方式参考了Hibernate的数据校验方式,在springmvc中提供了实现JSR303校验的方式,主要在springmvc的框架中整合校验框架
2)实现:
a、需要jar包
Jar包:hibernate-validator包,jboss-logging包,validation-api包,classmate包
b、在springmvc的配置文件中添加校验器
需要添加工厂bean,再校验器
<!-- 校验器的配置:先工厂,再校验器 -->
<bean id="validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 通过属性添加 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator">
</property>
</bean>
c、要在实体类的属性上面添加对应的注解
了解有哪些校验注解?
d、处理请求的执行单元形参要添加注解
@Validated Person person,BindingResult bindingResult
形参前面的@Validated注解和BindingResult形参成对出现的
e、最后校验结果送回到页面视图
3)将校验的结果信息进行软编码操作–即配置到外部文件
a、创建配置文件比如:ValidationMessage.properites
b、将结果信息抽取到此配置文件中,使用键值对保存,然后再将key引用回到实体类的属性中去
c、在springmvc配置文件中添加加载配置文件的类的bean
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<!-- 省略文件的扩展名 -->
<value>classpath:ValidationMessage</value>
</list>
</property>
</bean>
需要将此bean再注入到校验器工厂中
<!-- 校验器的配置:先工厂,再校验器 -->
<bean id="validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 通过属性添加 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator">
</property>
<!-- 将配置文件加载对象注入到工厂中来 -->
<property name="validationMessageSource" ref="messageSource"></property>
</bean>
4、校验注解有:
非空校验
1)@NotNull----此注解通常用于给基本类型对应的包装类做非空校验
2)@NotBlank----此注解用于给String类型做非空校验
3)@NotEmpty----此注解用于对集合属性做非空校验
闭合区间校验
4)@Size—对字符串、集合做区间校验,即最大和最小
5)@Length—对字符串做区间校验,最长和最短
6)@Range—对字符串、基本类型的包装类做区间校验,即最大和最小值
其他
7)@Email邮箱格式校验
8)@Pattern—自定义正则表达式实现校验