MST

星途 面试题库

面试题:Java中Spring Boot如何实现数据验证

在Java Spring Boot项目里,阐述如何使用内置的验证框架对请求数据进行有效性验证,例如对用户注册时输入的用户名、密码等字段进行长度、格式等方面的验证,并给出相关的注解和代码示例。
44.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

1. 引入依赖

pom.xml中,Spring Boot 通常已经自动引入了spring-boot-starter-validation依赖,如果没有,可以手动添加:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. 使用注解进行验证

  • @NotEmpty:验证字符串不为空且长度大于0,用于验证用户名等不能为空白的字段。
  • @Size:验证字符串长度在指定范围内,可用于用户名和密码的长度验证。
  • @Pattern:验证字符串是否匹配指定的正则表达式,可用于密码格式等验证。

3. 代码示例

实体类

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

public class UserRegistration {

    @NotEmpty(message = "用户名不能为空")
    @Size(min = 3, max = 20, message = "用户名长度必须在3到20个字符之间")
    private String username;

    @NotEmpty(message = "密码不能为空")
    @Size(min = 6, max = 20, message = "密码长度必须在6到20个字符之间")
    @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{6,20}$",
            message = "密码必须包含至少一个小写字母、一个大写字母和一个数字")
    private String password;

    // 省略getter和setter方法
}

控制器

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

@RestController
@Validated
public class UserRegistrationController {

    @PostMapping("/register")
    public ResponseEntity<String> registerUser(@Valid @RequestBody UserRegistration userRegistration) {
        // 逻辑处理,例如保存用户到数据库
        return new ResponseEntity<>("注册成功", HttpStatus.OK);
    }
}

在上述代码中:

  • UserRegistration实体类中,通过@NotEmpty@Size@Pattern等注解对usernamepassword字段进行了有效性验证。
  • UserRegistrationControllerregisterUser方法中,使用@Valid注解标记UserRegistration参数,这样在请求到达时,Spring 会自动对请求体中的数据进行验证。如果验证失败,会抛出MethodArgumentNotValidException异常,Spring 会自动返回包含错误信息的响应。可以通过自定义全局异常处理器来处理该异常,返回更友好的错误信息。