后端校验(hibernate-validator)

简介: 后端校验(hibernate-validator)


一、介绍和依赖

🌻 在 SpringBoot 项目中配置如下依赖:🌻

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

二、方法的 Model 参数校验

🌻 使用步骤

① 在 Model 的 get 方法或成员变量添加相关的校验注解

② 给方法的 Model 参数添加 @Valid 注解

🌻 若校验失败会抛异常

① org.springframework.validation.BindException

② 通过 BindException.getBindingResult().getAllErrors() 可拿到全部的错误信息

三、方法的非 Model 参数校验

🌻 使用步骤

① 给 Controller 添加 @Validated 注解

② 给非 Model 参数添加相关的校验注解

🌻 校验失败会抛异常

① javax.validation.ConstraintViolationException

② 通过 ConstraintViolationException.getConstraintViolations 可拿到全部的错误信息

四、常用注解

@NotNull: 不能为 null,可以为空串

@NotEmpty: 不能为 null,且长度必须大于 0

@NotBlank: 只能作用在 String 上,不能为 null,且去除空格后长度必须大于 0

@AssertFalse:必须为 false

@AssertTrue:必须为 true

@Max、@DecimalMax:必须为一个不大于指定值的数字

@Min、@DecimalMin:必须为一个不小于指定值的数字

@Digits: 必须为一个小数,且整数部分的位数不能超过 integer,小数部分的位数不能超过 fraction

@Email:必须是 Email,也可以通过正则表达式和 flag 指定自定义的 Email 格式

@Future:必须是一个将来的日期

@Past:必须是一个过去的日期

@Range:必须在指定的范围内

@Size、@Length:长度必须在 min 到 max 之间

@Pattern: 必须符合指定的正则表达式

五、快速失败

🌻 默认情况是检查完全部的错误后才统一抛异常

🌻 可以设置快速失败:只要检测到一个错误,就直接抛出异常,不再继续检测

@Configuration
public class ValidatorConfig {
    @Bean
    public Validator validator() {
        return Validation.byProvider(HibernateValidator.class)
                .configure()
                .failFast(true)
                .buildValidatorFactory()
                .getValidator();
    }
}

六、自定义校验规则

/**
 * @author 庆医
 * @describe 自定义【hibernate-validator】的校验注解
 * 校验手机号码
 */
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = IsRightPhone.isRightPhoneValidator.class)
public @interface IsRightPhone {
    String message() default "手机号码格式错误";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
    class isRightPhoneValidator implements ConstraintValidator<IsRightPhone, String> {
        @Override
        public boolean isValid(String val,
                               ConstraintValidatorContext context) {
            if (null == val || val.length() != 11) return false;
            return val.matches("^((19[0-9])|(13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$");
        }
    }
}

相关文章
|
10月前
|
缓存 NoSQL 前端开发
【Go】基于 Gin 从0到1搭建 Web 管理后台系统后端服务(三)路由、自定义校验器和 Redis
【Go】基于 Gin 从0到1搭建 Web 管理后台系统后端服务(三)路由、自定义校验器和 Redis
|
前端开发 安全 Java
前端校验和后端校验的区别和优缺点
前端校验和后端校验的区别和优缺点
733 0
前端校验和后端校验的区别和优缺点
|
存储 中间件 关系型数据库
【Node.js+koa--后端管理系统】用户注册接口设计 | 连接Mysql数据库 | 校验注册权限
【Node.js+koa--后端管理系统】用户注册接口设计 | 连接Mysql数据库 | 校验注册权限
226 0
【Node.js+koa--后端管理系统】用户注册接口设计 | 连接Mysql数据库 | 校验注册权限
|
Java 数据库连接
SpringBoot 2.0参数校验Hibernate Validator
SpringBoot 2.0参数校验Hibernate Validator
SpringBoot 2.0参数校验Hibernate Validator
|
Java 数据库连接 程序员
SpringBoot 2.0参数校验Hibernate Validator
Spring Boot (v2.0.5.RELEASE)Hibernate Validator springboot起步依赖自动添加了对hibernate validator的依赖 hibernate validator依赖 或者也可以自己手动添加依赖 org.
4270 0
|
前端开发
常用后端正则校验
单单前端校验是不安全的,所以后端的校验同样必不可少。 后端正则检验表单 public void GetValidate() { string email = Request["email"]; if (!Regex.
1080 0
|
Java 数据库连接
JSR303校验框架介绍和Hibernate Validator扩展
JSR303 校验框架介绍: • JSR303 用于对JavaBean 中的字段的值进行验证,使得验证逻辑从业务代码中脱离出来 • 是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回 • 一般用于表单提交页面(如用户名必填、只能由数字字母组成等等) JSR...
|
18天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
20天前
|
前端开发 小程序 Java
uniapp上传图片 前端以及java后端代码实现
uniapp上传图片 前端以及java后端代码实现
33 0
|
1月前
|
JSON 前端开发 Java
layui上传图片,前端直接拷代码,后端……
layui上传图片,前端直接拷代码,后端……
30 0