摘要:初步使用主要使用注解的方式對進(jìn)行校驗,第一個例子在需要校驗的字段上指定約束條件然后在中可以這樣調(diào)用,加上注解即可。如果校驗失敗,默認(rèn)會返回框架的出錯信息。指定到的分組名會全部進(jìn)行校驗,不指定的不校驗。
Spring Boot - 表單校驗(JSR303&Hibernate Validator) 回顧
Spring Boot - 初識 Hello World
Spring Boot - Servlet、過濾器、監(jiān)聽器、攔截器
Spring Boot - 靜態(tài)資源處理、啟動加載、日志處理
Spring Boot - 部署Deploy
Spring Boot - 整合jsp后必須通過spring-boot:run方式啟動?
Spring Boot - 為什么整合jsp后必須通過spring-boot:run方式啟動?
Spring Boot - 自定義啟動banner
背景本專欄所有案例基于Spring Boot 1.5.1進(jìn)行講解,在Spring Boot 1.5.1中使用的校驗器是hibernate validator 5.3.4 Final。
hibernate validator 5.3.4 Final是JSR 303 Bean Validation 1.1的具體實現(xiàn)。
本文跟大家初步了解一下hibernate validator的一些使用技巧。
初步使用hibernate validator主要使用注解的方式對bean進(jìn)行校驗,第一個例子:
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中可以這樣調(diào)用,加上@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) { // } }
如果校驗失敗,默認(rèn)會返回Spring boot 框架的出錯信息。是一個json串,里面有詳細(xì)的出錯描述。
分組校驗在上面的例子中,如果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{}; }
根據(jù)需要在@Validated屬性中指定需要校驗的分組名,可以指定1到多個。指定到的分組名會全部進(jìn)行校驗,不指定的不校驗。
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) { } }總結(jié)
本文初步講解了hibernate validator的使用方式,相信各位看官老爺一定還想了解更多詳細(xì)內(nèi)容和使用技巧。
??當(dāng)面講給你聽?? 講堂地址,新課促銷中,十一前都有折扣,只要你敢來,保你收貨滿滿?。
優(yōu)惠報名 【全程擼碼】Spring Boot 1.5 快速入門教程(全)(原價:文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70528.html
摘要:前言估計很多朋友都認(rèn)為參數(shù)校驗是客戶端的職責(zé),不關(guān)服務(wù)端的事。輕則導(dǎo)致服務(wù)器宕機,重則泄露數(shù)據(jù)。所以,這時就需要設(shè)置第二道關(guān)卡,服務(wù)端驗證了。老項目的服務(wù)端校驗不能為空不能為空看以上代碼,就一個的校驗就如此麻煩。 前言 估計很多朋友都認(rèn)為參數(shù)校驗是客戶端的職責(zé),不關(guān)服務(wù)端的事。其實這是錯誤的,學(xué)過 Web 安全的都知道,客戶端的驗證只是第一道關(guān)卡。它的參數(shù)驗證并不是安全的,一旦被有心人...
摘要:本文主要介紹在中自動校驗的機制。引入依賴我們使用構(gòu)建應(yīng)用來進(jìn)行演示。在中校驗數(shù)據(jù)值得注意的地方參數(shù)前需要加上注解,表明需要對其進(jìn)行校驗,而校驗的信息會存放到其后的中。層改寫方法限定需要進(jìn)行校驗,而方法則不做限制。 簡介 JSR303/JSR-349,hibernate validation,spring validation之間的關(guān)系。JSR303是一項標(biāo)準(zhǔn),JSR-349是其的升級版...
摘要:當(dāng)面講給你聽講堂地址,或許是最實用的教程,新課促銷中,只要你敢來,保你收貨滿滿。優(yōu)惠報名全程擼碼快速入門教程全原價,優(yōu)惠價全程擼碼進(jìn)階全原價,優(yōu)惠價 回顧 Spring Boot - 初識 Hello World Spring Boot - Servlet、過濾器、監(jiān)聽器、攔截器 Spring Boot - 靜態(tài)資源處理、啟動加載、日志處理 Spring Boot - 部署Deplo...
摘要:時間年月日星期三說明使用規(guī)范校驗接口請求參數(shù)源碼第一章理論簡介背景介紹如今互聯(lián)網(wǎng)項目都采用接口形式進(jìn)行開發(fā)。該規(guī)范定義了一個元數(shù)據(jù)模型,默認(rèn)的元數(shù)據(jù)來源是注解。 時間:2017年11月08日星期三說明:使用JSR303規(guī)范校驗http接口請求參數(shù) 源碼:https://github.com/zccodere/s... 第一章:理論簡介 1-1 背景介紹 如今互聯(lián)網(wǎng)項目都采用HTTP接口...
摘要:引言的一個便捷功能是外部化配置,可以輕松訪問屬性文件中定義的屬性。本文將詳細(xì)介紹的使用。 引言 Spring Boot的一個便捷功能是外部化配置,可以輕松訪問屬性文件中定義的屬性。本文將詳細(xì)介紹@ConfigurationProperties的使用。 配置項目POM 在pom.xml中定義Spring-Boot 為parent org.springframework.boot...
閱讀 1638·2021-11-02 14:42
閱讀 534·2021-10-18 13:24
閱讀 973·2021-10-12 10:12
閱讀 1827·2021-09-02 15:41
閱讀 3215·2019-08-30 15:56
閱讀 2885·2019-08-29 16:09
閱讀 2067·2019-08-29 11:13
閱讀 3631·2019-08-28 18:06