SpringBoot controller参数校验方法详细讲解

下面我就为您讲解一下“SpringBoot controller参数校验方法详细讲解”的攻略。

一、前言

Spring Boot 是一个非常流行的 Java 开发框架,可用于快速构建高效率的应用程序。在我们使用 Spring Boot 进行开发的过程中,请求参数的校验也是非常重要的一环。本文将详细讲解 Spring Boot Controller 参数校验的方法,包括常用校验注解的使用。

二、常用校验注解

1. @NotNull

@NotNull 注解用于校验参数不能为 null。

@PostMapping("/user")
public String addUser(@NotNull(message = "用户名不能为空") String username,
                      @NotNull(message = "密码不能为空") String password) {
    // 处理逻辑
}

2. @NotBlank

@NotBlank 注解用于校验参数不能为空字符串,同时去除首尾空格后不为空。

@PostMapping("/user")
public String addUser(@NotBlank(message = "用户名不能为空") String username,
                      @NotBlank(message = "密码不能为空") String password) {
    // 处理逻辑
}

3. @Max 和 @Min

@Max 和 @Min 注解用于校验参数的最大值和最小值。

@PostMapping("/goods")
public String addGoods(@NotNull(message = "价格不能为空") @Max(value = 10000, message = "商品价格不能超过10000") BigDecimal price) {
    // 处理逻辑
}

4. @Size

@Size 注解用于校验参数的长度或大小。

@PostMapping("/goods")
public String addGoods(@NotNull(message = "商品名称不能为空") @Size(max = 100, message = "商品名称不能超过100个字符") String name) {
    // 处理逻辑
}

5. @Validated

@Validated 注解用于开启参数校验。

@RestController
@Validated
public class UserController {

    @PostMapping("/user")
    public String addUser(@NotNull(message = "用户名不能为空") String username,
                          @NotNull(message = "密码不能为空") String password) {
        // 处理逻辑
    }
}

三、校验异常处理

在 Spring Boot 中,如果请求参数不符合校验规则,会抛出 ConstraintViolationException 异常,我们可以通过全局异常处理的方式进行处理。

1. 定义异常处理器类

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(ConstraintViolationException.class)
    @ResponseBody
    public Result handleConstraintViolationException(ConstraintViolationException e) {
        String message = "";
        Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
        for (ConstraintViolation<?> violation : violations) {
            message += violation.getMessage() + ";";
        }
        return ResultUtil.error(message);
    }
}

2. 定义返回结果类

public class Result {
    private Integer code;
    private String message;
    private Object data;

    // 省略 get、set 方法
}

3. 测试

@RestController
@Validated
public class UserController {

    @PostMapping("/user")
    public String addUser(@NotNull(message = "用户名不能为空") String username,
                          @NotNull(message = "密码不能为空") String password) {
        // 处理逻辑
    }
}

访问地址 http://localhost:8080/user,请求体:

{
    "username": null,
    "password": null
}

返回结果:

{
  "code": 500,
  "message": "用户名不能为空;密码不能为空;",
  "data": null
}

四、示例

1. 校验对象

@PostMapping("/user")
public String addUser(@Validated @RequestBody User user) {
    // 处理逻辑
}
public class User {

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

    @NotNull(message = "密码不能为空")
    @Size(min = 6, message = "密码长度不能小于 6 位")
    private String password;

    // 省略 get、set 方法
}

2. 校验列表

@PostMapping("/goods")
public String addGoods(@RequestBody @Validated List<Goods> goodsList) {
    // 处理逻辑
}
public class Goods {

    @NotBlank(message = "商品名称不能为空")
    private String name;

    @NotNull(message = "价格不能为空")
    @Max(value = 10000, message = "商品价格不能超过10000")
    private BigDecimal price;

    // 省略 get、set 方法
}

以上就是 Spring Boot Controller 参数校验方法的详细讲解,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot controller参数校验方法详细讲解 - Python技术站

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

