最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

學(xué)習(xí)記錄之VALIDATION

2022-07-27 20:01 作者:星月襲空  | 我要投稿

Spring Validation的主要作用是檢查請求參數(shù)的基本格式。

關(guān)于檢查請求參數(shù):

????需要注意:在開發(fā)實踐中,無論是客戶端的項目(例如網(wǎng)頁前端),還是服務(wù)器端的項目,都需要對用戶填寫、選擇的數(shù)據(jù)進(jìn)行檢查!

????其實,最終能夠保證數(shù)據(jù)有效的一定是服務(wù)器端的檢查,所以,服務(wù)器端必須對請求參數(shù)進(jìn)行檢查,僅當(dāng)數(shù)據(jù)的基本格式有效后,才進(jìn)行相關(guān)的處理。

????客戶端的檢查應(yīng)該是不作為最終保障的,在前后端分離的模式下,服務(wù)器端無法保證所有客戶端都采取了統(tǒng)一、有效的驗證規(guī)則!因為客戶端的檢查可能并未實現(xiàn)、用戶設(shè)備中客戶端軟件的版本并未升級,甚至,客戶端軟件是可能偽造、篡改的。

????即使客戶端的檢查不一定是可靠的,但是,所有客戶端仍應(yīng)該對請求參數(shù)進(jìn)行檢查,如果參數(shù)的基本格式不符合要求,則不應(yīng)該提交請求!畢竟客戶端的檢查可以把絕大部分錯誤攔截掉(不會低級錯誤的請求發(fā)到服務(wù)器端),以減輕服務(wù)器端的壓力。

在Spring Boot項目中,使用Spring Boot Validation的依賴項是:

基本使用:

????在控制器處理請求的方法中,對需要驗證的請求參數(shù)添加`@Valid`或`@Validated`注解,表示此參數(shù)是需要通過Spring Boot Validation進(jìn)行檢查的,例如:

在封裝了請求參數(shù)的POJO類中,在各需要驗證格式的屬性之前,添加檢查格式的注解,即可實現(xiàn)格式的驗證,例如:

處理異常:

當(dāng)請求參數(shù)不符合注解對應(yīng)的規(guī)則時,將拋出`org.springframework.validation.BindException`,所以,應(yīng)該在統(tǒng)一處理異常的類中,對此異常進(jìn)行處理。

先在`ServiceCode`中添加新的業(yè)務(wù)狀態(tài)碼,對應(yīng)請求參數(shù)格式錯誤:

然后,`GlobalExceptionHandler`中對此異常進(jìn)行處理:

在`BindException`的錯誤信息(`message`)中,將包含大量的信息,不利于響應(yīng)到客戶端去,例如,以上處理方式的響應(yīng)大概是:

為了保證處理異常后響應(yīng)的消息是易于閱讀的,應(yīng)該對錯誤信息(`message`)進(jìn)行處理:

關(guān)于檢查參數(shù)格式的注解:

@NotNull`:不允許為`null`,即必須提交此名稱對應(yīng)的參數(shù)

@NotEmpty`:不允許為空字符串(長度為0的字符串) 注意:只能應(yīng)用于字符串格式的參數(shù)

`@NotBlank`:不允許為空白(字符串長度可能大于0,卻是由空格、TAB等空白輸入的)

??注意:只能應(yīng)用于字符串格式的參數(shù)

?`@Min`:設(shè)置數(shù)值類型的最小值? 僅用于數(shù)值類型的請求參數(shù) 可被`@Range`取代

? `@Max`:設(shè)置數(shù)值類型的最大值 僅用于數(shù)值類型的請求參數(shù) 可被`@Range`取代

?`@Range`:設(shè)置數(shù)據(jù)類型的取值區(qū)間,可設(shè)置最小值和最大值? 此注解的`min`屬性默認(rèn)為`0`,`max`屬性默認(rèn)為`long`類型的最大值 僅用于數(shù)值類型的請求參數(shù)

`@Pattern`:配置正則表達(dá)式 不能取代`@NotNull`注解

在開發(fā)實踐中,對于字符串類型的請求參數(shù),應(yīng)該同時使用`@NotNull`(如果你認(rèn)為必須提交)和`@Pattern`,而`@NotEmpty`、`@NotBlank`通常不需要使用,除非你對此字符串的值沒有太多要求,對于數(shù)值類型的請求參數(shù),應(yīng)該同時使用`@NotNull`和`@Range`。

需要注意:對于數(shù)值類型的屬性,如果提交的請求參數(shù)不能夠轉(zhuǎn)換成數(shù)值類型,則這些注解將不生效,且報錯。另外,在開發(fā)實踐中,通常會將使用到的正則表達(dá)式、出錯時的提示文本封裝在專門的類或接口中,各POJO類型直接引用即可。


學(xué)習(xí)記錄之VALIDATION的評論 (共 條)

分享到微博請遵守國家法律
新巴尔虎右旗| 德钦县| 象州县| 东港市| 布尔津县| 乌拉特前旗| 敦煌市| 浮梁县| 观塘区| 万全县| 阿巴嘎旗| 吉林省| 绥棱县| 忻城县| 靖宇县| 延寿县| 宁陵县| 长垣县| 龙南县| 万山特区| 上蔡县| 泉州市| 南部县| 保靖县| 慈利县| 临汾市| 张掖市| 洪江市| 烟台市| 利川市| 温州市| 海伦市| 宜城市| 抚顺市| 永寿县| 林州市| 体育| 九寨沟县| 长春市| 阿尔山市| 文山县|