Spring Boot에서 JSR-303 데이터 유효성 검사 사용

Spring Boot에서 JSR-303 데이터 유효성 검사 사용

웹 개발에서 데이터 유효성 검사는 매우 중요한 링크입니다. 사용자가 양식 데이터를 제출할 때 데이터의 합법성을 확인하고 불필요한 오류와 허점을 방지하는 데 도움이 될 수 있습니다. Spring Boot에서는 JSR-303 데이터 유효성 검사 사양을 사용하여 데이터 유효성 검사를 구현할 수 있습니다. 이 기사에서는 Spring Boot에서 JSR-303 데이터 유효성 검사를 사용하는 방법을 소개하고 사용법을 보여주는 샘플 코드를 제공합니다.

여기에 이미지 설명 삽입

JSR-303 데이터 유효성 검사란 무엇입니까?

JSR-303은 Java의 데이터 유효성 검사 사양입니다. Java 개체의 속성을 확인하는 데 사용할 수 있는 주석 집합을 정의합니다. Spring Boot에서는 JSR-303 데이터 유효성 검사 사양을 사용하여 양식 데이터의 유효성을 확인할 수 있습니다.

JSR-303 데이터 유효성 검사 사용

Spring Boot에서는 유효성을 검사해야 하는 개체를 나타내는 @Valid주석을 . 예를 들어 User이름이 있고 개체의 usernamepassword속성을 확인하려는 경우 다음 코드를 사용할 수 있습니다.

public class User {
    
    

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

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

    // 省略 getter 和 setter 方法
}

위의 샘플 코드에서 JSR-303의 @NotBlank주석을 usernamepassword속성이 null일 수 없음을 나타냅니다. 이러한 속성이 비어 있으면 유효성 검사가 실패하고 오류 메시지가 포함된 개체가 반환됩니다.

컨트롤러에서 @Valid주석을 있습니다. 예를 들어:

@RestController
@RequestMapping("/users")
public class UserController {
    
    

    @PostMapping
    public ResponseEntity<?> createUser(@Valid @RequestBody User user) {
    
    
        // 创建用户
        return ResponseEntity.ok().build();
    }
}

위의 샘플 코드에서 @Valid주석을 개체RequestBody 의 유효성을 검사해야 함을 나타냅니다. User유효성 검사가 실패하면 Spring Boot는 자동으로 오류 메시지와 함께 응답을 반환합니다.

유효성 검사기

유효성 검사를 위해 JSR-303 주석을 사용하는 것 외에도 유효성 검사기를 사용자 지정하여 보다 복잡한 유효성 검사 논리를 구현할 수 있습니다. Spring Boot에서는 org.springframework.validation.Validator인터페이스를 .

다음은 개체의 및 속성을 User확인하는 유효성 검사기의 예입니다 .usernamepassword

@Component
public class UserValidator implements Validator {
    
    

    @Override
    public boolean supports(Class<?> clazz) {
    
    
        return User.class.equals(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
    
    
        User user = (User) target;
        if (StringUtils.isEmpty(user.getUsername())) {
    
    
            errors.rejectValue("username", "username.empty");
        }
        if (StringUtils.isEmpty(user.getPassword())) {
    
    
            errors.rejectValue("password", "password.empty");
        }
    }
}

위의 샘플 코드에서 org.springframework.validation.Validator인터페이스를 supportsvalidate메서드 재정의했습니다. supports유효성 검사기가 지정된 개체의 유효성 검사를 지원하는지 여부를 확인하는 데 사용되는 메서드입니다. 이 예제에서는 유효성 검사기가 User유형 . validate메서드는 실제로 객체의 유효성을 검사하는 데 사용됩니다. 이 예에서는 객체의 및 속성이 비어 있는지 User확인 하고 객체를 사용하여 오류 메시지를 보관합니다.usernamepasswordErrors

컨트롤러에서 Errors개체를 유효성 검사 결과를 얻고 오류 처리 방법을 결정할 수 있습니다. 예를 들어:

@RestController
@RequestMapping("/users")
public class UserController {
    
    

    @Autowired
    private UserValidator userValidator;

    @PostMapping
    public ResponseEntity<?> createUser(@RequestBody User user, Errors errors) {
    
    
        userValidator.validate(user, errors);
        if (errors.hasErrors()) {
    
    
            // 处理校验错误
            return ResponseEntity.badRequest().body(errors.getAllErrors());
        }
        // 创建用户
        return ResponseEntity.ok().build();
    }
}

위의 샘플 코드에서는 컨트롤러 메서드에 Errors개체를 하고 userValidator.validate(user, errors)유효성 검사를 위해 메서드에서 메서드를 호출합니다. 유효성 검사가 실패하면 errors.getAllErrors()메서드를 . 유효성 검사가 성공하면 사용자를 생성하고 성공 응답을 반환합니다.

요약하다

이 기사에서는 Spring Boot에서 JSR-303 데이터 유효성 검사를 사용하는 방법을 소개하고 그 사용법을 보여주는 샘플 코드를 제공했습니다. 데이터 유효성 검사를 사용하면 웹 애플리케이션의 보안과 안정성을 개선하고 불필요한 오류와 취약성을 줄이는 데 도움이 될 수 있습니다. 웹 애플리케이션을 개발할 때 데이터 유효성 검사가 필요한 경우 JSR-303 데이터 유효성 검사 사양 사용을 고려해야 합니다.

Acho que você gosta

Origin blog.csdn.net/2302_77835532/article/details/131326372
Recomendado
Clasificación