摘要:我們有時需要對前端傳過來的數據做校驗,就可以使用。他可以使我們不用在每個編寫校驗代碼,可以達到解耦的功能。本文環境為,框架使用。
我們有時需要對前端傳過來的數據做校驗,就可以使用spring validation。他可以使我們不用在每個Controller編寫校驗代碼,可以達到解耦的功能。本文環境為jdk8,框架使用springboot 2.1.0.RELEASE。
1.添加依賴
org.springframework.boot spring-boot-starter-validation
2.需要被校驗的實體類
@Data public class LoginVo { @Size(min=6,max = 12,message = "用戶名不符合規范") String username; @NotBlank(message = "密碼不能為空") String password; }
3.Controller層,在參數Login前加上@Validated注解,表明需要spring對其進行校驗
public JSONResult registerOrLogin(@Validated LoginVo loginVo)
JSR提供的校驗注解: @Null 被注釋的元素必須為 null @NotNull 被注釋的元素必須不為 null @AssertTrue 被注釋的元素必須為 true @AssertFalse 被注釋的元素必須為 false @Min(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值 @Max(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值 @DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值 @DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值 @Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內 @Digits (integer, fraction) 被注釋的元素必須是一個數字,其值必須在可接受的范圍內 @Past 被注釋的元素必須是一個過去的日期 @Future 被注釋的元素必須是一個將來的日期 @Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達式 Hibernate Validator提供的校驗注解: @NotBlank(message =) 驗證字符串非null,且長度必須大于0 @Email 被注釋的元素必須是電子郵箱地址 @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內 @NotEmpty 被注釋的字符串的必須非空 @Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內
4.如果前端傳來的數值不符合標準,后端會報錯,所以我們可以編寫一個全局異常類來捕獲這個參數綁定異常,從而給前端返回提示消息
@ControllerAdvice @ResponseBody public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class)//攔截所有異常 public JSONResult exceptionHandler(HttpServletRequest request, Exception e){ e.printStackTrace(); if(e instanceof BindException) { BindException ex = (BindException)e; Listerrors = ex.getAllErrors();//綁定錯誤返回很多錯誤,是一個錯誤列表,只需要第一個錯誤 ObjectError error = errors.get(0); String msg = error.getDefaultMessage(); return JSONResult.errorMsg("用戶名或密碼格式錯誤"); }else { return JSONResult.errorMsg("未知錯誤"); } } }
5.驗證
前端:
后端:
如圖,后端捕獲了異常,并向前端返回了提示信息
6.我們還可以使用分組功能,是變量在某些場景需要被驗證,而不是所有場景,增加靈活性。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75171.html
摘要:時間年月日星期三說明使用規范校驗接口請求參數源碼第一章理論簡介背景介紹如今互聯網項目都采用接口形式進行開發。該規范定義了一個元數據模型,默認的元數據來源是注解。 時間:2017年11月08日星期三說明:使用JSR303規范校驗http接口請求參數 源碼:https://github.com/zccodere/s... 第一章:理論簡介 1-1 背景介紹 如今互聯網項目都采用HTTP接口...
摘要:引言的一個便捷功能是外部化配置,可以輕松訪問屬性文件中定義的屬性。本文將詳細介紹的使用。 引言 Spring Boot的一個便捷功能是外部化配置,可以輕松訪問屬性文件中定義的屬性。本文將詳細介紹@ConfigurationProperties的使用。 配置項目POM 在pom.xml中定義Spring-Boot 為parent org.springframework.boot...
摘要:也就是說如果傳的中有的為空或者是負數,入參驗證不會檢測出來。為了能夠進行嵌套驗證,必須手動在實體的字段上明確指出這個字段里面的實體也要進行驗證。用在方法入參上無法單獨提供嵌套驗證功能。 來源:blog.csdn.net/qq_27680317/article/details/79970590整編:Java技術棧(公眾號ID:javastack) Spring Validation驗證框...
摘要:前言估計很多朋友都認為參數校驗是客戶端的職責,不關服務端的事。輕則導致服務器宕機,重則泄露數據。所以,這時就需要設置第二道關卡,服務端驗證了。老項目的服務端校驗不能為空不能為空看以上代碼,就一個的校驗就如此麻煩。 前言 估計很多朋友都認為參數校驗是客戶端的職責,不關服務端的事。其實這是錯誤的,學過 Web 安全的都知道,客戶端的驗證只是第一道關卡。它的參數驗證并不是安全的,一旦被有心人...
摘要:本文主要介紹在中自動校驗的機制。引入依賴我們使用構建應用來進行演示。在中校驗數據值得注意的地方參數前需要加上注解,表明需要對其進行校驗,而校驗的信息會存放到其后的中。層改寫方法限定需要進行校驗,而方法則不做限制。 簡介 JSR303/JSR-349,hibernate validation,spring validation之間的關系。JSR303是一項標準,JSR-349是其的升級版...
閱讀 1563·2023-04-25 15:50
閱讀 1304·2021-09-22 15:49
閱讀 2931·2021-09-22 15:06
閱讀 3569·2019-08-30 15:54
閱讀 2331·2019-08-29 11:33
閱讀 2118·2019-08-23 17:56
閱讀 2144·2019-08-23 17:06
閱讀 1293·2019-08-23 15:55