日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

面试官 | 如何在 Spring Boot 中进行参数校验?

發布時間:2025/3/11 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试官 | 如何在 Spring Boot 中进行参数校验? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 |?狂亂的貴公子

來源?| cnblogs.com/cjsblog/p/8946768.html

開發過程中,后臺的參數校驗是必不可少的,所以經常會看到類似下面這樣的代碼

這樣寫并沒有什么錯,還挺工整的,只是看起來不是很優雅而已。

接下來,用Validation來改寫這段

1、Spring Boot文檔中的Validation

在?Spring Boot?的官網中,關于Validation只是簡單的提了一句,如下

其實,Spring Validator 和Hibernate Validator是兩套Validator,可以混著用,這里我們用Hibernate Validator

2、Hibernate Validator

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#preface

3、Spring Validator

https://docs.spring.io/spring/docs/5.0.5.RELEASE/spring-framework-reference/core.html#validation

4、示例

4.1、引入spring-boot-starter-validation

4.2、定義一個對象

4.3、適用@Valid校驗,并將校驗結果放到BindingResult對象中

注意:

  • 默認情況下,如果校驗失敗會拋javax.validation.ConstraintViolationException異常,可以用統一異常處理去對這些異常做處理

  • An Errors/BindingResult argument is expected to be declared immediately after the model attribute

4.4、看效果

如果在校驗的對象后面再加上Model對象的話,如果返回的是ModelAndView就可以將這個Model設置到其中,這樣在頁面就可以取到錯誤消息了

僅僅只是單字段校驗的話未免也太不靈活了吧,如果字段之間有關聯關系,那該如何校驗呢?答案是自定義

4.5、自定義校驗規則

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints

這里,以優惠券創建為例來演示如何自定義校驗規則

首先,優惠券表單如下(僅僅只是演示用):

這里除了自定義了兩條校驗規則之外,還用到了分組。

為什么要有分組這一說呢?因為,舉個例子,添加的時候不需要校驗id,而修改的時候id不能為空,有了分組以后,就可以添加的時候校驗用組A,修改的時候校驗用組B

下面重點看一下@CheckTimeInterval

第一步 、定義一個注解叫CheckTimeInterval

第二步 、定義Validator去校驗它

順便提一句,這里BeanWrapper去取對象的屬性值,我們稍微看一下BeanWrapper是做什么的

言歸正傳

第三步 、驗證

看,自定義的校驗生效了

5、補充

5.1、校驗模式

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#p-fail-fast

下面補充一點,關于校驗模式

默認會校驗完所有屬性,然后將錯誤信息一起返回,但很多時候不需要這樣,一個校驗失敗了,其它就不必校驗了

為此,需要這樣設置

5.2、單個參數校驗

如果是調整頁面的時候參數校驗失敗的話,這時可以不做處理,讓其調到錯誤頁面。

如果是接口參數校驗失敗的話,可以在這里進行統一處理,并返回。例如:

5.3、錯誤頁面

以剛才優惠券詳情為例

http://localhost:8080/coupon/detail.html      400

http://localhost:8080/coupon/detail.html?id=    400

http://localhost:8080/coupon/detail.html?id=abc   400

http://localhost:8080/coupon/detail222.html?id=123  404

無權限  403

int a = 1 / 0;  500

5.4、@Valid與@Validated

https://blog.csdn.net/qq_27680317/article/details/79970590

參考

http://rensanning.iteye.com/blog/2357373

https://blog.csdn.net/kenight/article/details/77774465

https://www.cnblogs.com/mr-yang-localhost/p/7812038.html

https://www.phpsong.com/3567.html

https://www.cnblogs.com/mr-yang-localhost/p/7812038.html

【END】

近期熱文

?
  • 面試珍藏:最常見的200多道Java面試題

  • 被一個熟悉的面試題問懵了:String...

  • 面試官:如何實現冪等性校驗?

關注下方二維碼,訂閱更多精彩內容

朕已閱?

總結

以上是生活随笔為你收集整理的面试官 | 如何在 Spring Boot 中进行参数校验?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。