下面我来详细讲解“Spring Boot整合JSR303校验功能实现代码”的完整攻略。
什么是JSR303校验功能?
JSR303校验功能是指一种JavaBean的校验方式,用于对JavaBean的属性进行自定义校验,从而实现对表单数据合法性的校验。它基于注解实现,注解具有可读性强、可扩展性强的特点,而且使用非常简单。
Spring Boot整合JSR303校验功能实现步骤
1. 添加依赖
在pom.xml
中添加如下依赖:
<!-- JSR303校验依赖 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- Hibernate Validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.18.Final</version>
</dependency>
2. 定义POJO
定义一个POJO类,并在其属性上添加JSR303校验注解,如下所示:
@Data
public class User {
@NotNull(message = "姓名不能为空")
private String name;
@Size(min = 6, max = 20, message = "密码长度应为6-20位")
private String password;
@Email(message = "邮箱格式不正确")
private String email;
}
3. 添加Controller
添加Controller类,并在其方法参数上添加@Valid
注解,同时添加BindingResult
参数接收JSR303校验结果。如下所示:
@RestController
public class UserController {
@PostMapping("/user")
public String addUser(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
StringBuilder msg = new StringBuilder();
List<ObjectError> errors = result.getAllErrors();
for (ObjectError error : errors) {
msg.append(error.getDefaultMessage()).append("<br>");
}
return msg.toString();
}
// 保存用户信息
return "success";
}
}
4. 编写前端代码
编写前端页面,并使用name
属性与POJO类属性名对应,如下所示:
<form th:action="@{/user}" method="post">
<div>
<label>姓名:</label>
<input type="text" name="name"/>
</div>
<div>
<label>密码:</label>
<input type="password" name="password"/>
</div>
<div>
<label>邮箱:</label>
<input type="text" name="email"/>
</div>
<div>
<button type="submit">提交</button>
</div>
</form>
5. 启动应用
在启动类中添加@EnableWebMvc
注解,启动应用。在表单提交时,JSR303校验会自动对数据进行校验,校验失败时会返回错误信息。
以上为Spring Boot整合JSR303校验功能的步骤。
示例
接下来我会用两个示例来演示JSR303校验功能的使用。
示例1:校验用户信息
假设我们现在需要开发一个注册页面,需要对用户信息进行校验。首先根据上述步骤,我们定义一个User
类:
@Data
public class User {
@NotNull(message = "姓名不能为空")
private String name;
@Size(min = 6, max = 20, message = "密码长度应为6-20位")
private String password;
@Email(message = "邮箱格式不正确")
private String email;
}
然后编写Controller类:
@RestController
public class UserController {
@PostMapping("/user")
public String addUser(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
StringBuilder msg = new StringBuilder();
List<ObjectError> errors = result.getAllErrors();
for (ObjectError error : errors) {
msg.append(error.getDefaultMessage()).append("<br>");
}
return msg.toString();
}
// 保存用户信息
return "success";
}
}
最后编写前端页面,使用Thymeleaf模板引擎实现数据绑定:
<form th:action="@{/user}" method="post">
<div>
<label>姓名:</label>
<input type="text" name="name"/>
</div>
<div>
<label>密码:</label>
<input type="password" name="password"/>
</div>
<div>
<label>邮箱:</label>
<input type="text" name="email"/>
</div>
<div>
<button type="submit">提交</button>
</div>
</form>
当我们提交表单时,JSR303校验会自动对数据进行校验,校验失败时会返回错误信息。
示例2:校验API入参
假设我们现在需要开发一个API,需要对请求参数进行校验。例如,我们需要实现一个获取用户信息的接口,入参为用户ID。首先根据上述步骤,我们定义一个UserId
类:
@Data
public class UserId {
@NotNull(message = "用户ID不能为空")
private Long id;
}
然后编写Controller类:
@RestController
public class UserController {
@GetMapping("/user/{id}")
public String getUserInfo(@Valid UserId id, BindingResult result) {
if (result.hasErrors()) {
StringBuilder msg = new StringBuilder();
List<ObjectError> errors = result.getAllErrors();
for (ObjectError error : errors) {
msg.append(error.getDefaultMessage()).append("<br>");
}
return msg.toString();
}
// 根据ID获取用户信息
return "success";
}
}
最后我们可以使用Postman进行测试,在URL路径中传入ID参数,如/user/1
,JSR303校验会自动对请求参数进行校验,校验失败时会返回错误信息。
以上两个示例演示了JSR303校验功能的使用方法,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合JSR303校验功能实现代码 - Python技术站