asp网站漏洞修复插件,站长工具seo综合查询怎么看数据,长沙网站设计我选刻,徐州市专业做网站的公司很多时候我们需要使用不少if、else等等逻辑判断及验证#xff0c;这样在进行一些重复的参数校验会很麻烦#xff0c;且以后要维护也会吃力。 而这样就可以使用javax.validation。验证#xff08;Validation#xff09;常见的验证操作包括验证数据的类型、格式、长度、范围、… 很多时候我们需要使用不少if、else等等逻辑判断及验证这样在进行一些重复的参数校验会很麻烦且以后要维护也会吃力。 而这样就可以使用javax.validation。验证Validation常见的验证操作包括验证数据的类型、格式、长度、范围、唯一性等 javax.validation 包Java SE 6 中引入了 javax.validation 包作为 Bean Validation 规范的一部分。这个包提供了一组注解和接口可以方便地进行数据验证。
!-- validation组件依赖--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId
/dependency 而对于一般写在业务逻辑类中的参数校验语句可以省略。如将Valid注解填写在登录接口的方法参数中
PostMapping(/login)
public RespBean login(Valid RequestBody User user) {log.info({}, user);return userService.login(user);
} Valid 注解对入参进行相应的校验
注解使用在方法参数上然后对于参数的校验要求可去参数的实体类进行校验条件的填写。
/*** author Z* date 2023/9/27 21:25*/
Data
public class User {NotNull //账号非空//这个Mobile是自定义判断注解下面有对其的创建进行详细的讲解Mobile(required true) private String mobile;
NotNull //密码非空Length(min 32) //长度的限制private String password;
}
以及如 Size(min1, max12) 代表长度在 1 ~ 12 字符之间。其他一些判断的注解可以去该导入的外部库查看。
也可以自定判断条件注解如Mobile这个自定义的注解
1.创建软件包Validation
2.创建需要的注解Mobile
3.而对于这个注解的写法直接去拷贝javax.validation 包中已经写好的注解如Notnull注解进行修改有报错的地方就删除不用即可 Notnull注解如下 Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
Retention(RetentionPolicy.RUNTIME)
Repeatable(NotNull.List.class) //爆红了删除
Documented
Constraint(validatedBy {}) //校验规则的定义
public interface NotNull {String message() default {javax.validation.constraints.NotNull.message};//修改校验的消息
Class?[] groups() default {};
Class? extends Payload[] payload() default {};
}
而在这里在添加一条属性代表必填 boolean required() default true; 自定义的Mobile如下
/*** author Z* date 2023/9/28 8:53*/
Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
Retention(RetentionPolicy.RUNTIME)
Documented
//自己定义校验规则的一个类MobileValidator.class 手机号码校验规则类
//将自定义规则类放进Constraint(validatedBy{}) 中
Constraint(validatedBy {MobileValidator.class})
public interface Mobile {
boolean required() default true;
//信息抛出的是BindException前端页面接收的话我们要进行异常的捕获String message() default 手机号码格式错误;
Class?[] groups() default {};
Class? extends Payload[] payload() default {};
}
而我们需要进行自己定义检验规则创建一个校验规则类并将其放进Constraint(validatedBy{}) 中 自定义校验规则类
/*** 手机号码校验规则** author Z* date 2023/9/28 8:56*/
public class MobileValidator implements ConstraintValidatorMobile, String {
private boolean required false;
//初始化获取是否需要是必填的Overridepublic void initialize(Mobile constraintAnnotation) {//获取到填的值:true或者falserequired constraintAnnotation.required();}
Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {//必填则使用手机号码校验工具类去校验if (required){return ValidatorUtil.Mobile(value);//非必填}else {if (StringUtils.isEmpty(value)){ //传的号码为空return true;}else {//传的号码非空则使用手机号码校验工具类去校验return ValidatorUtil.isMobile(value);}}}
} 而对于手机号码的校验工具类
添加依赖
dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactId
/dependency
使用正则表达进行手机号码的校验
import org.apache.commons.lang3.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*** 手机号码校验类 (使用正则表达式)** author Z* date 2023/9/27 21:45*/
public class ValidatorUtil {
private static final Pattern mobile_pattern Pattern.compile([1]([3-9])[0-9]{9}$);
public static boolean Mobile(String mobile) {if (StringUtils.isEmpty(mobile)){return false;}Matcher matcher mobile_pattern.matcher(mobile);return matcher.matches();}
}