我们如果对数据能进行格式校验 做个安全检查就会容易很多
其实 各个系统中都必然后拥有数据校验,这也不是新东西
J2EE规范中JSR303就规范定义了一组有关数据校验的API
首先 我们在 pom.xml 中 注入依赖
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
这里 我们不需要去声明版本 因为 我们项目的配置会自动帮你找到适配的坐标
这是个什么东西呢? 大个比方 JDBC都用过吧? 那么 它是一个接口 我们数据库驱动才是具体的实现类 接口提供了规范 实现方式必须符合规范 而我们这个 也是一个规范
然后 我们可以打开需要数据校验的类 放上 Validated 表示 我们要对他进行数据校验
但这里 我们只是声明了 要对这个类做字段校验 具体校验谁?怎么校验? 都没有说清楚
比如 我们要设置个最大值不可超过 我们可以 用 validation 中提供的 Max 注解来实现 value是设置最大不能超过多少 message 则表示 如果超过了 给什么样的提示
同理 我们可以设置最小
然后 我们先将最小的校验注释掉 然后 运行项目看一下
这里 我们会遇到一个错误 简单说 你这个数据校验的接口 并没有东西去实现它
这下面它有个我们提示 Hibernate 校验器
这里还是一样的 在pom.xml中注入依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
还是不用去纠结它的版本坐标 它会自动帮我们导入适配的 你手动导入 才可能出现版本不适配的情况
注入之后 我们启动项目 就一切正常了
然后 我们触发逻辑 去拿这个属性类的属性 这里 他是个 负一 那么 肯定是触发不到最大值的
这里 我们给他来个 9999
这样 我们启动项目时 他就直接报错了
这个报错信息 我觉得还是非常厉害的 信息可以说非常全面
告诉我们发生的位置 我们还可以自己写错误信息
其实他的规则还是非常多 全面 这个大家要用数据校验可以去查一查validation 还是非常好用的