springmvc使用@notNull注解驗證請求參數(shù)方式
處理請求時, 有些參數(shù)是必傳或者必須遵循某些規(guī)則的, 如果針對每個請求都寫一遍驗證的話相當(dāng)繁瑣, 而且代碼維護起來也麻煩, 正好框架將參數(shù)校驗的功能抽象處理啊了, 我們可以利用這個完成80%的校驗場景
使用方式
使用起來很簡單, 只需要加上幾個注解即可
@NotNull
在需要驗證的非空字段前面加上@NotNull注解(注解還可設(shè)置提示語), 如下

@Min
有寫數(shù)值類型的需要限制范圍, 例如: 時間需要大于0

@valid
在需要校驗的接口的入?yún)⑶凹由?code>@valid注解
驗證生效
這兩個地方加上注解就可以了

進階
有時候默認的非空或者范圍校驗不能滿足部分定制化的需求
我們可以通過自定義校驗注解來按我們的凡是校驗數(shù)據(jù)
注解接口
定義一個自己的注解(檢驗邏輯入口)
注意:
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};這兩個是必須的…
@Target(value= {METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = CheckEvaluationKeyValidator.class)
@Documented
public @interface CheckEvaluationKey {
String message() default "{CheckEvaluationKey}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String evaluationKey() default "";
}
校驗邏輯實現(xiàn)
實現(xiàn)校驗邏輯, 需要在自定義注解中指定使用的校驗邏輯
@Constraint(validatedBy = CheckEvaluationKeyValidator.class)
系統(tǒng)就會更具注解自動進入我們的校驗邏輯
public class CheckEvaluationKeyValidator implements ConstraintValidator<CheckEvaluationKey, String> {
private String checkEvaluationKey;
@Override
public void initialize(CheckEvaluationKey constraintAnnotation) {
this.checkEvaluationKey = constraintAnnotation.evaluationKey();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (JudgeUtil.isNull(checkEvaluationKey)) {
String evaluationName = EvaluationEnum.getEvaluationNameWithOutAssert(value);
return JudgeUtil.isPresent(evaluationName);
} else {
return JudgeUtil.equals(value, checkEvaluationKey);
}
}
}
自定義注解使用

其他校驗注解
@Null: 被注釋的元素必須為null@NotNull: 被注釋的元素不能為null@AssertTrue: 被注釋的元素必須為true@AssertFalse: 被注釋的元素必須為false@Min(value): 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值@Max(value): 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值@DecimalMin(value): 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值@DecimalMax(value): 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值@Size(max,min): 被注釋的元素的大小必須在指定的范圍內(nèi)。@Digits(integer,fraction): 被注釋的元素必須是一個數(shù)字,其值必須在可接受的范圍內(nèi)@Past: 被注釋的元素必須是一個過去的日期@Future: 被注釋的元素必須是一個將來的日期@Pattern(value): 被注釋的元素必須符合指定的正則表達式。@Email: 被注釋的元素必須是電子郵件地址@Length: 被注釋的字符串的大小必須在指定的范圍內(nèi)@NotEmpty: 被注釋的字符串必須非空@Range: 被注釋的元素必須在合適的范圍內(nèi)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring整合atomikos實現(xiàn)分布式事務(wù)的方法示例
本文整合了一個spring和atomikos的demo,并且通過案例演示說明atomikos的作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05
Spring?Security圖形驗證碼的實現(xiàn)代碼
本文介紹了如何在SpringSecurity自定義認證中添加圖形驗證碼,首先需要在maven中添加相關(guān)依賴并創(chuàng)建驗證碼對象,然后通過Spring的HttpSessionSessionStrategy對象將驗證碼存儲到Session中,感興趣的朋友跟隨小編一起看看吧2024-10-10
Java中將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)字類型的多種方法
這篇文章主要介紹了Java中將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)字類型的多種方法,Java中字符串轉(zhuǎn)數(shù)字可用parseXXX方法、自動類型推斷、異常處理、BigDecimal及Apache庫實現(xiàn),需注意格式驗證、數(shù)據(jù)可靠性、精度及性能選擇,尤其處理用戶輸入時推薦帶異常處理方案,需要的朋友可以參考下2025-08-08
Java數(shù)據(jù)結(jié)構(gòu)之LinkedList從鏈表到實現(xiàn)
LinkedList是Java中常用的數(shù)據(jù)結(jié)構(gòu)之一,實現(xiàn)了鏈表的特性,支持快速添加、刪除元素,可以用于實現(xiàn)隊列、棧、雙向隊列等數(shù)據(jù)結(jié)構(gòu)。LinkedList的內(nèi)部實現(xiàn)采用了雙向鏈表,其中每個節(jié)點都包含前驅(qū)節(jié)點和后繼節(jié)點的引用,可以直接訪問鏈表的頭尾元素2023-04-04

