자바 템플릿 엔진: 서버 측에서 동적으로 HTML을 생성하는 SSR(Server-Side Rendering) 기술
JSP 대체: 스프링 부트에서 기본으로 권장하며, JSP와 달리 특정 웹 서버(Tomcat)에 종속적이지 않음
DevTools 연동: Spring Boot DevTools 의존성 추가 시 뷰 파일 수정 후 자동 새로고침(Live Reload) 지원
기존의 DAO 클래스와 SqlSessionTemplate을 직접 작성하지 않고, @Mapper 인터페이스와 XML 매퍼를 직결하여 사용
동작 규칙 (필수 준수 사항)
인터페이스의 패키지 경로와 XML 파일의 리소스 폴더 구조 일치
인터페이스명과 XML 파일명 일치
XML의 namespace에 인터페이스의 전체 경로(Full Path) 명시 (예: namespace="com.test.java.mapper.AddressMapper")
th: 접두어를 사용하며 99% 이상 HTML 태그의 속성(Attribute) 형태로 사용됨
변수 표현식 (${...})
컨트롤러에서 Model로 전달된 데이터(단일값, DTO, Map 등)를 뷰에 출력 (기존 EL 역할)
예: <div th:text="${dto.name}"></div>
선택 변수 표현식 (*{...})
부모 태그에 th:object="${객체}"를 지정하고, 자식 태그에서는 객체명 없이 프로퍼티명만으로 간결하게 접근
예:
<ul th:object="${dto}">
<li th:text="*{name}"></li>
</ul>
기본 연산자: 자바 및 EL과 동일한 산술, 비교(gt, < 등), 논리(and, or), 삼항 연산자 지원
리터럴 치환 문법 (|...|)
지저분한 문자열 결합(+) 기호 없이, 변수 표현식과 일반 텍스트를 직관적으로 혼합하여 출력
예: <div th:text="|${a} + ${b} = ${a + b}|"></div>
엘비스 연산자 (?:)
변수가 null이거나 거짓(falsy)일 경우 대체할 기본값을 지정하는 축약형 삼항 연산자
예: <div th:text="${name} ?: '익명'"></div>
기존 HTML 태그가 가진 대부분의 속성 앞에 th:를 붙여 서버 데이터를 기반으로 동적 제어
th:value, th:style: input 값이나 CSS 스타일을 동적으로 주입
th:checked, th:selected: 조건식(Boolean)의 결과에 따라 체크박스 활성화나 셀렉트 박스의 옵션 자동 선택 여부 결정
<input type="checkbox" th:checked="${count > 0}">