SpringBoot-9-Validation数据–使数据真实
数据校验是一个项目的基础模块,也许我们一些入门编码没有多久,了解前端的同学会说,我们已经在前端对数据进行了基础的校验了,还需要在后台对数据进行校验?答案是肯定的,因为前端传递给后台的数据没有百分百值得信任的,这是因为一些别有用心的人,可以模拟前端对后台进行数据发送,可能会发送一些操作后台的指令等非法数据,如果这些数据一旦发送到后台那么后果是很严重的。因此后端校验也是必须的,本章节我们介绍SpringBoot的后端数据校验。
1.SpringBoot校验实现
在SpringBoot2.3以前spring-boot-starter-web自带了validation,并且该模块也提供了相对应的数据绑定功能,但是到了springboot2.3以后就变成了以下依赖进行数据校验
1.1添加依赖
<dependency> <groupId>org.springframework.boot</groupId>
1.2 实体注解
@Datapublic class Teacher implements Serializable { @NotBlank(message = "用户名不可为空") private String name; @Min(value = 22,message = "年龄不可小于22") private int age; @Email(message = "邮箱格式错误") private String email;}
1.3 Controller层的实现
@Slf4j@Controllerpublic class TeacherController { @RequestMapping("/index") public String index( Teacher teacher,Model model) { teacher = new Teacher(); teacher.setName("张三"); teacher.setAge(28); teacher.setEmail("1359282905@qq.com"); model.addAttribute("teacherInfo",teacher); return "index"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String add(@ModelAttribute("teacherInfo") @Validated Teacher teacher, BindingResult rs) { System.out.println(rs); if (rs.hasErrors()) { for (ObjectError error : rs.getAllErrors()) { log.debug(error.getDefaultMessage()); } } return "index"; }}
1.4 Thymeleaf前端的实现
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head lang="en"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title th:text="${teacherInfo.name}">xx</title></head><body><h1>信息</h1><div> 姓名:<label th:utext="${teacherInfo.name}"></label><br/> 年龄:<label th:utext="${teacherInfo.age}"></label> <br/> 邮箱:<label th:utext="${teacherInfo.email}"></label><br/></div><h1>表单提交</h1><!-- 表单提交用户信息,注意字段的设置,直接是*{} --><form action="#" th:action="@{/add}" th:object="${teacherInfo}" method="post"> <div><span>姓名</span><input type="text" th:field="*{name}" /> <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}"></span></div> <div><span>年龄</span><input type="text" th:field="*{age}" /> <span th:if="${#fields.hasErrors('age')}" th:errors="*{age}"></span></div> <div><span>邮箱</span><input type="text" th:field="*{email}" /> <span th:if="${#fields.hasErrors('email')}" th:errors="*{email}"></span></div> <input type="submit" /></form></body></html>
访问http://localhost:8080/index然后进行操作:
1.5 Thymeleaf前端的实现