数据校验就是数据的合法性检查,在服务器端也可以对数据进行校验,一般使用JSR303
校验
-
JSR303是Java为Bean数据合法性校验提供的标准框架,是一种声明式校验
-
JSR303通过在Bean属性上标注类似于@NotNull、@Max等注解来指定校验规则,并通过标准的验证接口对Bean进行验证
注解 | 功能 |
---|---|
@Null | 必须为null |
@NotNull | 不能为null |
@NotBlank | 字符串不能为null,且长度大于 0,会去掉前后空格 |
@Max(value) | 数字必须小于等于指定值 |
@Min(value) | 数字必须大于等于指定值 |
@Size(min,max) | 长度必须在指定的范围内(可以是字符串、数组、集合等) |
@Past | 时间必须是过去的时间 |
@Future | 时间必须是将来的时间 |
@Pattern | 必须符合指定的正则表达式 |
JSR303的扩展: Hibernate Validator扩展注解
-
Hibernate Validator是JSR303的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解
注解 | 功能 |
---|---|
@Length(min,max) | 字符串长度必须在指定范围之间 |
@NotEmpty | 字符串不能为空 |
必须是合法的邮箱 | |
@Range(min,max,message) | 数值必须在指定的范围内 |
5.2 基本用法
步骤:
-
添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>
-
在Bean上添加校验注解
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {private Integer id;
@NotBlank(message = "用户名不能为空")private String username;
@NotBlank(message = "密码不能为空")@Length(min = 6,max = 12,message = "密码长度必须在6~12之间")private String password;
@Range(min = 18,max = 30,message = "年龄只能在18~30之间")private int age;
@NotNull(message = "生日不能为空")@Past(message = "生日必须是过去的时间")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;
}
- 在方法形参前添加
@Valid
注解
@RestController
public class AjaxController {@RequestMapping("/addUser")public String addUser(@Valid User user){ // @Valid 开启对User对象的数据校验System.out.println(user);return "success";}
}