有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`
Spring Boot 请求参数校验
Spring Boot 提供了多种方式来进行请求参数校验。通常这是通过javax.validation的注解以及Spring的@Valid或@Validated来完成的。接下来,我们将详细介绍如何使用这些工具来校验请求参数。
使用 @Valid 注解
当你使用Spring MVC时,可以在Controller层使用@Valid注解来开启校验功能。
示例:
@PostMapping("/user")
public ResponseEntity<String> addUser(@Valid @RequestBody User user) {
// 处理user
return ResponseEntity.ok("User is valid");
}
支持的校验注解
这里是一些常用的javax.validation注解列表:
@NotNull:确保字段不是null@NotEmpty:确保字段不是null或者空@NotBlank:确保字段不是null、空或者空白字符@Min(value):确保字段的值至少为value@Max(value):确保字段的值最多为value@Size(min=, max=):确保字段的值的大小在min和max之间@Email:确保字段是一个电子邮件地址@Pattern(regex=):确保字段匹配正则表达式
实体类中的使用:
public class User {
@NotBlank(message = "Name is mandatory")
private String name;
@Email(message = "Email should be valid")
private String email;
// ... 其他字段和方法
}
使用 @Validated 注解
@Validated是Spring提供的另一个注解,它可以被用于方法级别的校验,并且可以定义校验组。
示例:
@Controller
public class UserController {
@RequestMapping(value = "/user/save", method = RequestMethod.POST)
public String saveUser(@Validated(User.Advanced.class) User user, BindingResult result) {
if (result.hasErrors()) {
// 处理错误
}
// ... 存储用户
return "UserDetails";
}
}
错误处理
当校验失败时,Spring会抛出MethodArgumentNotValidException,你可以在Controller中通过BindingResult来处理这些错误。
示例:
@PostMapping("/user")
public ResponseEntity<String> addUser(@Valid @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
String errorMsg = result.getAllErrors()
.stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining(", "));
return ResponseEntity.badRequest().body(errorMsg);
}
return ResponseEntity.ok("User is valid");
}
你还可以通过@ControllerAdvice来全局处理校验错误。
总结
Spring Boot通过集成javax.validation提供了功能强大且灵活的参数校验机制。你可以通过在字段上简单地添加注解,以及在Controller方法中使用@Valid或@Validated注解来进行开箱即用的参数校验,并通过BindingResult或全局异常处理来管理错误信息。这不仅让你的应用更加安全,而且使得代码易于理解和维护。
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 小朱
评论
隐私政策
0/500
滚动到此处加载评论...


