교재
https://thebook.io/080266/0445/
유효성 검사
부적합 하다고 판단되면 폼 페이지로 다시 되돌려 폼 데이터 값의 오류를 알린다
= 아이디 중복 검사, 로그인 인증할 때 하는 아이디, 패스워드 검사, 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() 메소드를 사용하여 접근 가능한 객체
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
chap13
'IoT 빅데이터 응용 교육 과정_하계' 카테고리의 다른 글
[IoT 빅데이터 응용 교육 과정]23.07.11 14장 장바구니 만들기 (0) | 2023.07.11 |
---|---|
[IoT 빅데이터 응용 교육 과정]23.07.10 13장 사용자 정의 애너테이션 (0) | 2023.07.10 |
[IoT 빅데이터 응용 교육 과정] 23.07.06 12장 다국어 처리 (0) | 2023.07.06 |
[IoT 빅데이터 응용 교육 과정] 23.07.05 11장 로그 기록 (0) | 2023.07.05 |
[IoT 빅데이터 응용 교육 과정]23307.04_2 10장 예외처리 (0) | 2023.07.04 |