Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발자 되기

타임리프 본문

Spring

타임리프

KimMINHun 2021. 9. 29. 16:09

타임리프 특징

- 서버 사이드  HTML 렌더링

- 네츄럴 템플릿

- 스프링 통합 지원

 

텍스트

- HTML 태그의 속성이 아닌 HTML 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶으면 [[...]] 을 사용하면 된다.

 

변수 -> ${...}

SpringEL 다양한 표현식 사용
Object
user.username : user의 username을 프로퍼티 접근 user.getUsername()
user['username'] : 위와 같음 user.getUsername()
user.getUsername() : user의 getUsername() 을 직접 호출
List
users[0].username : List에서 첫 번째 회원을 찾고 username 프로퍼티 접근
list.get(0).getUsername()
users[0]['username'] : 위와 같음
users[0].getUsername() : List에서 첫 번째 회원을 찾고 메서드 직접 호출

Map
userMap['userA'].username : Map에서 userA를 찾고, username 프로퍼티 접근
map.get("userA").getUsername()
userMap['userA']['username'] : 위와 같음
userMap['userA'].getUsername() : Map에서 userA를 찾고 메서드 직접 호출

 

기본 객체들

타임리프는 기본 객체들을 제공한다.
-  ${#request}
- ${#response}
- ${#session}
- ${#servletContext}
- ${#locale}


HTTP 요청 파라미터 접근: param
예) ${param.paramData}HTTP 세션 접근: session
예) ${session.sessionData}
스프링 빈 접근: @
예) ${@helloBean.hello('Spring!')}

 

유틸리티 객체와 날짜

타임리프 유틸리티 객체들
- #message : 메시지, 국제화 처리
- #uris : URI 이스케이프 지원
- #dates : java.util.Date 서식 지원
- #calendars : java.util.Calendar 서식 지원
- #temporals : 자바8 날짜 서식 지원
- #numbers : 숫자 서식 지원
- #strings : 문자 관련 편의 기능
- #objects : 객체 관련 기능 제공
- #bools : boolean 관련 기능 제공
- #arrays : 배열 관련 기능 제공
- #lists , #sets , #maps : 컬렉션 관련 기능 제공
- #ids : 아이디 처리 관련 기능 제공, 뒤에서 설명

 

URL 링크 

- 타임리프에서 URL을 생성할 때는 @{...} 문법을 사용

단순한 URL
@{/hello} /hello


-쿼리 파라미터
@{/hello(param1=${param1}, param2=${param2})}
/hello?param1=data1&param2=data2
() 에 있는 부분은 쿼리 파라미터로 처리된다.


-경로 변수
@{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})}
/hello/data1/data2
URL 경로상에 변수가 있으면 () 부분은 경로 변수로 처리된다.


-경로 변수 + 쿼리 파라미터
@{/hello/{param1}(param1=${param1}, param2=${param2})}
/hello/data1?param2=data2
경로 변수와 쿼리 파라미터를 함께 사용할 수 있다.

 

리터럴

리터럴은 소스 코드상에 고정된 값을 말하는 용어

- 타임리프에서 리터럴은 항상 '(작은 따음표)로 감싸야 한다.

하지만 공백없이 쭉 이어진다면 하나의 의미있는 토큰으로 인지하게 때문에 작은 따음표를 생성할 수있다.

 

리터럴 대체 : '(작은 따음표) 로 묶지 않고 | 를 이용해 사용할 수도 있다.

 

속성 값 설정

타임리프 태그 속성 

타임리프는 주로 HTML 태그에  th:* 속성을 지정하는 방식으로 동작, 속성을 적용하면 기존 속성을 대체, 기본 속성이 없을 시 생성

속성 추가
- th:attrappend : 속성 값의 뒤에 값을 추가한다.
- th:attrprepend : 속성 값의 앞에 값을 추가한다.
- th:classappend : class 속성에 자연스럽게 추가한다.

 

반복

: 타임리프에서 반복은 th: each 를 사용한다. 

- th : each 는 List 뿐만 아니라 배열등 java.util.Iterable , java.util.Enumeration 을 구현한 모든 객체에 사용가능

- Map에 사용할 때는 변수에 담기는 값은 Map.Entry 

 

반복 상태 유지

<tr th:each="user, userStat : ${users}">

반복의 두번째 파라미터를 설정해서 반복의 상태를 확인 할 수 있습니다.
두번째 파라미터는 생략 가능한데, 생략하면 지정한 변수명( user ) + Stat 가 됩니다.
여기서는 user + Stat = userStat 이므로 생략 가능합니다.

 

반복상태 유지기능

- index : 0부터 시작하는 값

- count : 1부터 시작하는 값

- size : 전체 사이즈

- even, odd : 홀수,짝수 여부(boolean)

first, last : 처음, 마지막 여부(boolean)

current : 현재 객체

 

if,unless : 타임리프에서는 조건이 맞지 않으면 그 태그 전체를 렌더링하지 않는다.

switch : * 만족하는 조건이 없을 때 사용하는 디폴트이다

 

주석

표준 HTML 주석 : <!--   --!>

->타임리프가 렌더링 하지 않고 그대로 남겨둠

 

타임리프 파서 주석 : <!--/*-->    <!--*/-->

->타임리프 파서 주석은 타임리프의 진짜 주석, 렌더링에서 주석 부분을 제거

 

타임리프 프로토타입 주석 : <!--/*/      /*/--> 

->타임리프를 렌더링한 경우에는 보이지만, HTML 파일 자체를 보면 주석 처리

 

블록 : <th:block> 

 

자바스크립트 인라인

<script th:inline="javascript"> 을 이용해 타임리프가 제공해 자바스크립트에서 타임리프를 편리하게 사용할 수 있는 자바스크립트 인라인 기능을 제공한다.

 

자바스크립트 인라인의 반복

ex)

<script th:inline="javascript">
 [# th:each="user, stat : ${users}"]
 var user[[${stat.count}]] = [[${user}]];
 [/]

 

 

 

 

출처) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

 

'Spring' 카테고리의 다른 글

스프링 통합, 메세지&국제화  (0) 2021.09.30
템플릿  (0) 2021.09.29
Multi-Thread  (0) 2021.09.08
웹 어플리케이션의 이해  (0) 2021.09.08
파일 업로드 방식  (0) 2021.03.27