SpringBoot otimiza o código da camada de controle, usa @Valid para verificar os parâmetros de entrada e personaliza uma anotação de verificação de parâmetro

Na camada do controlador, primeiro use a anotação @Valid para verificar os dados, vá para a classe definida por você e o parâmetro de entrada correspondente, verifique os requisitos do parâmetro correspondente e
aceite-o no controlador.

 @PostMapping(value = "/login_submit")
    public ResponseResult<Boolean> login_submit(@Valid LoginVo loginVo) {
    
    
        userService.checkLogin(loginVo);
        return ResponseResult.success(true);
    }

Insira o LoginVo da classe correspondente do parâmetro de entrada para verificação.
A dependência de verificação de parâmetro é necessária

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
import com.example.validator.IsPhone;
import lombok.Data;
import javax.validation.constraints.NotEmpty;

@Data
public class LoginVo {
    
    

    @NotEmpty(message = "手机号不能为空!")//该注解只能验证String
    @IsPhone//check phone
    private String phone;

    @NotEmpty(message = "密码不能为空!")
    private String password;
}

O validador fornece algumas verificações de anotação, como a verificação não pode estar vazia, caixas de correio e semelhantes.
Aqui, @IsPhone é uma verificação de anotação autodefinida do número de telefone celular.
Primeiro, você deve escrever a classe correspondente a esta interface e, em seguida, escrever para implementar funções específicas.Classe de validação, as regras de validação específicas aqui podem ser uma classe de regra de validador separada.
1. Interface personalizada

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Target({
    
    ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
        validatedBy = {
    
    IsPhoneValidator.class}
)
public @interface IsPhone {
    
    

    boolean required() default false;
    String message() default "手机号格式错误,请重新输入!";
    Class<?>[] groups() default {
    
    };
    Class<? extends Payload>[] payload() default {
    
    };

}

2. Classe de implementação do validador específico

import com.example.util.ValidatorUtil;
import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class IsPhoneValidator implements ConstraintValidator<IsPhone,String> {
    
    

    private boolean required = false;
    public void initialize(IsPhone constraintAnnotation) {
    
    
        required = constraintAnnotation.required();
    }

    public boolean isValid(String value, ConstraintValidatorContext var2){
    
    
        if(required){
    
    
            return ValidatorUtil.isPhone(value);
        }else {
    
    
            if(StringUtils.isEmpty(value)){
    
    
                return true;
            }else {
    
    
                return ValidatorUtil.isPhone(value);
            }
        }
    }

}

3. Classe de util de regras de validação

import org.apache.commons.lang3.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidatorUtil {
    
    
    private static final Pattern phone_patten = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$");
    public static boolean isPhone(String str){
    
    
        if(StringUtils.isEmpty(str)){
    
    
            return false;
        }
        Matcher m = phone_patten.matcher(str);
        return m.matches();
    }
}

Acho que você gosta

Origin blog.csdn.net/Wangdiankun/article/details/106176103
Recomendado
Clasificación