Springboot校验工具类详细代码示例
作者:憨憨小江
这篇文章主要给大家介绍了关于Springboot校验工具类的相关资料,工具类里面主要是封装了一些常用字段验证方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
校验工具类
这个实现逻辑很简单,就是调用string的正则表达式
我这里的代码要导入糊涂工具包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.17</version>
</dependency>
import cn.hutool.core.util.StrUtil;
public class RegexUtils {
/**
* 是否是无效手机格式
* @param phone 要校验的手机号
* @return true:符合,false:不符合
*/
public static boolean isPhoneInvalid(String phone){
return mismatch(phone, RegexPatterns.PHONE_REGEX);
}
/**
* 是否是无效邮箱格式
* @param email 要校验的邮箱
* @return true:符合,false:不符合
*/
public static boolean isEmailInvalid(String email){
return mismatch(email, RegexPatterns.EMAIL_REGEX);
}
/**
* 是否是无效验证码格式
* @param code 要校验的验证码
* @return true:符合,false:不符合
*/
public static boolean isCodeInvalid(String code){
return mismatch(code, RegexPatterns.VERIFY_CODE_REGEX);
}
// 校验是否不符合正则格式
private static boolean mismatch(String str, String regex){
if (StrUtil.isBlank(str)) {
return true;
}
return !str.matches(regex);
}
}
正则表达式常量类
public abstract class RegexPatterns {
/**
* 手机号正则
*/
public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";
/**
* 邮箱正则
*/
public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
/**
* 密码正则。4~32位的字母、数字、下划线
*/
public static final String PASSWORD_REGEX = "^\\w{4,32}$";
/**
* 验证码正则, 6位数字或字母
*/
public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$";
}附:自定义注解工具类
还有一些情况,如果业务逻辑实在比较复杂,前端传递来的是字符串,在service层才转换成对象的时候,就只能自定义校验工具类了。
我写了个demo,还是很好用的,不过需要手动调用校验方法
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.http.HttpStatus;
import javax.validation.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Set;
/**
* @Author : wangbin
* @Date : 2023/2/16 14:49
* @Description:
*/
public class ValidationUtils {
public static void validate(@Valid Object user,Class<?> ... clazz) {
try (ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
Validator validator = factory.getValidator();
if(clazz==null){
clazz=new Class[0];
}
Set<ConstraintViolation<@Valid Object>> validateSet = validator.validate(user,clazz );
if (!CollectionUtils.isEmpty(validateSet)) {
String messages = validateSet.stream()
.map(ConstraintViolation::getMessage)
.reduce((m1, m2) -> m1 + ";" + m2)
.orElse("参数输入有误!");
throw DataImportException.httpError(HttpStatus.BAD_REQUEST,messages);
}
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
static class User {
@NotNull(message = "姓名不能为空",groups = ProcessInfoUpdateGroup.class)
private String name;
@Max(value = 200, message = "age不能超200")
@Min(value = 0, message = "age不能小于0",groups = ProcessInfoCreateGroup.class)
private Integer age;
}
public static void main(String[] args) {
User wb = new User(null, 201);
String s = com.alibaba.fastjson.JSON.toJSONString(wb);
User user = JSON.parseObject(s, User.class);
validate(user);
}
}总结
到此这篇关于Springboot校验工具类的文章就介绍到这了,更多相关Springboot校验工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
