当要对用户输入的参数进行校验时,可以用javax.validation.Validation包下的注解进行验证,实现简单,并且是基于JSR-303标准的。
1 2 3 4 |
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> |
1 2 3 4 5 |
@RequestMapping("/login") @ResponseBody //使用@Valid注解进行参数校验,减少代码冗余度 public String login(@Valid LoginVo loginVo) { } |
1 2 3 4 5 6 7 8 9 |
public class LoginVo { @NotNull // 不允许为空 @isEmail //自定义注解 private String Email; @NotNull @Length(min = 32)//长度限制,最短为32位 private String password; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//参照javax.validation.constraints包下的NotNull注解进行自定义自己的注解,添加以下四个注解 @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented @Constraint(validatedBy = {isEmailValidator.class})// 通过Constraint注解器中的validatedBy参数,调用相应的类进行规则判定 public @interface isEmail { String message() default "email 格式错误"; //对email进行验证,验证不通过时返回的消息 Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; //参照javax.validation.constraints;包下的NotNull注解进行自定义自己的注解,以上三个函数是必须的 // 自定义一个函数,设置是否允许参数为空 boolean notNull() default true; //默认设置为不允许为空 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
//规则判定的校验类需要实现ConstraintValidator接口,并实现其中的方法。<isEmail, String>对应于特定的注解和用户输入的字段类型 public class isEmailValidator implements ConstraintValidator<isEmail, String> { private boolean notNull = false; @Override public void initialize(isEmail constraintAnnotation) { //初始化这个方法可以取到isEmail这个注解以及其中的内容 notNull = constraintAnnotation.notNull();//将注解器中的内容取出 } // value为用户输入的内容,通过这个方法进行对value校验是否合法 @Override public boolean isValid(String value, ConstraintValidatorContext context) { //不允许为空 if (notNull) { return isEmail(value); } else {//允许为空 if (value == null) { return true; } else { return isEmail(value); } } } // 进行email匹配,使用正则表达式匹配 public static final Pattern email_pattern = Pattern.compile("^[A-Za-z\\d]+([-_.][A-Za-z\\d]+)*@([A-Za-z\\d]+[-.])+[A-Za-z\\d]{2,4}$"); public static boolean isEmail(String email) { if (email == null) { return false; } Matcher matcher = email_pattern.matcher(email); return matcher.matches(); } } |
from:https://blog.csdn.net/dazou1/article/details/89313731