IoT 빅데이터 응용 교육 과정_하계

[IoT 빅데이터 응용 교육과정] 23.07.06 13장 유효성 검사

연지양갱 2023. 7. 6. 15:45
728x90
반응형
SMALL

교재

https://thebook.io/080266/0445/

 

스프링 코딩 공작소: 13장 유효성 검사: 도서 등록 페이지의 오류 메시지 출력하기

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

 


 

유효성 검사

부적합 하다고 판단되면 폼 페이지로 다시 되돌려 폼 데이터 값의 오류를 알린다

= 아이디 중복 검사, 로그인 인증할 때 하는 아이디, 패스워드 검사, IP 패킷 검사 등

 

 

유효성 검사의 유형

 

 JSR-380 Validation(Java Bean Validation 2.0) 방식

필드에 대한 유효성 검사 제약 사항(constraints) 애너테이션을 선언하여 해당 값이 올바른지 검증하는 방식

 

 

 Validator 인터페이스의 구현체 방식

특정 도메인 클래스의 멤버 변수에는 제약 사항 애너테이션을 선언 X

스프링 Validator 인터페이스는 애플리케이션의 모든 계층에서 유효성 검증을 위해 사용 O

 

** 유효성 검사를 해야하는 폼 데이터 항목

보안 공격이나 잘못된 데이터 또는 사용자 실수로 예상할 수 있는 오류를 방지

 

• 입력 데이터가 null인지에 대한 유효성 검사

• 날짜나 이메일을 입력할 때 형식에 맞는지에 대한 유효성 검사

• 나이를 입력할 때 숫자인지에 대한 유효성 검사

• 입력 데이터의 제한 길이를 초과했는지에 대한 유효성 검사

• 로그인 인증을 할 때 아이디와 패스워드에 대한 유효성 검사

• 회원 가입을 할 때 아이디 중복 여부에 대한 유효성 검사

 

 

 

pom.xml 파일에 의존 라이브러리 등록하기

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>7.0.4.Final</version>
</dependency>

 

 

 

@Valid

코드 양식

@PostMapping("/...")
public String 메서드 이름(@Valid 매개변수, ..., BindingResult result) {
    if (result.hasErrors()) {
        // 오류 메시지 저장
    }
    return "뷰 이름";
}

 

뷰 페이지에 오류 메시지 출력하기

<form:errors> 태그 사용하기

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
...
<form:errors path="커맨드 객체의 멤버 변수 이름">

 

 JSR-380으로 유효성 검사

 

Bean Validation

유효성 검사를 위한 메타데이터 모델과 API를 정의함

자바빈은 매개변수가 없는 생성자를 가지며, Setter()와 Getter() 메소드를 사용하여 접근 가능한 객체

 

▲ 그림 13-1 &nbsp;JSR-380을 이용한 처리 과정

 

public class 클래스 이름 {
    @JSR-380 제약 사항 애너테이션(속성[, message="오류 메시지 또는 [오류 코드]"])
    private String 멤버 변수;
    ...
    // Setter()와 Getter() 메서드 구현 생략
}

 

 

▼ 표 13-1 JSR-380 애너테이션 유형

유형 설명 속성
@AssertFalse 프로퍼티 값이 거짓(false)인지 검사합니다.  
@AssertTrue 프로퍼티 값이 참(true)인지 검사합니다.  
@DecimalMax 프로퍼티 값이 가질 수 있는 최대 실수 값을 검사합니다. • value: 값
• inclusive: true/false
@DecimalMin 프로퍼티 값이 가질 수 있는 최소 실수 값을 검사합니다. • value: 값
• inclusive: true/false
@Digits 프로퍼티가 가질 수 있는 지정된 범위(정수 부분의 자릿수와 소수 부분의 자릿수)를 검사합니다. • integer: 정수의 자릿수
• fraction: 소수의 자릿수
@Future 프로퍼티 값이 미래 날짜(현재일 이후)인지 검사합니다.  
@Max 프로퍼티 값이 가질 수 있는 최대 길이를 검사합니다. value: 값
@Min 프로퍼티 값이 가질 수 있는 최소 길이를 검사합니다. value: 값
@NotNull 프로퍼티 값이 Null이 아닌지 검사합니다.  
@Null 프로퍼티 값이 Null인지 검사합니다.  
@Past 프로퍼티 값이 과거 날짜(현재일 이전)인지 검사합니다.  
@Pattern 프로퍼티 값이 정의된 정규 표현식에 일치하는지 검사합니다. regexp: 정규 표현식
@Size 프로퍼티 값이 가질 수 있는 최대, 최소 길이를 검사합니다. • min: 최소 길이
• max: 최대 길이
@Valid 객체에 대해 유효성 검사를 합니다.

 

어노테이션사용한 뒤에 메시지를 입력하도록 한다.

속성값에 출력할 오류 메시지를 직접 성정해야함

 

▼ 표 13-2 JSR-380의 기본 메시지

애너테이션 기본 메시지
@AssertFalse 반드시 거짓(false)이어야 합니다.
@AssertTrue 반드시 참(true)이어야 합니다.
@DecimalMax 반드시 {value}보다 같거나 작아야 합니다.
@DecimalMin 반드시 {value}보다 같거나 커야 합니다.
@Digits 숫자 값이 허용 범위를 벗어납니다(허용 범위: <{integer} 자리>.<{fraction} 자리>).
@Future 반드시 미래 날짜이어야 합니다.
@Max 반드시 {value}보다 같거나 작아야 합니다.
@Min 반드시 {value}보다 같거나 커야 합니다.
@NotNull 반드시 값이 있어야 합니다.
@Null 반드시 값이 없어야 합니다.
@Past 반드시 과거 날짜이어야 합니다.
@Pattern 정규 표현식 “{regexp}” 패턴과 일치해야 합니다.
@Size 반드시 최솟값 {min}과(와) 최댓값 {max} 사이의 크기이어야 합니다.

 

 

사용자 정의 오류 메시지 설정하기

 

모델 어트리뷰트 

 

chap12

BookMarket.zip
0.06MB

 

 

 

 

 

chap13

 

BookMarket.zip
0.06MB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형