김영한 교수님의 스프링 입문편을 보고 정리한 노트이다. 절대 공유 및 배포 금지.


1. Validation

1. Validation Introduction

주로 요구되는 검증은 다음과 같다.

  1. 타입 검증
  2. 필드 검증
  3. 특정 필드의 범위를 넘어서는 검증

이러한 검증은 컨트롤러에서 이루어지게 된다. 클라이언트 딴에서 검증은 조작이 가능하므로 보안에 취약하다. 또, 서버만으로 검증하면 고객 사용성이 부족해진다. 결국 서버에 데이터를 보내야 검증이 가능하기 때문이다. 따라서 둘을 섞어서 사용하되, 최종적으로 서버 검증은 필수이다. API의 경우 API를 잘 명세해서 검증 오류를 API 응답 결과에 잘 남겨주어야 한다.


2. V1 - 검증 직접 처리

image.png

image.png

중요한 점은 잘못된 POST /add 요청에 대해 컨트롤러에서 검증 로직을 돌린 후, 사용자가 입력한 값을 유지한 채로 상품 등록 폼을 다시 보여줘야 한다는 것이다. 이를 위해 검증 로직 이후 상품 등록 폼에 사용자가 입력한 값이 담겨있는 모델을 포함하여 전달해줘야 한다.

바로 개발해보자.

그런데 상품 등록에 실패한 뒤 다시 화면을 렌더링했는데 별 다른 처리 없이도, 기존에 사용자가 입력했던 값들이 남아있다. @ModelAttribute 를 사용했기 때문인데, @ModelAttribute는 다음과 같이 동작한다.

  1. POST 요청의 파라미터 이름으로 Item 객체의 property를 찾아 바인딩함.
  2. 바인딩된 Item 객체를 모델에 추가함.