如何实现Java后端数据校验?看这篇就足够!

前言

        每次咱们在搭建一个开源项目的首要任务包括:项目的统一异常处理、统一结果封装以及作项目的数据校验,在先后端分离的状况下,不只前端须要作数据校验,后端更加须要,前端主要使用一些相似与jQuery Validate等js/css插件实现经过数据校验,好比:bootstrap-validator,然后端主要使用的是Hibernate Validator检验框架,经过数据校验,咱们能避免用户借助一些HTTP请求工具直接向后端发送一些不合法的数据请求,本文将入如何在Spring/Spring Boot下实现后端的数据校验。css

Hibernate Validator

常见注解

注解 用途
Valid 递归的对关联的对象进行校验
AssertFalse 用于boolean字段,该字段的值只能为false
AssertTrue 用于boolean字段,该字段只能为true
DecimalMax(value) 被注释的元素必须是一个数字,只能大于或等于该值
DecimalMin(value) 被注释的元素必须是一个数字,只能小于或等于该值
Digits(integer,fraction) 检查是不是一种数字的(整数,小数)的位数
Future 检查该字段的日期是不是属于未来的日期
FutureOrPresent 判断日期是不是未来或如今日期
Past 检查该字段的日期是在过去
PastOrPresent 判断日期是不是过去或如今日期
Max(value) 该字段的值只能小于或等于该值
Min(value) 该字段的值只能大于或等于该值
Negative 判断负数
NegativeOrZero 判断负数或0
Positive 判断正数
PositiveOrZero 判断正数或0
NotNull 不能为null
Null 必须为 null
Pattern(value) 被注释的元素必须符合指定的正则表达式
Size(max, min) 检查该字段的size是否在min和max之间,能够是字符串、数组、集合、Map等
Length(max, min) 判断字符串长度
CreditCardNumber 被注释的字符串必须经过Luhn校验算法,银行卡,信用卡等号码通常都用Luhn计算合法性
Email 被注释的元素必须是电子邮箱地址
Length(min=, max=) 被注释的字符串的大小必须在指定的范围内
NotBlank 只能用于字符串不为null,而且字符串trim()之后length要大于0
NotEmpty 集合对象的元素不为0,即集合不为空,也能够用于字符串不为null
Range(min=, max=) 被注释的元素必须在合适的范围内
SafeHtml classpath中要有jsoup包
ScriptAssert 要有Java Scripting API 即JSR 223("Scripting for the JavaTMPlatform")的实现
URL(protocol=,host=,port=,regexp=,flags=) 被注释的字符串必须是一个有效的url

Maven依赖

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.0.Final</version>
</dependency>

<!--统一EL-->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.0.Final</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
相关文章
相关标签/搜索