Spring Boot での JSR-303 データ検証の使用

Spring Boot での JSR-303 データ検証の使用

Web 開発では、データ検証は非常に重要なリンクです。これは、ユーザーがフォーム データを送信するときにデータの合法性を検証し、不要なエラーや抜け穴を防ぐのに役立ちます。Spring Boot では、JSR-303 データ検証仕様を使用してデータ検証を実装できます。この記事では、Spring Boot で JSR-303 データ検証を使用する方法を紹介し、その使用法を示すサンプル コードを提供します。

ここに画像の説明を挿入

JSR-303 データ検証とは何ですか?

JSR-303 は Java のデータ検証仕様です。Java オブジェクトのプロパティを検証するために使用できる一連のアノテーションを定義します。Spring Boot では、JSR-303 データ検証仕様を使用してフォーム データの有効性を検証できます。

JSR-303 データ検証を使用する

Spring Boot では、@Validアノテーションを、JSR-303 のアノテーションを使用して検証が必要なプロパティを示すことができます。たとえば、Userという名前の、そのオブジェクトusernamepasswordプロパティを検証したい場合は、次のコードを使用できます。

public class User {
    
    

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

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

    // 省略 getter 和 setter 方法
}

上記のサンプル コードでは、JSR-303 の@NotBlankアノテーションをusernameおよびpassword属性を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インターフェイス、supportsおよびvalidateメソッドをオーバーライドしました。supportsバリデーターが指定されたオブジェクトの検証をサポートしているかどうかを判断するために使用されるメソッド。この例では、バリデーターがUserタイプ。validateメソッドは、オブジェクトを実際に検証するために使用されます。この例ではUser、オブジェクトのusernameプロパティとpasswordプロパティ空であることを確認し、Errorsそのオブジェクトを使用してエラー メッセージを保持します。

コントローラーでは、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 データ検証を使用する方法を紹介し、その使用法を示すサンプル コードを提供しました。データ検証を使用すると、Web アプリケーションのセキュリティと信頼性が向上し、不要なエラーや脆弱性が軽減されます。Web アプリケーションの開発時にデータ検証が必要な場合は、JSR-303 データ検証仕様の使用を必ず検討してください。

おすすめ

転載: blog.csdn.net/2302_77835532/article/details/131326372