Springmvc之数据验证

Springmvc之数据验证

一、概述

在 Web 应用程序中,为了防止客户端传来的数据引发程序的异常,常常需要对数据进 行验证。输入验证分为客户端验证与服务器端验证。客户端验证主要通过 JavaScript 脚本进 行,而服务器端验证则主要是通过 Java 代码进行验证。  为了保证数据的安全性,一般情况下,客户端验证与服务器端验证都是要进行的。 

二、测试环境搭建

需求:

 姓名:非空,且长度 3-6 个字符 

 成绩:0-100 分 

 手机号:非空,且必须符合手机号格式 

 使用 Hibernate Validator验证

1,导入jar包

Springmvc之数据验证

2,定义实体类

Springmvc之数据验证

3,定义index页面

Springmvc之数据验证

4,定义Controller

Springmvc之数据验证

5,定义show页面

Springmvc之数据验证

6,定义SpringMVC配置文件

Springmvc之数据验证

三、实现数据验证

1,修改SpringMVC配置文件

验证器由 SpringMVC 框架的 LocalValidtorFactoryBean 类生成,而真正验证器的提供者则 是 HibernateValidator。  在 SpringMVC 配置文件中将验证器注册后,需要将其注入给注解驱动。 

Springmvc之数据验证

2,在实体类属性上添加验证注解

使用的验证器注解均为 javax.validation.constraints 包中的类。  在注解的 message 属性中,可以使用{属性名}的方式来引用指定的注解的属性值。 

Springmvc之数据验证

3,修改Controller

Springmvc之数据验证

由于这里使用的验证器为 Bean 对象验证器,所以对于要验证的参数数据,需要打包后 由处理器方法以 Bean 形参类型的方式接收,并使用@Validated 注解标注。注意,不能将 @Validated 注解在 String 类型与基本类型的形参前。 紧跟着@Validated 所注解的形参的后面,是一个 BindingResult 类型的形参。通过该形参 可获取到所有验证异常信息。 

Springmvc之数据验证

只要发生数据验证失败,则需要将页面重新跳转到 index.jsp 表单页面,让用户重填。  BindingResult 接口中常用的方法有: 

 getAllErrors():获取到所有的异常信息。其返回值为 List,但若没有发生异常,则该 List 为也被创建,只不过其 size()为 0,而非 List 为 Null。 

 getFieldError():获取指定属性的异常信息 

 getErrorCount():获取所有异常的数量  getRawFieldValue():获取到用户输入的引发验证异常的原始值 

4,页面显示异常信息

Springmvc之数据验证