相关文章

  • php遍历解析xml字符串的方法

    当我们需要读取XML文件内容时,将其解析为字符串可能并不是最优选择,因为字符串不便于对数据进行复杂的操作。这时,我们可以使用PHP内置的SimpleXML扩展库,它提供了一种简单的读取和操作XML文档的方法。 下面是使用PHP遍历解析XML字符串的完整攻略: 步骤1:加载XML内容 可以使用simplexml_load_string函数加载XML内容并将其转…

    Java 2023年5月19日
    00
  • Java SpringBoot高级用法详解

    Java Spring Boot 高级用法详解 简介 Java Spring Boot 是一个基于Spring Framework的开源框架,它可以让我们快速开发Web应用程序。在基本使用之外,Spring Boot还有很多高级用法可以帮助开发人员更加灵活地应对各种复杂情况。 编写自定义starter 自定义starter可以让我们将一些通用代码打包成一个独…

    Java 2023年5月15日
    00
  • Springboot FatJa原理机制源码解析

    Springboot FatJar原理机制源码解析 什么是Springboot FatJar Springboot FatJar是一种打包方式,它将应用程序及其所有依赖库打包到一个可执行的JAR文件中。这样,我们只需要一个JAR文件就能部署整个应用程序到服务器上,而无需考虑依赖库的配置问题。同时,FatJar还具有开箱即用的特点,即使是在没有安装任何JDK或…

    Java 2023年5月19日
    00
  • JavaWeb登陆功能实现代码

    下面是“JavaWeb登录功能实现代码”的完整攻略: 1.准备工作 要实现登录功能,需要如下准备工作: 开发工具:建议使用Eclipse或IDEA等JavaWeb开发工具 数据库:建议使用MySQL等关系型数据库 服务器:Tomcat等JavaWeb服务器 2.创建用户表 登录需要依赖用户表,因此需要创建用户表。可以使用如下SQL语句创建一个简单的用户表: …

    Java 2023年5月19日
    00
  • jsp+servlet实现最简单的增删改查代码分享

    下面来详细讲解 JSP+Servlet 实现最简单的增删改查代码分享的完整攻略。 1. 准备工作 在开始编写代码之前,需要先准备好以下工具和环境: JDK 1.8 或以上版本 Tomcat 8 或以上版本 Eclipse 或其他 Java IDE 2. 创建项目 在 Eclipse 中创建新的动态 Web 项目,选择 Web Application 项目类型…

    Java 2023年6月15日
    00
  • java RSAUtils 加密工具类操作

    下面我来详细讲解一下“java RSAUtils 加密工具类操作”的完整攻略。 1. 什么是RSA加密 RSA加密是目前最为常用的非对称加密算法,由Ron Rivest、Adi Shamir 和Leonard Adleman 三人于1977年在MIT公布的,所以以他们三人的名字的头字母命名。 2. RSA加密的原理 RSA加密的原理很简单,就是通过生成一对公…

    Java 2023年5月20日
    00
  • JSP response对象实现文件下载的两种方式

    我会为您详细讲解“JSP response对象实现文件下载的两种方式”的完整攻略。 下载文件是Web开发中非常常见的功能之一。在JSP中,我们可以使用response对象来实现文件下载的功能。具体来说,实现文件下载可以采用两种方式: 1. 使用response的OutputStream方式 使用response的OutputStream方式的基本流程如下: …

    Java 2023年6月15日
    00
  • Java利用栈实现简易计算器功能

    为了实现Java利用栈实现简易计算器功能,我们可以使用栈来存储操作数和运算符,然后依次从左到右扫描表达式,并根据运算符的优先级进行计算。下面是具体的实现步骤: 1.将中缀表达式转换为后缀表达式 使用栈来转换中缀表达式为后缀表达式是比较常见的方法。具体步骤如下: 创建一个栈来保存运算符。 从左到右扫描中缀表达式。 如果当前扫描到的是操作数,则直接输出到后缀表达…

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