SpringBootは、コントロールレイヤーコードを最適化し、@ Validを使用して受信パラメーターを検証し、パラメーター検証アノテーションをカスタマイズします

コントローラ層では、まず、自分自身と対応する入力パラメータで定義されたクラスに行って、データを検証し、対応するパラメータの要件を確認し、する@Validアノテーションを使用して
、コントローラにそれを受け入れます。

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

検証のために、着信パラメーターの対応するクラスのLoginVoを入力します。
パラメーター検証の依存関係が必要です。

<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;
}

バリデーターは、検証を空にすることはできない、メールボックスなど、いくつかの注釈検証を提供します。
ここで、@ IsPhoneは携帯電話番号の自己定義の注釈検証です。
最初に、このインターフェースに対応するクラスを記述し、次にこのインターフェースに対応するクラスを記述する必要があります特定の関数を実装するために記述します。バリデータークラス。ここでの特定の検証ルールは、個別のバリデータールールクラスにすることができます。
1.カスタムインターフェイス

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.特定のバリデーター実装クラス

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.検証ルールutilクラス

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();
    }
}

おすすめ

転載: blog.csdn.net/Wangdiankun/article/details/106176103