Springmvc之数据验证
Springmvc之数据验证
一、概述
在 Web 应用程序中,为了防止客户端传来的数据引发程序的异常,常常需要对数据进 行验证。输入验证分为客户端验证与服务器端验证。客户端验证主要通过 JavaScript 脚本进 行,而服务器端验证则主要是通过 Java 代码进行验证。 为了保证数据的安全性,一般情况下,客户端验证与服务器端验证都是要进行的。
二、测试环境搭建
需求:
姓名:非空,且长度 3-6 个字符
成绩:0-100 分
手机号:非空,且必须符合手机号格式
使用 Hibernate Validator验证
1,导入jar包
2,定义实体类
3,定义index页面
4,定义Controller
5,定义show页面
6,定义SpringMVC配置文件
三、实现数据验证
1,修改SpringMVC配置文件
验证器由 SpringMVC 框架的 LocalValidtorFactoryBean 类生成,而真正验证器的提供者则 是 HibernateValidator。 在 SpringMVC 配置文件中将验证器注册后,需要将其注入给注解驱动。
2,在实体类属性上添加验证注解
使用的验证器注解均为 javax.validation.constraints 包中的类。 在注解的 message 属性中,可以使用{属性名}的方式来引用指定的注解的属性值。
3,修改Controller
由于这里使用的验证器为 Bean 对象验证器,所以对于要验证的参数数据,需要打包后 由处理器方法以 Bean 形参类型的方式接收,并使用@Validated 注解标注。注意,不能将 @Validated 注解在 String 类型与基本类型的形参前。 紧跟着@Validated 所注解的形参的后面,是一个 BindingResult 类型的形参。通过该形参 可获取到所有验证异常信息。
只要发生数据验证失败,则需要将页面重新跳转到 index.jsp 表单页面,让用户重填。 BindingResult 接口中常用的方法有:
getAllErrors():获取到所有的异常信息。其返回值为 List,但若没有发生异常,则该 List 为也被创建,只不过其 size()为 0,而非 List 为 Null。
getFieldError():获取指定属性的异常信息
getErrorCount():获取所有异常的数量 getRawFieldValue():获取到用户输入的引发验证异常的原始值