6장 템플릿 엔진

고범규·2025년 7월 18일

Spring Framework

목록 보기
11/14

6-1 템플릿 엔진의 개요

템플릿 엔진이란?

데이터를 미리 정의된 템플릿에 바인딩해서 뷰의 표시를 도와주는 것

타임리프란?

  • HTML 기반의 템플릿 엔진으로, 정해진 문법으로 작성하면 페이지를 동적으로 조립해 준다(조건 분기나 반복 구문 등 사용 가능).
  • HTML을 기반으로 하기 때문에 최종 출력을 생각하면서 뷰를 만들 수 있다. 즉, 타임리프를 사용하면 디자이너와 분업이 용이하다.

스프링 MVC 모델

6-2 Model 인터페이스의 사용법

Model 인터페이스란?

  • 처리한 데이터를 뷰에 표시하고 싶을 경우 데이터를 전달하는 역할
  • 스프링 MVC에 의해 관리되며, 수동 또는 자동으로 객체를 저장하고 관리하는 기능을 제공
  • Model을 이용하고 싶은 경우 요청 핸들러 메서드의 인수에 Model 타입을 전달한다. 그러면 스프링 MVC가 자동으로 Model 타입 인스턴스를 설정

주요 메소드

addAttribute

Model addAttribute(String name, Object value)

특정 이름에 대해 값을 설정한다. 저장하고 싶은 값에 별명을 붙인다고 생각하면 된다. 뷰에서는 별명에 사용한 이름을 이용한다.



6-3 타임리프 사용법

타임리프 복습

  • 스프링 부트에서 추천하는 템플릿 엔진이다.
  • HTML로 템플릿을 작성해서 웹 브라우저로 파일의 내용을 표시하고 확인하면서 뷰를 만들 수 있다.
  • 스프링 부트의 기본 설정으로 src/main/resources/templates 폴더 아래에 '요청 핸들러 메서드의 반환값+ .html'파일이 참조된다.

사용법

직접 문자 삽입


직접 설정한 문자를 출력할 때 th:text="[출력 문자]"로 출력. [출력 문자] 부분에 '${ }' 사용 가능
속성값의 값 설정에 "(큰따옴표)를 사용하므로 문자를 설정할 때는 '(작은 따옴표)로 둘러싼다.

인라인 처리


[[${ }]]를 사용하면 태그를 속성에 추가하는 대신 본문에 변수를 포함할 수 있다.

값 결합



외에도 지역 변수, 비교와 등가, 조건 연산자, 조건 분기, switch, 참조, 반복 등을 사용할 수 있다.

6-4 타임리프를 사용한 프로그램

build.gradle 수정


타임리프의 레이아웃에 필요한 전용 라이브러리인 thymeleaf-layout-dialect를 추가한다.

컨트롤러 생성


요청 핸들러 메서드에 @GetMapping("show") 어노테이션(10번째 줄)을 부여한다.

클라이언트로부터 URL(http://localhost:8080/show)이 GET 메서드로 송신되면 ThymeleafController 클래스의 showView 메서드가 호출되고 13번쨰 줄에서
반환값으로 '뷰 이름: useThymeleaf'를 돌려준다.

showView 메서드의 인수로 11번째 줄의 Model 타입을 설정한다.

뷰 생성

직접 문자를 삽입하여 값 결합 만들기



4번째 줄에서는 Model에 값으로 '이순신'을 저장할 때 설정한 이름인 name을 [[${name}]] 형식으로 사용.

이를 사용하면 태그의 속성에 추가되는 것이 아니라 본체에 변수로 삽입된다.

값 결합(리터럴 치환)에서의 비교와 등가


조건 연산자를 이용한 조건 분기(false)


switch에서 th:object 만들기

엔티티 생성

컨트롤러에 추가

뷰에 추가


어느 값과도 일치하지 않는 값을 출력하는 경우에는 th:case="*"로 지정한다.
java의 default와 같은 사용법이다.

리스트 반복하기

컨트롤러에 추가

뷰에 추가

List나 배열의 요소를 참조 -> 인덱스
Map의 요소를 참조 -> 키

0개의 댓글