spring boot输入数据校验(validation)的实现过程

下面我来给您讲解关于spring boot输入数据校验(validation)的实现过程的完整攻略。

1. 简介

Spring Boot提供了一种简单的方法来在Web应用程序中轻松实现输入数据的校验。它可以通过使用声明式注解进行实现,这些注解在处理表单输入时特别有用。

1.1 常用的校验注解

Spring Boot中常用的校验注解包括:

  • @NotNull:验证对象不为空
  • @NotBlank:验证字符串不为空字符串或null
  • @NotEmpty:验证字符串、集合、map等不为空

1.2 实现方式

Spring Boot提供了两种校验方式:

  • 使用注解实现
  • 自定义实现

2. 使用注解实现

2.1 步骤

使用注解实现输入数据校验的步骤如下:

  1. 导入validation的starter

在pom.xml文件中添加以下依赖:

<!-- validation starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  1. 创建校验实体类

在实体类中使用注解对字段进行校验,例如:

public class User {

    @NotNull(message = "用户名不能为空")
    private String username;

    @NotBlank(message = "密码不能为空")
    private String password;

    @Email(message = "电子邮件地址格式不正确")
    private String email;

    // getter and setter 略去
}
  1. 添加校验逻辑

在Controller中使用@Valid注解对实体进行校验,例如:

@RestController
public class UserController {

    @PostMapping("/users")
    public String createUser(@Valid @RequestBody User user) {
        // 处理用户逻辑
        return "success";
    }
}

2.2 示例

下面展示一个简单的使用注解实现输入数据校验的示例:

  1. 编写实体类
public class User {

    @NotNull(message = "用户名不能为空")
    private String username;

    @NotBlank(message = "密码不能为空")
    private String password;

    @Email(message = "电子邮件地址格式不正确")
    private String email;

    // getter and setter 略去
}
  1. 编写Controller
@RestController
public class UserController {

    @PostMapping("/users")
    public String createUser(@Valid @RequestBody User user) {
        // 处理用户逻辑
        return "success";
    }
}

3. 自定义实现

3.1 步骤

自定义实现输入数据校验的步骤如下:

  1. 实现ConstraintValidator接口
public class AgeValidator implements ConstraintValidator<Age, Integer> {
    private int max;

    @Override
    public void initialize(Age constraintAnnotation) {
        this.max = constraintAnnotation.max();
    }

    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        return value >= 0 && value <= max;
    }
}
  1. 编写校验注解类
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {AgeValidator.class})
public @interface Age {

    int max() default 100;

    String message() default "年龄范围错误";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
  1. 添加校验逻辑

在Controller中使用@Validated注解开启校验,例如:

@RestController
@Validated
public class UserController {

    @PostMapping("/users")
    public String createUser(@Validated @RequestBody User user) {
        // 处理用户逻辑
        return "success";
    }
}

3.2 示例

下面展示一个简单的自定义实现输入数据校验的示例:

  1. 定义校验注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {AgeValidator.class})
public @interface Age {

    int max() default 100;

    String message() default "年龄范围错误";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
  1. 实现ConstraintValidator接口
public class AgeValidator implements ConstraintValidator<Age, Integer> {
    private int max;

    @Override
    public void initialize(Age constraintAnnotation) {
        this.max = constraintAnnotation.max();
    }

    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        return value >= 0 && value <= max;
    }
}
  1. 编写实体类
public class User {

    @NotNull(message = "用户名不能为空")
    private String username;

    @NotBlank(message = "密码不能为空")
    private String password;

    @Email(message = "电子邮件地址格式不正确")
    private String email;

    @Age(message = "年龄范围错误")
    private Integer age;

    // getter and setter 略去
}
  1. 编写Controller
@RestController
@Validated
public class UserController {

    @PostMapping("/users")
    public String createUser(@Validated @RequestBody User user) {
        // 处理用户逻辑
        return "success";
    }
}

