摘要:初步使用主要使用注解的方式對進行校驗,第一個例子在需要校驗的字段上指定約束條件然后在中可以這樣調用,加上注解即可。如果校驗失敗,默認會返回框架的出錯信息。指定到的分組名會全部進行校驗,不指定的不校驗。
Spring Boot - 表單校驗(JSR303&Hibernate Validator) 回顧
Spring Boot - 初識 Hello World
Spring Boot - Servlet、過濾器、監聽器、攔截器
Spring Boot - 靜態資源處理、啟動加載、日志處理
Spring Boot - 部署Deploy
Spring Boot - 整合jsp后必須通過spring-boot:run方式啟動?
Spring Boot - 為什么整合jsp后必須通過spring-boot:run方式啟動?
Spring Boot - 自定義啟動banner
背景本專欄所有案例基于Spring Boot 1.5.1進行講解,在Spring Boot 1.5.1中使用的校驗器是hibernate validator 5.3.4 Final。
hibernate validator 5.3.4 Final是JSR 303 Bean Validation 1.1的具體實現。
本文跟大家初步了解一下hibernate validator的一些使用技巧。
初步使用hibernate validator主要使用注解的方式對bean進行校驗,第一個例子:
package com.learn.validate.domain; import javax.validation.constraints.Min; import org.hibernate.validator.constraints.NotBlank; public class Student { //在需要校驗的字段上指定約束條件 @NotBlank private String name; @Min(3) private int age; @NotBlank private String classess; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassess() { return classess; } public void setClassess(String classess) { this.classess = classess; } }
然后在controller中可以這樣調用,加上@Validated注解即可。
package com.learn.validate.controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.learn.validate.domain.Student; @RestController public class ValidateController { @RequestMapping(value="testStudent") public void testStudent(@Validated Student student,BindingResult bindingResult) { // } }
如果校驗失敗,默認會返回Spring boot 框架的出錯信息。是一個json串,里面有詳細的出錯描述。
分組校驗在上面的例子中,如果Student bean想要用于兩個不同的請求中,每個請求有不同的校驗需求,例如一個請求只需要校驗name字段,一個請求需要校驗name和age兩個字段,那該怎么做呢?
使用注解的groups屬性可以很好的解決這個問題,如下所示:
package com.learn.validate.domain; import javax.validation.constraints.Min; import org.hibernate.validator.constraints.NotBlank; public class Student { //使用groups屬性來給分組命名,然后在需要的地方指定命令即可 @NotBlank(groups=NAME.class) private String name; @Min(value=3,groups=AGE.class) private int age; @NotBlank private String classess; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassess() { return classess; } public void setClassess(String classess) { this.classess = classess; } public interface NAME{}; public interface AGE{}; }
根據需要在@Validated屬性中指定需要校驗的分組名,可以指定1到多個。指定到的分組名會全部進行校驗,不指定的不校驗。
package com.learn.validate.controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.learn.validate.domain.Student; import com.learn.validate.domain.Student.AGE; import com.learn.validate.domain.Student.NAME; @RestController public class ValidateController { @RequestMapping(value="testStudent") public void testStudent(@Validated Student student,BindingResult bindingResult) { } @RequestMapping(value="testStudent1") public void testStudent1(@Validated(NAME.class) Student student,BindingResult bindingResult) { } @RequestMapping(value="testStudent2") public void testStudent2(@Validated({NAME.class,AGE.class}) Student student,BindingResult bindingResult) { } }總結
本文初步講解了hibernate validator的使用方式,相信各位看官老爺一定還想了解更多詳細內容和使用技巧。
??當面講給你聽?? 講堂地址,新課促銷中,十一前都有折扣,只要你敢來,保你收貨滿滿?。
優惠報名 【全程擼碼】Spring Boot 1.5 快速入門教程(全)(原價:文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70528.html
摘要:前言估計很多朋友都認為參數校驗是客戶端的職責,不關服務端的事。輕則導致服務器宕機,重則泄露數據。所以,這時就需要設置第二道關卡,服務端驗證了。老項目的服務端校驗不能為空不能為空看以上代碼,就一個的校驗就如此麻煩。 前言 估計很多朋友都認為參數校驗是客戶端的職責,不關服務端的事。其實這是錯誤的,學過 Web 安全的都知道,客戶端的驗證只是第一道關卡。它的參數驗證并不是安全的,一旦被有心人...
摘要:本文主要介紹在中自動校驗的機制。引入依賴我們使用構建應用來進行演示。在中校驗數據值得注意的地方參數前需要加上注解,表明需要對其進行校驗,而校驗的信息會存放到其后的中。層改寫方法限定需要進行校驗,而方法則不做限制。 簡介 JSR303/JSR-349,hibernate validation,spring validation之間的關系。JSR303是一項標準,JSR-349是其的升級版...
摘要:當面講給你聽講堂地址,或許是最實用的教程,新課促銷中,只要你敢來,保你收貨滿滿。優惠報名全程擼碼快速入門教程全原價,優惠價全程擼碼進階全原價,優惠價 回顧 Spring Boot - 初識 Hello World Spring Boot - Servlet、過濾器、監聽器、攔截器 Spring Boot - 靜態資源處理、啟動加載、日志處理 Spring Boot - 部署Deplo...
摘要:時間年月日星期三說明使用規范校驗接口請求參數源碼第一章理論簡介背景介紹如今互聯網項目都采用接口形式進行開發。該規范定義了一個元數據模型,默認的元數據來源是注解。 時間: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...
閱讀 1624·2021-11-02 14:42
閱讀 521·2021-10-18 13:24
閱讀 938·2021-10-12 10:12
閱讀 1816·2021-09-02 15:41
閱讀 3201·2019-08-30 15:56
閱讀 2873·2019-08-29 16:09
閱讀 2056·2019-08-29 11:13
閱讀 3617·2019-08-28 18:06