유효성검사(Valiadation) 1. validation이란 어떤 데이터의 값이 유효한지, 타당한지 확인하는 것을 의미합니다. 2. UI에서 javascript로 "이메일 양식이 일치하지 않는다"는 것은 UX 측면에서 사용자에게 편의를 주기 위함 입니다. 3. 보안적인 측면에서 유효성 검사는, UI, 서버에서 둘 다 수행되어야 합니다. 4. 스프링, 스프링 부트 모두 적용 가능합니다.
부트 2.3버전 이후는 Spring Boot Starter Validation 라이브러리 필요
(가져온 라이브러리를 gradle에 넣고 버전을 지우면 springboot버전에 맞춰짐)
유효성 검사
아래 어노테이션은 VO(DTO) 클래스의 멤버변수에 적용해서 사용합니다.
Import는 javax.validation패키지를 사용합니다
@NotNull
@NotBlank
@Patter
세개정도만 외우면 됨.
public class ValidVO{
@NotBlank(message = "이름은 필수 입니다")
private String name;
}
유효성 검사 적용
컨트롤러에서는 데이터를 받을 때 @Valid와 Errors객체를 사용하여 유효성 검사를 진행 합니다.
@PostMapping("/~~~경로")
public String viewForm(@valid ValidVO vo, Errors errors){
returb "~~~~~~";
}
//@Valid - 유효성 검사를 진행하겠다는 뜻
//Errors - 유효성검사에 실패하면 에러객체로 바인딩
@PostMapping("/actionForm")
public String actionForm(@Valid ValidVO vo, Errors error) {
System.out.println(vo);
System.out.println(error.getErrorCount());
return "valid/ex01_result";
}
VO의 @NotNull 유효성검사를 진행하겠다는 뜻
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ValidVO {
/*
* @NotNull - Null값만 허용하지 않음 (Wrapper의 Integer, Long, String 등에 적용)
* @NotBlank - 공백 + Null값을 허용하지 않음 (String에만 적용)
* @NotEmpty - Null값을 허용하지 않음 (Array, list적용)
*
* @Pattern - 정규표현식에 맞는 문자열을 정의할 수 있음 (String에만 적용가능)
* @Email - 이메일형식검증(공백은 통과)
* @Min - 최소값
* @Max - 최대값
*/
@NotBlank(message = "이름은 필수 입니다")
private String name;
@NotNull(message = "급여는 필수 입니다")
private int salary;
@Pattern(regexp = "[0-9]{3}-[0-9]{4}-[0-9]{4}", message = "전화번호 형식은 000-0000-0000입니다")
private String phone;
@NotBlank //두개 동시에 적용
@Email(message = "email형식 이어야 합니다") //email형식이어야한다. 단 공백은 통과
private String email;
}
'Spring Boot' 카테고리의 다른 글
Rest API (1) | 2023.02.16 |
---|---|
Spring Boot DB (MyBatis) (0) | 2023.02.14 |
Thymeleaf in Spring Boot (0) | 2023.02.13 |
Spring Boot Lombok으로 Builder패턴 만들기 (0) | 2023.02.13 |
Spring Boot 기본 설정 (0) | 2023.02.10 |
댓글