首頁 > 易卦

「轉」java開發之SpringBoot資料校驗機制

作者:由 IT小尚 發表于 易卦日期:2022-09-11

資料校驗怎麼操作

日常專案開發中,對於前端提交的表單,後臺介面接收到表單資料後,為了程式的嚴謹性,通常後端會加入業務引數的合法校驗操作來避免程式的非技術性bug,這裡對於客戶端提交的資料校驗,SpringBoot透過spring-boot-starter-validation 模組包含了資料校驗的工作。

「轉」java開發之SpringBoot資料校驗機制

表單校驗的框架

JSR303/JSR-349::提供bean屬性相關校驗規則

JSR303/JSR-349: JSR303是一項標準,只提供規範不提供實現,規定一些校驗規範即校驗註解,如@Null,@NotNull,@Pattern,位於javax。validation。constraints包下。JSR-349是其升級版本, 添加了一些新特性。

第一步:環境配置

實現引數校驗,程式必須引入spring-boot-starter-validation 依賴,只是在引入spring-boot- starter-web依賴時,該模組會自動依賴spring-boot-starter-validation,所以程式中引入spring-boot- starter-web 會一併依賴spring-boot-starter-validation到專案中。

第二步:在需要校驗的實體類的屬性上新增校驗的規則

public class User { private Integer uid; @NotBlank(message = “使用者名稱不能為空”) private String uname; @NotBlank(message = “使用者密碼不能為空”) @Length(min = 6, max = 10,message = “密碼長度至少6位但不超過10位”) private String upasswd; 省略了get/set方法 }

第三步:在controller層中需要校驗的方法引數旁加上@Valid註解

@PutMapping(“user”) public String addUser(@RequestBody @Valid User user, BindingResult resul){ //如果傳過來的引數與設定的規則不一致的話,則丟擲異常(我這裡是自定義 異常) if (resul。hasErrors()){ throw new ParamsException(400,resul。getFieldError()。 getDefaultMessage()); } int save = userService。save(user); if (save>0){ return “新增成功”; }else { return “新增失敗”; } }

第四步:自定義異常處理引數校驗不資訊

public class ParamsException extends RuntimeException { private Integer code=300; private String msg=“引數異常”; public ParamsException() { super(“引數異常”); } public ParamsException(String msg) { super(msg); this。msg = msg; } public ParamsException(Integer code) { super(“引數異常”); this。code = code; } public ParamsException(Integer code, String msg) { super(msg); this。code = code; this。msg = msg; } 省略了get/set方法 }

第五步,透過全域性異常處理獲取引數校驗不滿足的資訊

@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception。class) @ResponseBody public String excetionHandlerTest(Exception e ) { ParamsException exception=(ParamsException) e; return exception。getMsg(); }}

第六步,測試專案(透過postman測試)

引數校驗都滿足的情況:

「轉」java開發之SpringBoot資料校驗機制

引數校驗不滿足的情況:

「轉」java開發之SpringBoot資料校驗機制

出現以上情況,就證明我們的資料校驗是可以的了。

轉載於

java學習