[Spring] Validation

2022. 5. 20. 16:57·Spring
728x90

유효성 검사

유효성 검사를 해야하는 이유는 클라이언트가 입력한 값이 서버에서 적절하게 이해하고 처리해줄 수 있는지 사전 검사해주는 역할이라 보면 된다. 스프링 부트에서는 아래의 라이브러리를 추가해주면 어노테이션만으로 아주 쉽게 유효성 검사를 할 수 있다. 커스텀이 필요하면 그때는 만들어주면 될거 같다. 

implementation 'org.springframework.boot:spring-boot-starter-validation'

유효값 검증을 위해 validation을 사용하는데, 다음과 같은 어노테이션들을 제공한다.

어노테이션 설명
@NotEmpty NULL 체크, 문자열의 경우 길이 0인지 검사
@NotBlank NULL 체크 및 문자열의 경우 길이 0 및 빈 문자열(" ") 검사
@Length(min=, max=) 최소, 최대 길이 검사
@Email 이메일 형식인지 검사
@Max(숫자) 지정한 값보다 작은지 검사
@Min(숫자) 지정한 값보다 큰지 검사
@Null 값이 NULL인지 검사
@NotNull 값이 NULL이 아닌지 검사

적용

MemberDto에 활용해보는 예제이다.

@Getter
@Setter
public class MemberFormDto {

    @NotBlank(message = "이름은 필수 입력 값입니다.")
    private String name;

    @NotEmpty(message = "이메일은 필수 입력 값입니다.")
    @Email(message = "이메일 형식으로 입력해주세요.")
    private String email;

    @NotEmpty(message = "비밀번호는 필수 입력 값입니다.")
    @Length(min = 8, max = 16, message = "비밀번호는 8자 이상, 16자 이하로 입력해주세요")
    private String password;

    @NotEmpty(message = "주소는 필수 입력 값입니다.")
    private String address;
}

Controller 적용

컨트롤러 파라미터로 DTO 매개변수 앞에는 @Valid를 달아주고, BindingResult를 넣어주면 에러가 발생시 bindingResult에 에러 내용을 담아준다. 내 기억으로는 BindingResult는 반드시 유효성 검사하는 인스턴스 바로 다음에 위치해야한다. bindingResult는 다음에 정리해서 올리도록 하겠다.

@PostMapping(value = "/new")
public String memberForm(@Valid MemberFormDto memberFormDto,
                         BindingResult bindingResult, Model model) {

    if (bindingResult.hasErrors()) {
        return "member/memberForm";
    }

    try {
        Member member = Member.createMember(memberFormDto, passwordEncoder);
        memberService.saveMember(member);
    } catch (IllegalStateException e) {
        model.addAttribute("errorMessage", e.getMessage());
        return "member/memberForm";
    }
    return "redirect:/";
}

확인

아무것도 입력하지 않고, 서버에 전송해보면 다음과 같이 에러 코드를 볼 수 있다.

728x90

'Spring' 카테고리의 다른 글

[Spring] 비동기 처리  (0) 2022.05.30
[Spring Boot] Devtools를 써보자  (0) 2022.05.08
'Spring' 카테고리의 다른 글
  • [Spring] 비동기 처리
  • [Spring Boot] Devtools를 써보자
미소여우
미소여우
개발자가 되고 싶은 자의 기록
  • 미소여우
    석주의주석
    미소여우
  • 전체
    오늘
    어제
    • 전체 (83)
      • DB (4)
      • 디자인패턴 (3)
      • Infra (6)
      • Java (5)
      • 이펙티브자바 (0)
      • Spring (13)
        • security (0)
        • jpa, db (2)
        • mvc (3)
        • project (5)
      • Network (0)
      • 알고리즘 (2)
        • 백준 (0)
        • 프로그래머스 (2)
      • 자료구조 (0)
      • ETC (6)
      • 주절주절 (1)
      • 돌아보기 (1)
      • AWS (3)
      • 발표 (8)
      • 유데미 부트캠프 (15)
      • 젠킨스 (3)
      • 리눅스 (1)
      • Node (4)
      • git (1)
  • 블로그 메뉴

    • HOME
    • TAG
  • 링크

  • 공지사항

    • 이력서
  • 인기 글

  • 태그

    spring
    백엔드부트캠프
    노드
    유데미부트캠프
    디자인패턴
    도커
    thymeleaf
    유데미
    스타터스부트캠프
    Git
    JPA
    프론트엔드부트캠프
    카톡전송
    AWS
    스프링
    프로그래머스
    어노테이션
    DB
    Docker
    단축키
    n8n
    부트캠프후기
    취업부트캠프
    유데미코리아
    개발자부트캠프
    자바
    타임리프
    젠킨스
    엔티티
    Validation
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.5
미소여우
[Spring] Validation
상단으로

티스토리툴바