数据校验的前提需要开启数据校验
在controller类上加上@Validated,否则将不生效
@RestController
@RequestMapping("/exam")
@Validated
一、对象参数检查
public class LoginVO {
@NotBlank
@Size(min = 6, max = 32)
private String userName;
@NotBlank
@Size(min = 6, max = 31)
private String userPassword;
@NotBlank
private String key;
@NotBlank
private String captcha;
}
二、某些参数检查
public ResultUtil scoreSave(@Size(min = 1,max = 32,message = "userId长度必须为1到32") @RequestParam("userId") String userId,
@Size(min = 1,max = 64,message = "userName长度必须为1到64") @RequestParam("userName") String userName,
@Min(value = 0,message = "分数最小为0")@Max(value = 100,message = "分数最大为100") @RequestParam("score") Double score,
@Size(min = 1,max = 32,message = "tableName长度必须为1到32") @RequestParam("tableName") String tableName)
三、常见的数据校验
@Valid 被注释的元素是一个对象,需要检查此对象的所有字段值
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式
- Hibernate Validator 附加的 constraint
注解 作用
@Email 被注释的元素必须是电子邮箱地址
@Length(min=, max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=, max=) 被注释的元素必须在合适的范围内
@NotBlank 被注释的字符串的必须非空
@URL(protocol=,
host=, port=,
regexp=, flags=) 被注释的字符串必须是一个有效的url
@CreditCardNumber
被注释的字符串必须通过Luhn校验算法,
银行卡,信用卡等号码一般都用Luhn
计算合法性
@ScriptAssert
(lang=, script=, alias=) 要有Java Scripting API 即JSR 223
("Scripting for the JavaTM Platform")的实现
@SafeHtml
(whitelistType=,
additionalTags=) classpath中要有jsoup包
hibernate补充的注解中,最后3个不常用,可忽略。
主要区分下@NotNull @NotEmpty @NotBlank 3个注解的区别:
@NotNull 任何对象的value不能为null
@NotEmpty 集合对象的元素不为0,即集合不为空,也可以用于字符串不为null
@NotBlank 只能用于字符串不为null,并且字符串trim()以后length要大于0
四、数据校验的异常以及处理方法
数据校验返回的异常为:
javax.validation.ConstraintViolationException
可以对该异常进行处理
5、参考
参考:https://www.jianshu.com/p/89a675b7c900
参考:https://blog.csdn.net/u011851478/article/details/51842157