springboot 驗證 默認使用的是hibernate validator ,不用額外增加引用包,springboot已經內置包含。
設置pom相關依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itstudy</groupId> <artifactId>demo</artifactId> <version>1.0.0-SNAPSHOT</version> <name>demo</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.30</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
1)定義接收參數實體
package com.study.valid_demo.vo; import javax.validation.constraints.AssertFalse; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.NotBlank; /** * 接收客戶端信息載體 * * @author Administrator * */ public class RegisterVO { @NotBlank(message = "用戶名不能為空") private String userName; @NotBlank(message = "年齡不能為空") @Pattern(regexp = "^[0-9]{1,2}$", message = "年齡不正確") private String age; @AssertFalse(message = "必須為false") private Boolean isFalse; /** * 如果是空,則不校驗,如果不為空,則校驗 */ @Pattern(regexp = "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", message = "出生日期格式不正確") private String birthday; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public Boolean getIsFalse() { return isFalse; } public void setIsFalse(Boolean isFalse) { this.isFalse = isFalse; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } }
2.定義controller
package com.study.valid_demo; import javax.validation.Valid; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import com.study.valid_demo.vo.RegisterVO; @RestController @RequestMapping("/index") public class IndexController { @RequestMapping("/register") @ResponseBody public String register(@RequestBody @Valid RegisterVO register, BindingResult result) { // 使用BindingResult 時,驗證錯誤需要自己處理。應用程序程序正常返回 if (result.hasErrors()) { for (ObjectError error : result.getAllErrors()) { System.out.println(error.getDefaultMessage()); } } return register.getUserName(); } @RequestMapping("/register2") @ResponseBody public String register(@RequestBody @Valid RegisterVO register) { // 不使用ResultBind時,在spring驗證綁定時報400 Badrequest錯誤,並提示錯誤詳細信息 return register.getUserName(); } }
3)項目啟動
import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication app = new SpringApplication(App.class); //關閉banner app.setBannerMode(Banner.Mode.OFF); app.run(args); } }