国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Spring boot進行參數校驗的方法實例詳解

2024-07-14 08:40:37
字體:
來源:轉載
供稿:網友

Spring boot開發web項目有時候我們需要對controller層傳過來的參數進行一些基本的校驗,比如非空、整數值的范圍、字符串的長度、日期、郵箱等等。Spring支持JSR-303 Bean Validation API,可以方便的進行校驗。

使用注解進行校驗

先定義一個form的封裝對象

class RequestForm {  @Size(min = 1, max = 5)  private String name;  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

其中name這個字段用Size注解限制長度1到5。Size是javax.validation包中的constraint注解。

 在使用時用@Valid注解表示要校驗這個bean。

  @ResponseBody  @GetMapping(value = "bean")  public String validate(@Valid RequestForm request) {    System.out.println(request.getName());    return "OK";  }

自定義注解

如果內置的注解不夠用,可以自定義注解。

 比如先定義一個注解NameConstraint,限制name字段只能從特定數據中選取。

@Target({ ElementType.FIELD, ElementType.PARAMETER })@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = NameConstraintValidator.class)@interface NameConstraint {  String[] allowedValues();  Class<?>[] groups() default {};  Class<? extends Payload>[] payload() default {};  String message();}

其中allowedValues表示合法的取值范圍,message是校驗失敗的顯示信息。

message、groups、payload是hibernate validator要求的字段,想了解的請看官方文檔

 再定義一個validator做真正的校驗

class NameConstraintValidator implements ConstraintValidator<NameConstraint, String> {  private String[] validValues;  @Override  public void initialize(NameConstraint constraintAnnotation) {    validValues = constraintAnnotation.allowedValues();  }  @Override  public boolean isValid(String value, ConstraintValidatorContext context) {    for (String s : this.validValues) {      if (s.equals(value)) {        return true;      }    }    return false;  }}

在form bean中按如下方式使用

class RequestFormWithCustomConstraint {  @NameConstraint(allowedValues = { "bar", "foo" }, message = "只允許bar,foo")  private String name;  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

直接校驗參數

只有一個name字段,不想封裝一個對象怎么辦?可以直接校驗該參數

@Controller@Validated@RequestMapping(value = "validator")public class ParameterValidatorDemoController {  @ResponseBody  @GetMapping(value = "simple")  public String validateParameter(@Size(min = 1, max = 5) String name) {    System.out.println(name);    return "OK";  }}

controller上面的@Validated注解則告訴spring需要掃描這個類,來檢查其中的constraint注解。

詳細信息可以參考官方文檔有關章節

https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#boot-features-validation
https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/#validation-beanvalidation

代碼在github

https://github.com/kabike/spring-boot-demo

總結

以上所述是小編給大家介紹的Spring boot進行參數校驗的方法實例詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平昌县| 五家渠市| 望奎县| 多伦县| 江达县| 中山市| 无极县| 邵阳县| 曲周县| 新乡县| 亚东县| 长兴县| 海南省| 韶关市| 陆丰市| 潼南县| 北碚区| 东源县| 石家庄市| 长岭县| 山西省| 铜梁县| 宜兰县| 灵山县| 南木林县| 定兴县| 乌拉特后旗| 梅河口市| 芒康县| 巴彦淖尔市| 凤台县| 汝阳县| 常德市| 泗阳县| 静乐县| 马关县| 教育| 广州市| 张家港市| 苍溪县| 泸州市|