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