SpringBoot后端进行数据校验JSR303的使用详解
如果只想查看注解,请跳到文章末尾部分
简介
在前后端进行数据交互中,在前端把数据传送到后端前,一般会先进行校验一次,校验成功之后,才把数据发送到后端。但是我们在服务端还得在对数据进行一次校验。因为请求数据发送的链接很容易获取,可以不经过前端界面,使用postman等工具直接向后台发送数据,这就可能造成发送的数据是不合法的情况。
项目创建
首先创建一个springboot项目
使用的springboot版本为:(本文代码以该版本为准,不同版本springboot,在下面内容会出现一些差异)
org.springframework.boot spring-boot-starter-parent 2.3.9.RELEASE
引入如下依赖
org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.springframework.boot spring-boot-starter-validation
这个作标在新一点的springboot版本中,需要单独引入。在老版本是默认引入的。这个是用来引入对jsr303注解的支持。
org.springframework.boot spring-boot-starter-validation
接着创建一个JavaBean
packagecn.jxj4869.demo.entity; importlombok.Data; importjavax.validation.constraints.NotNull; @Data publicclassUser{ @NotNull privateIntegerid; privateStringusername; privateStringpassword; privateStringemail; }
返回类型的JavaBean
packagecn.jxj4869.demo.entity; importjava.util.HashMap; publicclassRextendsHashMap{ privatestaticfinallongserialVersionUID=1L; publicR(){ put("code",0); put("msg","success"); } publicstaticRerror(intcode,Stringmsg){ Rr=newR(); r.put("code",code); r.put("msg",msg); returnr; } publicstaticRok(Stringmsg){ Rr=newR(); r.put("msg",msg); returnr; } publicRput(Stringkey,Objectvalue){ super.put(key,value); returnthis; } }
创建一个controller。
index方法用来跳转到首页。
packagecn.jxj4869.demo.controller; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.*; @Controller publicclassUserController{ @RequestMapping("/") publicStringindex(){ return"index"; } }
首页代码放到resources/templates目录下
Title 新增表单
更新表单