hibernate validate(後台校驗)

2021-10-02 09:16:52 字數 2723 閱讀 5143

剛才雖然實現了註冊,但是服務端並沒有進行資料校驗,而前端的校驗是很容易被有心人繞過的。所以我們必須在後台新增資料校驗功能:

我們這裡會使用hibernate-validator框架完成資料校驗:

hibernate validator是hibernate提供的乙個開源框架,使用註解方式非常方便的實現服務端的資料校驗。

官網:

hibernate validator是 bean validation 的參考實現 。

hibernate validator 提供了 jsr 303 規範中所有內建 constraint(約束) 的實現,除此之外還有一些附加的 constraint。

在日常開發中,hibernate validator經常用來驗證bean的字段,基於註解,方便快捷高效。

常用註解如下:

constraint詳細資訊

@valid被注釋的元素是乙個物件,需要檢查此物件的所有字段值

@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)被注釋的元素必須符合指定的正規表示式

@email被注釋的元素必須是電子郵箱位址

@length被注釋的字串的大小必須在指定的範圍內

@notempty被注釋的字串的必須非空

@range被注釋的元素必須在合適的範圍內

@notblank被注釋的字串的必須非空

@url(protocol=,host=, port=,regexp=, flags=)被注釋的字串必須是乙個有效的url

@creditcardnumber被注釋的字串必須通過luhn校驗演算法,銀行卡,信用卡等號碼一般都用luhn計算合法性

我們在leyou-user-inte***ce中新增hibernate-validator依賴:

>

>

org.hibernate.validatorgroupid

>

>

hibernate-validatorartifactid

>

dependency

>

我們在user物件的部分屬性上新增註解:

@table

(name =

"tb_user"

)public

class

user

$", message =

"手機號格式不正確"

)private string phone;

// **

private date created;

// 建立時間

@jsonignore

private string salt;

// 密碼的鹽值

}

在controller中改造register方法,只需要給user新增 @valid註解即可。

我們故意填錯:

然後springmvc會自動返回錯誤資訊:

Hibernate validate 校驗常用註解

notblank message 判斷字串是否為 null 或者是空串 去掉首尾空格 notempty 判斷字串是否 null 或者是空串 null 判斷元素必須為null,否則提示錯誤資訊 notnull 判斷元素必須不為null,否則提示錯誤資訊 asserttrue 判斷元素必須為 true ...

學校出入校後台許可權管理

2.json拼接並返回 ifdel jsonarray json jsonarray.fromobject ifdel getrequest setcharacterencoding utf 8 getresponse setcharacterencoding utf 8 getresponse s...

滴滴 2017校招 後台開發面經

自我介紹 演算法 寫個快排 golang的協程介紹 執行緒模型,排程 c 虛函式的實現原理 在一間屋子裡有100盞電燈,排成一行,依從左至右的順序,編上號碼 1 2 3 4 99 100,每盞燈上有乙個拉線開關,開始時,全部的燈都關著,有100個同學在門外排著隊,第乙個同學進屋把編號為1的倍數的所有...