1. 简介我们都知道前台的验证只是为了满足界面的友好性、客户体验性等等 。但是如果仅靠前端进行数据合法性校验,是远远不够的 。因为非法用户可能会直接从客户端获取到请求地址进行非法请求,所以后台的校验是必须的;特别是应用如果不允许输入空值,对数据的合法性有要求的情况下 。
2. 开撸2.1 项目结构

文章插图
结构说明:
├── JAVA│└── com│└── ldx│└── valid│├── ValidApplication.java # 启动类│├── annotation││└── Phone.java # 自定义验证注解│├── config││└── ValidatorConfig.java # 表单验证配置类│├── controller││└── SysUserController.java # 用户管理控制器│├── exception││├── BusinessException.java # 业务异常类││└── GlobalExceptionHandler.java # 统一异常处理类│├── model││├── SysUser.java # 用户信息实体││└── ValidationInterface.java # 表单验证的通用分组接口│├── util││└── CommonResult.java # 接口返回封装类│└── validation│└── PhoneValidator.java #自定义验证实现类└── resources├── application.yaml # 配置文件└── messages└── validation└── messages.properties # 自定义验证信息源2.1 quick start2.1.1 导入依赖创建springboot项目导入以下依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ldx</groupId><artifactId>valid</artifactId><version>0.0.1-SNAPSHOT</version><name>valid</name><description>表单验证demo</description><properties><java.version>1.8</java.version></properties><dependencies><!-- web支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 表单验证 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>2.1.2 添加配置类创建表单验证配置类,配置快速校验,不用等全部的参数校验完,只要有错,马上抛出 。import org.hibernate.validator.HibernateValidator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.ValidatorFactory;/** * 配置 Hibernate 参数校验 * @author ludangxin * @date 2021/8/5 */@Configurationpublic class ValidatorConfig {@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() {MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();//快速校验,只要有错马上返回postProcessor.setValidator(validator());return postProcessor;}@Beanpublic Validator validator() {ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class).configure().addProperty("hibernate.validator.fail_fast", "true").buildValidatorFactory();return validatorFactory.getValidator();}}2.1.3 添加实体类import lombok.*;import javax.validation.constraints.*;import java.io.Serializable;/** * 用户信息管理 * @author ludangxin * @date 2021/8/5 */@Datapublic class SysUserimplements Serializable {private static final long serialVersionUID = 1L;/*** 主键*/private Long id;/*** 用户名*/@NotEmpty(message = "用户名称不能为空")private String username;/*** 密码*/@Size(min = 6, max = 16, message = "密码长度必须在{min}-{max}之间")private String password = "123456";/*** 邮箱地址*/@Email(message = "邮箱地址不合法")@NotEmpty(message = "邮箱不能为空")private String email;/*** 电话*/@Size(min = 11, max = 11, message = "手机号不合法")@NotEmpty(message = "手机号不能为空")private String phone;}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 解读微服务下的契约测试——看微服务如何完整应用系统验证之道
- HTML-表单标签form详细讲解学习
- python怎么验证代理IP是否有效
- 基于 el-form 封装一个依赖 json 动态渲染的表单控件
- 想验证安装的操作系统是否正版,可以这样找到Win10产品密钥
- OAuth2+JWT 实现权限验证
- 用实验来验证宇宙大爆炸理论的科学家是 大爆炸宇宙学在观测上的依据有
- CSS3伪类:valid和:invalid实现表单校验
- k8s部署高可用配置中心apollo-手动验证成功
- JS 内存管理机制及验证
