怎么在Springboot中使用JSR303校驗參數(shù)

本篇文章給大家分享的是有關(guān)怎么在Springboot中使用JSR303校驗參數(shù),小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),大竹企業(yè)網(wǎng)站建設(shè),大竹品牌網(wǎng)站建設(shè),網(wǎng)站定制,大竹網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,大竹網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

1、pom導(dǎo)入依賴

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2、注解類型

怎么在Springboot中使用JSR303校驗參數(shù)

(1)空檢查

@Null 驗證對象是否為null
@NotNull 驗證對象是否不為null, 無法查檢長度為0的字符串
@NotBlank 檢查約束字符串是不是Null還有被Trim的長度是否大于0,只對字符串,且會去掉前后空格.
@NotEmpty 檢查約束元素是否為NULL或者是EMPTY.

(2)Booelan檢查

@AssertTrue 驗證 Boolean 對象是否為 true
@AssertFalse 驗證 Boolean 對象是否為 false

(3)長度檢查

@Size(min=, max=) 驗證對象(Array,Collection,Map,String)長度是否在給定的范圍之內(nèi)
@Length(min=, max=) 驗證字符串的長度在min和max范圍之內(nèi).

(4)日期檢查

@Past 驗證 Date 和 Calendar 對象是否在當(dāng)前時間之前,驗證成立的話被注釋的元素一定是一個過去的日期
@Future 驗證 Date 和 Calendar 對象是否在當(dāng)前時間之后 ,驗證成立的話被注釋的元素一定是一個將來的日期
@Pattern 驗證 String 對象是否符合正則表達(dá)式的規(guī)則,被注釋的元素符合制定的正則表達(dá)式,regexp:正則表達(dá)式 flags: 指定 Pattern.Flag 的數(shù)組,表示正則表達(dá)式的相關(guān)選項。

(5)數(shù)值檢查

建議使用在Stirng,Integer類型,不建議使用在int類型上,因為表單值為""時無法轉(zhuǎn)換為int,但可以轉(zhuǎn)換為Stirng為"",Integer為null
@Min 驗證 Number 和 String 對象是否大等于指定的值
@Max 驗證 Number 和 String 對象是否小等于指定的值
@DecimalMax 被標(biāo)注的值必須不大于約束中指定的最大值. 這個約束的參數(shù)是一個通過BigDecimal定義的最大值的字符串表示.小數(shù)存在精度
@DecimalMin 被標(biāo)注的值必須不小于約束中指定的最小值. 這個約束的參數(shù)是一個通過BigDecimal定義的最小值的字符串表示.小數(shù)存在精度
@Digits 驗證 Number 和 String 的構(gòu)成是否合法
@Digits(integer=,fraction=) 驗證字符串是否是符合指定格式的數(shù)字,interger指定整數(shù)精度,fraction指定小數(shù)精度。
@Range(min=, max=) 被指定的元素必須在合適的范圍內(nèi)
@Valid 遞歸的對關(guān)聯(lián)對象進(jìn)行校驗, 如果關(guān)聯(lián)對象是個集合或者數(shù)組,那么對其中的元素進(jìn)行遞歸校驗,如果是一個map,則對其中的值部分進(jìn)行校驗.(是否進(jìn)行遞歸驗證)
@CreditCardNumber信用卡驗證
@Email 驗證是否是郵件地址,如果為null,不進(jìn)行驗證,算通過驗證。
@ScriptAssert(lang= ,script=, alias=)
@URL(protocol=,host=, port=,regexp=, flags=)

3、自定義驗證類

(1)自定義注解,至少需要包含message() 、 groups() 、 payload() ,

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {IsRightValidator.class })
public @interface IsRight {
	
	boolean right() default true;
	
	String message() default "這是驗證失敗的提示信息";
 
	Class<?>[] groups() default { };
 
	Class<? extends Payload>[] payload() default { };
}

(2)自定義注解校驗器類,繼承 ConstraintValidator 類<注解類,注解參數(shù)類型> ,重寫 兩個方法(initialize:初始化操作、 isValid:邏輯處理)

public class IsRightValidator implements ConstraintValidator<IsRight, String> {
 
	private boolean right= false;
	@Override
	public void initialize(IsRight constraintAnnotation) {
		right = constraintAnnotation.right();
	}
 
   @Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		if(right) {
			return true;
		}else {
			return false;
		}
	}

4、JSR303注解的使用

(1)需要校驗的bean,一般為ViewObject的bean中

public class TestVo{
 
  @NotNull
	@Length(min=32)
	private String password;
  
  ...
}

(2)在Controller接口方法的接收參數(shù)中使用  @Valid修飾ViewObject

@Controller
public class LoginController {
 
  @RequestMapping("/Test")
  @ResponseBody
  public void doLogin(HttpServletResponse response, @Valid TestVo testVo) {
  	log.info(testVo.toString());
    
  	...
  }

以上就是怎么在Springboot中使用JSR303校驗參數(shù),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:怎么在Springboot中使用JSR303校驗參數(shù)
網(wǎng)頁URL:http://bm7419.com/article30/igsgpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、移動網(wǎng)站建設(shè)、定制網(wǎng)站、微信小程序網(wǎng)站營銷、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司