页面加载中
博客快捷键
按住 Shift 键查看可用快捷键
ShiftK
开启/关闭快捷键功能
ShiftA
打开/关闭中控台
ShiftD
深色/浅色显示模式
ShiftS
站内搜索
ShiftR
随机访问
ShiftH
返回首页
ShiftL
友链页面
ShiftP
关于本站
ShiftI
原版/本站右键菜单
松开 Shift 键或点击外部区域关闭
互动
最近评论
暂无评论
标签
寻找感兴趣的领域
暂无标签
    0
    文章
    0
    标签
    8
    分类
    10
    评论
    128
    功能
    深色模式
    标签
    JavaScript12TypeScript8React15Next.js6Vue10Node.js7CSS5前端20
    互动
    最近评论
    暂无评论
    标签
    寻找感兴趣的领域
    暂无标签
      0
      文章
      0
      标签
      8
      分类
      10
      评论
      128
      功能
      深色模式
      标签
      JavaScript12TypeScript8React15Next.js6Vue10Node.js7CSS5前端20
      未知歌曲
      未播放
      ♪ 暂无歌词 ♪
      随便逛逛
      博客分类
      文章标签
      复制地址
      深色模式
      AnHeYuAnHeYu
      Search⌘K
      博客
        暂无其他文档

        Spring Boot 如何做请求参数校验

        本文介绍Spring Boot中请求参数校验的实现方式,主要通过`javax.validation`注解配合`@Valid`或`@Validated`完成。常用注解包括`@NotNull`、`@Email`、`@Size`等,可在实体类字段上直接使用。`@Valid`用于Controller层开启校验,`@Validated`支持方法级别校验及分组功能。校验失败时可通过`BindingResult`或`@ControllerAdvice`处理错误,实现灵活且易于维护的参数验证机制。

        January 4, 20244 分钟 阅读4 次阅读

        有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准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或全局异常处理来管理错误信息。这不仅让你的应用更加安全,而且使得代码易于理解和维护。

        最后更新于 January 4, 2024
        On this page
        暂无目录