以上就是使用注解实现和自定义实现输入数据校验的完整攻略,如有疑问请随时提出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot输入数据校验(validation)的实现过程 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java运算符实例用法总结

    Java 运算符实例用法总结 在 Java 中,运算符用于对常量、变量和表达式进行操作。通过组合常量、变量和表达式,可以创建复杂的表达式,从而实现对数据的处理和计算。 本文将介绍 Java 常见的运算符及其用法。 赋值运算符(=) 赋值运算符(=)用于将右侧的值赋给左侧的变量。例如: int a = 10; int b; b = a; 在上面的示例中,变量 …

    Java 2023年5月23日
    00
  • java 学习笔记(入门篇)_java程序helloWorld

    Java 学习笔记(入门篇)_Java程序HelloWorld 完整攻略 什么是Java Java 是一种高级编程语言,具有面向对象、跨平台、安全性强等特点,被广泛应用于互联网和企业应用等领域。 学习Java的前置知识 学习Java需要具备以下基础知识: 编程语言基础概念 面向对象编程思想 常见数据结构和算法 Java 学习的步骤 1. 下载安装Java环境…

    Java 2023年5月19日
    00
  • Java swing读取txt文件实现学生考试系统

    准备工作 首先,我们要在Java环境中搭建好Java swing的开发环境,并确定好要读取的txt文件的路径和文件名。 读取txt文件 我们可以使用Java语言中的文件输入流(FileInputStream)、字符输入流(InputStreamReader)和缓存输入流(BufferedReader)来读取txt文件,并将其存储到字符串中。代码示例如下: i…

    Java 2023年5月30日
    00
  • java实现建造者模式(Builder Pattern)

    下面我就详细讲解一下“Java实现建造者模式(Builder Pattern)”的完整攻略。 什么是建造者模式? 建造者模式是一种对象创建型设计模式,它允许你创建不同风格的对象,同时避免构造器污染问题。在该模式中,我们将构造过程分步进行,使得在创建对象时能够更加灵活地控制每个构造步骤,从而创建不同类型的对象。 建造者模式的角色 建造者模式中有以下几个角色: …

    Java 2023年5月18日
    00
  • Java流程控制语句最全汇总(上篇)

    《Java流程控制语句最全汇总(上篇)》是一篇详细介绍Java中流程控制语句的文章,包含了if语句、switch语句、while循环、do-while循环、for循环、break语句、continue语句等内容。以下是该篇文章的详细攻略: 一. if语句 在Java中,if语句用于判断某个条件是否成立,并根据判断结果执行相应的代码块。if语句的基本语法如下:…

    Java 2023年5月19日
    00
  • SpringBoot2零基础到精通之异常处理与web原生组件注入

    SpringBoot2零基础到精通之异常处理与web原生组件注入 在SpringBoot2开发中,处理异常和应用web原生组件是非常重要的技能。本攻略将帮助初学者了解异常处理的基本概念和技巧,以及如何使用SpringBoot2注入web原生组件。 异常处理 在Java开发中,异常处理是非常常见的。异常处理可以帮助我们更好地对代码进行保护,同时也能提供更好的用…

    Java 2023年5月31日
    00
  • java开发中如何使用JVisualVM进行性能分析

    完整攻略如下: 1. 什么是JVisualVM JVisualVM是Java SE平台的一个工具,用于监视本地或远程的Java程序运行状态。使用JVisualVM可以实时监控Java程序的内存、CPU、线程等实时状态,同时支持通过插件扩展功能。 2. 如何使用JVisualVM进行性能分析 2.1. 下载并安装JVisualVM JVisualVM是Java…

    Java 2023年5月26日
    00
  • java对XML文件的解析、节点的增加、删除操作总结

    Java对XML文件的解析、节点的增加、删除操作总结 在Java中,我们常常需要对XML文件进行解析、节点的增加或删除操作。下面将从以下两个方面对这一问题进行分析。 1. XML文件的解析 1.1 使用JDOM进行XML文件解析 JDOM是一款功能强大的Java XML解析库,它可以对XML文档进行解析,并操作XML文档中的元素和属性。其解析XML文档的核心…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部