26.1. 從零開始學(xué)springboot-數(shù)據(jù)校驗(yàn)

前言

對于任何一個應(yīng)用而言邓厕,客戶端做的數(shù)據(jù)有效性驗(yàn)證都不是安全有效的,而數(shù)據(jù)驗(yàn)證又是一個企業(yè)級項(xiàng)目架構(gòu)上最為基礎(chǔ)的功能模塊洽糟,這時候就要求我們在服務(wù)端接收到數(shù)據(jù)的時候也對數(shù)據(jù)的有效性進(jìn)行驗(yàn)證炉菲。

JSR-303

JSR 是Java Specification Requests 的縮寫,是指向 JCP(Java Community Process) 提出新增一個標(biāo)準(zhǔn)化技術(shù)規(guī)范的正式請求坤溃。
任何人都可以提交 JSR拍霜,以向 Java 平臺增添新的 API 和服務(wù),已審核通過的規(guī)范涉及 Java 各個領(lǐng)域薪介,有興趣可以了解一下祠饺。
Bean Validation 是一個運(yùn)行時的數(shù)據(jù)驗(yàn)證框架,為 JavaBean 驗(yàn)證定義了相應(yīng)的元數(shù)據(jù)模型和 API汁政。
默認(rèn)的元數(shù)據(jù)是 Java Annotations道偷,當(dāng)然也可以使用 XML 可以對已存在的元數(shù)據(jù)信息進(jìn)行覆蓋和擴(kuò)展。
在應(yīng)用中通過使用 Bean Validation 或是你自己定義的 constraint记劈,例如 @NotNull, @Max, @ZipCode勺鸦, 就可以確保數(shù)據(jù)模型的正確性。
constraint 可以注解到字段目木,getter 方法祝旷,類或者接口上面。對于一些特定的需求嘶窄,用戶可以很容易的開發(fā)定制化的 constraint怀跛。

檢驗(yàn)注解

JSR提供的校驗(yàn)注解:
@Null 被注釋的元素必須為 null
@NotNull 被注釋的元素必須不為 null
@AssertTrue 被注釋的元素必須為 true
@AssertFalse 被注釋的元素必須為 false
@Min(value) 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值
@Max(value) 被注釋的元素必須是一個數(shù)字柄冲,其值必須小于等于指定的最大值
@DecimalMin(value) 被注釋的元素必須是一個數(shù)字吻谋,其值必須大于等于指定的最小值
@DecimalMax(value) 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值
@Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內(nèi)
@Digits (integer, fraction) 被注釋的元素必須是一個數(shù)字现横,其值必須在可接受的范圍內(nèi)
@Past 被注釋的元素必須是一個過去的日期
@Future 被注釋的元素必須是一個將來的日期
@Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達(dá)式

Hibernate Validator提供的校驗(yàn)注解:
@NotBlank(message =) 驗(yàn)證字符串非null漓拾,且trim后長度必須大于0
@Email 被注釋的元素必須是電子郵箱地址
@Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內(nèi)
@NotEmpty 被注釋的字符串的必須非空
@Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內(nèi)

使用

實(shí)體類

package com.mrcoder.sbexceptionvalidator.model;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Setter
@Getter
public class Person {
    @NotNull(message = "id非空")
    private Integer id;
    @NotBlank(message = "name非空")
    private String name;
}

控制類

    @PostMapping("/add")
    public ResponseInfo add(@Valid @RequestBody Person person) {
        return ResponseInfo.success("success");
    }

項(xiàng)目地址

https://github.com/MrCoderStack/SpringBootDemo/tree/master/sb-exception-validator

請關(guān)注我的訂閱號

訂閱號.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阁最,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子骇两,更是在濱河造成了極大的恐慌速种,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件低千,死亡現(xiàn)場離奇詭異配阵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)示血,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門棋傍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人难审,你說我怎么就攤上這事瘫拣。” “怎么了告喊?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵麸拄,是天一觀的道長。 經(jīng)常有香客問我黔姜,道長感帅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任地淀,我火速辦了婚禮失球,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘帮毁。我一直安慰自己实苞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布烈疚。 她就那樣靜靜地躺著黔牵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爷肝。 梳的紋絲不亂的頭發(fā)上猾浦,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機(jī)與錄音灯抛,去河邊找鬼金赦。 笑死,一個胖子當(dāng)著我的面吹牛对嚼,可吹牛的內(nèi)容都是我干的夹抗。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼纵竖,長吁一口氣:“原來是場噩夢啊……” “哼漠烧!你這毒婦竟也來了杏愤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤已脓,失蹤者是張志新(化名)和其女友劉穎珊楼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體度液,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厕宗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恨诱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡骗炉,死狀恐怖照宝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情句葵,我是刑警寧澤厕鹃,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站乍丈,受9級特大地震影響剂碴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轻专,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一忆矛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧请垛,春花似錦催训、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至混稽,卻和暖如春采驻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背匈勋。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工礼旅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洽洁。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓各淀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诡挂。 傳聞我的和親對象是個殘疾皇子碎浇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時临谱,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,339評論 0 9
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的奴璃,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體悉默。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,906評論 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)苟穆。 注意:講述HT...
    kismetajun閱讀 27,518評論 1 45
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔抄课,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,770評論 2 9
  • Spring校驗(yàn)器雳旅,參數(shù)校驗(yàn)從此簡單跟磨。 應(yīng)用在執(zhí)行業(yè)務(wù)邏輯之前,必須通過校驗(yàn)保證接受到的輸入數(shù)據(jù)是合法正確的攒盈,但很...
    Real_man閱讀 17,378評論 0 6