스프링 -8

김정현·2024년 7월 15일
0

Spring

목록 보기
8/14

스프링 MVC

1. 메시지

1) MessageSource
: Bean으로 등록
-반드시 빈의 이름이 messageSource로 지정

2) ResourceBundleMessageSource

3) 다국어 지원 위한 메시지 파일
properties 파일

2. 커맨드 객체 검증

1) Validator 인터페이스

-supports(..) : 검증하는 커맨드 객체 한정 설정
-validate(Object target) : 커맨드 객체 검증 ..
Object target : 커맨드 객체 -> 형변환
Errors errors : 검증 실패시 전달한 메세지 등록

2) Errors

- 커맨드 객체 자체 오류에 대한 처리 --
reject("에러코드");
reject("에러코드", "기본 메세지")

- 커맨드 객체의 특정 필드 오류에 대한 처리 --
rejectValue("필드명", "에러코드");
rejectValue("필드명", "에러코드", "기본메세지");

-hasErrors() : 한개라도 reject 또는 rejectValue가 호출되면 true

참고) StringUtils

// 너무 김

// 필수 항목 검증
if (email == null && email.isBlank()) {

        }	

// 두 가지를 한 번에 검증

if (!StringUtils.hasText(email)) {

        }

타임리프

#fields.errors("필드명") : -> errors 객체 담긴 메세지를 필드명으로 조회 -> 배열

<form:errors path="필드명" />
-기본 에러 출력 태그 span, 여러 에러 메시지가 있는 경우 <br> 구분 (delimiter)
-element="태그명"
-delimiter="에러와 에러 메세지 사이에 추가될 태그"

3) ValidationUtils

  • 필수 항목 검증에 편의 메서드
    - rejectIfEmpty(...) : null 또는 ""
    - rejectIfEmptyOrWhitespace(...) : 공백 포함 체크

// 이것 조차 김

        // 필수 항목 검증
        if (!StringUtils.hasText(email)) {
            errors.rejectValue("email", "Required", "이메일을 입력하세요.");
        }

        if (!StringUtils.hasText(password)) {
            errors.rejectValue("password", "Required", "비밀번호를 입력하세요.");
        }

// 짧게 줄일 수 있음

// 필수 항목 검증
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "Required", "이메일을 입력하세요.");
        
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "Required", "비밀번호을 입력하세요.");    }

3. 에러 코드에 해당하는 메시지 코드를 찾는 규칙

  • 에러코드 + "." + 커맨드객체이름 + "." + 필드명
  • 에러코드 + "." + 필드명
  • 에러코드 + "." + 필드타입
  • 에러코드

// 범위를 좁혀야함.



->name이 중요.

4. 프로퍼티 타입이 List나 목록인 경우 다음 순서를 사용해서 메시지 코드를 생성한다.

에러코드 + "." + 커맨드객체이름 + "." + 필드명[인덱스].중첩필드명
에러코드 + "." + 커맨드객체이름 + "." + 필드명.중첩필드명
에러코드 + "." + 필드명[인덱스].중첩필드명
에러코드 + "." + 필드명.중첩필드명
에러코드 + "." + 중첩필드명
에러코드 + "." + 필드타입
에러코드

5. 글로벌 범위 Validator와 컨트롤러 범위 Validator

1) 글로벌 범위 Validator 설정과 @Valid 애노테이션

  • WebMvcConfigurer의 getValidalor()
    -모든 컨트롤러의 공통적인 검증이 필요한 경우

2) @InitBinder 애노테이션을 이용한 컨트롤러 범위 Validator
@InitBinder
protected void InitBinder(WebDataBinder binder) {
binder.setValidator(new RegisterRequestValidator());
}

-특정 컨트롤러에서 사용할 공통적인 Validator

3) 컨트롤러 범위 Validator > 글로벌 범위 Validator

6. Bean Validation ★(많이 씀)

  • 의존성 추가
    Bean Validation API
    hibernate Validator

  • 커맨드 객체 검증
    1) Bean Validation API - 애노테이션으로 기본 검증 처리 -> 2) 기본 애노테이션으로 안 되는 검증 Validator를 정의

// 필수 항목 검증

// 커맨드 객체 바로 뒤에 error가 와야함



->공통적으로 사용하는 메세지에는 따로 입력

1) 설정
2) Bean Validation의 주요 애노테이션
@AssertTrue
@AssertFalse
@DecimalMax
@DecimalMin
@Max
@Min
@Digits
@Size
@Null
@NonNull
@Pattern

@NotEmpty
@NotBlank
@Positive
@PositiveOrZero
@Email
@Future
@FutureOrPresent
@Past
@PastOrPresent

  • 로그인 프로세스

  • 검증 항목

Session

@SessionAttribute("이름") : 세션 값 조회 및 주입

@SessionAttributes(이름) :
-Model로 해당 이름으로 값을 속성으로 추가하면 세션에도 동일한 이름으로 추가
-세션에 해당 이름의 값이 있으면 Model에 자동 추가
-Magic Form

-SessionStatus
:setComplete() : SessionAttributes에 지정된 이름의 세션 값을 비울때

@CookieValue

0개의 댓글