스프링 MVC 처리 흐름
도메인 클래스 설정
LomBok: getter, setter 등의 속성정보와 관련된 메소드를을 정의한 라이브러리 (의존성 추가 별도로 필요)
※ 라이브러리 추가 방법
1) pom.xml 등 의존성이 정의된 파일에 직접 추가
2) 실행가능한 jar 파일을 직접 찾아 실행파일 디렉터리에 복사
Data: final 속성 초기화 생성자, Getter.Setter 등의 생성을 Lombok에 알려주는 어노테이션
컨트롤러 클래스 설정
뷰 디자인
유효성 검사 필요한 상황?
유효성 검사 방법
유효성 검사를 위한 절차
1) 유효성 검사 규칙 선언
2) 컨트롤러 메소드에 유효성 검사 수행 지정
3) 유효성 검사 에러 뷰에 표현
유효성 검사 주요 어노테이션 및 속성
NotNull: 속성 값이 null 값을 가지지 않음
Size: 문자열 또는 리스트의 길이 min, max 등을 지정
NotBlank: 속성 값이 반드시 입력되어야 함
CreditCardNumber: 속성 값이 룬 알고리즘에 의해 적합한 카드번호여야 함
※ 룬 알고리즘: 신용카드번호, 주민등록번호 등이 유효한 값인지를 검사하는 알고리즘 (참고)
message: 유효성 규칙을 충족하지 못할 때 보여줄 메시지 (모든 유효성 검사 어노테이션이 가지고 있는 속성)
Valid: 제출된 폼이 유효성 검사를 수행하는 객체
유효성 검사 에러 표현 (예시 코드)
<label for="deliveryName">Name: </label>
<input type="text" th:field="*{deliveryName}"/>
<span class="validationError"
th:if="${#fields.hasErrors('deliveryName')}"
th:errors="*{deliveryName}">Name Error</span>
스프링 부트 지원 템플릿.의존성
1) FreeMarker (spring-boot-starter-freemarker)
2) Groovy 템플릿 (spring-boot-starter-groovy-templates)
3) JSP (톰캣이나 제티 서블릿 컨테이너에서 제공)
4) Mustache (spring-boot-starter-mustache)
5) Thymeleaf (spring-boot-starter-thymeleaf)
JSP vs Thymeleaf
템플릿 캐싱
템플릿은 최초 사용 시 한번만 파싱 → 파싱 후 캐시에 저장
(장점) 요청을 처리할 때 마다 파싱 수행 X → 성능 향상
(단점) 캐싱된 페이지를 항상 보여주므로 수정된 내용을 즉각적으로 반영 X (캐싱의 비활성화 별도로 필요)