• JSR303


    一、JSR-303简介

    SR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。

    此实现与 Hibernate ORM 没有任何关系。 JSR 303 用于对 Java Bean 中的字段的值进行验证。 
    Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。 
    注:可以使用注解的方式进行验证

    二、准备校验时使用的JAR

    validation-api-1.0.0.GA.jar:JDK的接口; 
    hibernate-validator-4.2.0.Final.jar是对上述接口的实现; 
    log4j、slf4j、slf4j-log4j

    三、JSR 303 基本的校验规则

    空检查 
    @Null 验证对象是否为null 
    @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 
    @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. 
    @NotEmpty 检查约束元素是否为NULL或者是EMPTY.
    
    Booelan检查 
    @AssertTrue 验证 Boolean 对象是否为 true 
    @AssertFalse 验证 Boolean 对象是否为 false
    
    长度检查 
    @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内 
    @Length(min=, max=) Validates that the annotated string is between min and max included.
    
    日期检查 
    @Past 验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期 
    @Future 验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期 
    @Pattern 验证 String 对象是否符合正则表达式的规则,被注释的元素符合制定的正则表达式,regexp:正则表达式 flags: 指定 Pattern.Flag 的数组,表示正则表达式的相关选项。
    
    数值检查 
    建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为”“,Integer为null 
    @Min 验证 Number 和 String 对象是否大等于指定的值 
    @Max 验证 Number 和 String 对象是否小等于指定的值 
    @DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度 
    @DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度 
    @Digits 验证 Number 和 String 的构成是否合法 
    @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 
    @Range(min=, max=) 被指定的元素必须在合适的范围内 
    @Range(min=10000,max=50000,message=”range.bean.wage”) 
    @Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证) 
    @CreditCardNumber信用卡验证 
    @Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。 
    @ScriptAssert(lang= ,script=, alias=) 
    @URL(protocol=,host=, port=,regexp=, flags=)
        1)、给Bean(实体类)添加校验注解:javax.validation.constraints,并定义自己的message提示
        2)、开启校验功能@Valid=>(@Valid @RequestBody xxx  xx)
           效果:校验错误以后会有默认的响应;
    Pattern(regexp=“正则表达式”)自定义的校验规则
        3)、给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果
        4)、分组校验(多场景的复杂校验)
              1)、    @NotBlank(message = "品牌名必须提交",groups = {AddGroup.class,UpdateGroup.class})
               给校验注解标注什么情况需要进行校验
              2)、@Validated({AddGroup.class})
              3)、默认没有指定分组的校验注解@NotBlank,在分组校验情况@Validated({AddGroup.class})下不生效,只会在@Validated生效;
     
        5)、自定义校验
           1)、编写一个自定义的校验注解
           2)、编写一个自定义的校验器 ConstraintValidator
           3)、关联自定义的校验器和自定义的校验注解
           @Documented
      @Constraint(validatedBy = { ListValueConstraintValidator.class【可以指定多个不同的校验器,适配不同类型的校验】 })
      @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
      @Retention(RUNTIME)
      public @interface ListValue {
     
      4、统一的异常处理
      @ControllerAdvice
       1)、编写异常处理类,使用@ControllerAdvice。
       2)、使用@ExceptionHandler标注方法可以处理的异常。
  • 相关阅读:
    selenium
    python第三方模块的安装
    程序员学习网站
    python 数据较大 性能分析
    linux ~/ 和 /
    VMWare虚拟机 window文件传递
    vi命令
    os.system
    win10系统进入BIOS
    pyinstaller将python脚本生成exe
  • 原文地址:https://www.cnblogs.com/SmallStrange/p/14137765.html
Copyright © 2020-2023  润新知