如何實現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>
相關文章
相關標籤/搜索