SpringMVC中的 JSR 303 数据校验框架说明

JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中。
JSR 303 通过在Bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,
并通过标准的验证接口对Bean进行验证:
---------------------------------------------------------------------------
注解                             说明
---------------------------------------------------------------------------
@Null                           被注释的元素必须为null
@NotNull                        被注释的元素不能为null
@AssertTrue                     被注释的元素必须为true
@AssertFalse                    被注释的元素必须为false
@Min(value)                     被注释的元素必须是一个数字,其值必须>=指定的最小值
@Max(value)                     被注释的元素必须是一个数字,其值必须<=指定的最大值
@DecimalMin(value)              被注释的元素必须是一个数字,其值必须>=指定的最小值
@DecimalMax(value)              被注释的元素必须是一个数字,其值必须<=指定的最大值
@Size(max, min)                 被注释的元素的大小必须在指定的范围内
@Digits(integer, fraction)      被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past                           被注释的元素必须是一个过去的日期
@Future                         被注释的元素必须是一个将来的日期
@Pattern(value)                 被注释的元素必须符合指定的正则表达式

---------------------------------------------------------------------------
Hibernate Validation 是JSR 303 的一个参考实现,除支持所有的标准的校验注解之外,
它还支持以下的扩展注解:

注解                     说明
@Email                  被注释的元素必须是一个电子邮箱地址
@Length                 被注释的字符串的大小必须在指定的范围内
@NotEmpty               被注释的字符串必须非空
@Range                  被注释的元素必须在合适的范围内
---------------------------------------------------------------------------
Spring 4.0 拥有自己独立的数据校验框架,同时支持JSR 303 标准的校验框架。
Spring 在进行数据绑定时,可同时调用校验框架完成数据校验工作。
在SpringMVC中, 可直接通过注解驱动的方式进行数据校验。
Spring 的LocalValidatorFactoryBean 既实现了Spring的Validator接口,
也实现了 JSR 303 的Validator接口。只要在Spring容器中定义一个
LocalValidatorFactoryBean,即可将其注入到需要数据校验的Bean中。
Spring本身并没有提供 JSR303 的实现,所以必须将 JSR303 的实现者的jar包
放到类路径下。

通过在处理方法的入参上标注 @Valid注解 即可让SpringMVC 在完成数据绑定之后执行数据校验的工作。
在已经标注了 JSR303 注解的表单/命令对象前标注一个 @Valid, SpringMVC 框架在将请求参数绑定到
该入参对象后,就会调用校验框架根据注解生命的校验规则实施校验。

SpringMVC 是用过对处理方法签名的规约来保存校验结果的:
前一个表单/命令对象的校验结果保存到随后的入参中,这个保存的校验结果的入参必须是 BindingResult
或 Errors 类型,这两个类都位于 org.springframework.validation 包中。

但是需要注意的一点:
需要校验的bean对象和其绑定结果的BindingResult对象必须成对出现,而且它们两个必须紧挨着,之间不能有
其他的入参。

BindingResutl 其实是 Errors的子类, Errors 接口提供了获取错误信息的方法,如 getErrorCount()
或 getFieldErrors(String field)。
BindingResult 扩展了 Errors 接口。
时间: 2024-08-29 05:59:47

SpringMVC中的 JSR 303 数据校验框架说明的相关文章

SpringMVC中controller接收Json数据

SpringMVC中controller接收Json数据 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath %>ajaxRequest", co

SpringMVC中controller返回json数据的两种方法

SpringMVC中controller返回json数据的两种方法 1.jsp的ajax请求: function getJson(){ $.ajax({ type:"get", dataType:"json", url:"<%=basePath %>getJson", success:function(data){ for(var i=0;i<jsonData.length;i++){ alert("Id:"

SpringMVC中用于绑定请求数据的注解以及配置视图解析器

SpringMVC中用于绑定请求数据的注解 在上一篇文章中我们简单介绍了@RequestMapping与@RequestParam注解,知道了如何去配置地址映射,本篇则介绍一些用于处理request数据的注解. [email protected]注解,该注解用于处理request中的header部分,也就是http请求头的部分,它可以把header部分的值绑定到方法的参数上,示例: package org.zero01.test; import org.springframework.stere

SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息

在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.springframework.org/schema/mvc" 一.作用: 1.会自动注册 RequestMappingHandlerMapping.RequestMappingHandlerAdapter 以及 ExceptionHandlerExceptionResolver 三个 Bean. 若配置该注

自己写的基于java Annotation(注解)的数据校验框架

JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方便和重用,自己写了一个简单的基于Annotation的校验框架.有兴趣的可以扩展. 框架说明: AnnotationValidable接口:所有需要使用该校验框架的类都要实现它,该类中没有任何方法需要实现,仅仅是一个表明那些类需要使用该校验框架的标识. GetFiledValue类:是一个工具类,对

SpringMVC(十六)数据校验

一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验:js校验 服务端校验:springmvc使用validation校验,struts2使用validation校验.都有自己的一套校验规则. 数据校验 第一步:引入依赖 <!--数据校验--> <dependency> <groupId>org.hibernate</

struts2(三)---struts2中的服务端数据验证框架validate

struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个action中进行数据验证时,可以重写这个方法.数据验证往往是在客户端向服务端提交表单信息时进行的,比如execute方法负责处理表单信息并返回相应的结果,在此之前,validate会先对提交的表单信息进行验证: ->验证通过:会执行execute的相应操作. ->验证失败: –>定义了失败后的re

脚本中如何做填报数据校验

在很多填报表项目的开发过程中,为了保证数据规范且有效,常会在报表中设置各种校验以达到目的,比如:工资金额最多只允许包含两位小数.邮政编码必须是全数字组成的 6 位数且首位数字不能是 0 ,等等.这些要求,我们都可以利用报表工具提供的数据类型校验.单元格校验等手段来实现,但是总有“意外”情况出现,比如:小计校验要求分组内的各值相加等于分组小计,这种类型的校验有什么难点?怎么实现?下面我们举例实际看一下. 首先,了解基本情况及要求: 展现效果: 要求: 报表数据来源于数据库,其中 A 列指标名称是从

SOA中springmvc中restful服务的数据权限加密方式分享

restful中数据权限加密方式有很多种,特别是针对于request json的方式加密,这里详细介绍了SOA中针对于get.post数据加密方式,保证数据传输中的安全性: Java代码 @Component("dataSignInterceptor") publicclass DataSignInterceptorimplements MethodInterceptor { @Autowired private SoaServiceConfigService soaServiceCo