前言
在讨论什么是JSR303之前,我们需要思考一下我们在日常开发中是如何对前端传过来的参数做校验的,这时候就会有人会问了:前端不是已经校验过数据了吗?为什么我们还要做校验呢,直接用不就好了?草率了,假如说前端代码校验没写好又或者是对于会一点编程的人来说,直接绕过前端发请求,把一些错误的参数传过来,你后端代码不就危险了嘛。所以我们一般都是前端一套校验,后端在一套校验,这样安全性就能够大大得到提升了。而没有没有接触过JSR303之前我们一般都是这样校验数据的:
显然这样的操作太过于繁琐,太多的if,else。而接触过JSR303之后我们可以这样来校验参数:
是不是很简单,废话不多说让我们开始学习JSR303吧。
什么是JSR303
JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint(约束) 的实现,除此之外还有一些附加的 constraint。
初体验
依赖
在pom.xml引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
实际上,spring-boot-starter-validation依赖主要是为了引入下面这个依赖:
<dependency>
<groupId>org.hibernate.validator</groupId