[Spring] 폼 입력값 유효성 체크

류넹·2024년 3월 5일
1

Spring

목록 보기
24/50

❓ 폼 입력값 유효성 체크

  • 서버 사이드에서 폼 입력값에 대한 유효성을 체크하는 것
  • Spring MVC는 폼 입력값에 대한 유효성 체크를 지원하는 API를 제공한다.



라이브러리 의존성

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!--
	* jakarta.validation-api와 hibernate-validator 의존성을 추가한다.
    * jakarta.validation-api는 자바 표준 유효성 검사 스펙에 따른 API를 제공한다.
	  이 스펙은 JSR-380(Java Specification Request 380)으로 정의되며,
      자바기반 애플리케이션에서 데이터 모델의 유효성을 검사하는 데 사용되는 표준이다.
	* hibernate-validator는 jakarta.validation-api의 구현체다.
-->


📌 Spring의 폼 입력값 유효성 체크 API

1. @Valid

  • jakarta.validation 패키지에 정의되어 있는 어노테이션
  • 데이터 모델의 유효성 검사를 활성화시키는 데 사용된다.
  • 이 어노테이션을 사용하면 데이터 모델에 대한 정의된 유효성 검사 어노테이션을 검사하고,
    데이터 모델이 제약조건을 위반한 경우, 해당 검사 오류를 BindingResult 객체에 추가한다.

2. BindingResult

  • 스프링에서 유효성 검사 결과 및 데이터 바인딩 오류를 저장하고 관리하는 데 사용하는 객체
  • Spring MVC의 요청핸들러 메서드에서 @Valid 어노테이션과 함께 사용되며,
    데이터 모델의 유효성 검사를 수행한 후 발생한 오류를 수집하고, 관리한다.
  • 주요 메서드
    • boolean hasErrors()
      • 유효성 검사를 위반한 경우 true를 반환한다.
      • 유효성 검사를 위반할 때마다 FieldError 객체가 BindingResult 객체에 추가된다.
    • void rejectValue(String field, String errorCode, String defaultMessage)
      • BindingResult 객체에 수동으로 field error를 추가시킨다.
      • @어노테이션으로 지원되지 않는 유효성 체크 항목에 대한 유효성을 수동으로 체크하고, field error를 추가시킬 수 있다.
      • * field : Form 객체의 멤버변수명
      • * errorCode : 에러코드
      • * defaultMessage : 에러 메시지
  • 예시)

1) form.jsp

<form:form method="post" action="register">
	아이디
    	<form:input    path="id" />
    비밀번호
    	<form:password path="password" />
    이름
    	<form:input    path="name" />
</form:form>

2) UserRegisterForm.java

public class UserRegisterForm {
	@NotBlank        // 제약조건
    String id;
    
    @NotBlank        // 제약조건
    Stirng password;
    
    @NotBlank        // 제약조건
    String name;
}

3) 요청핸들러 메서드

@PoastMapping("/register")
public String register(@Valid UserRegisterForm userRegisterForm, BindingResult errors) {

}



💡 자동으로 체크되는 원리

pom.xml에 spring-boot-starter-validation 정의해놓으면
hibernate-validator가 실제로 유효성 체크를 구현해줌

profile
학습용 커스터마이징 간단 개발자 사전

0개의 댓글