ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 타임리프
    스프링/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2024. 1. 23. 23:12

    타임리프 특징

    • 서버 사이드 HTML 렌더링 (SSR)
    • 네츄럴 템플릿
      더보기

      타임리프는 순수 HTML을 최대한 유지하는 특징이 있다.

      타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 할 수 있고, 서버를 통해서 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다.

      JSP를 포함한 다른 뷰 템플릿들은 해당 파일을 열면, 예를 들어서 JSP파일 자체를 그대로 웹 브라우저에서 열어보면 JSP 소스코드와 HTML이 뒤죽박죽 섞여서 웹 브라우저에서 정상적인 HTML 결과를 확인할 수 없다.

      오직 서버를 통해서 JSP가 렌더링 되고 HTML 응답 결과를 받아야 화면을 확인할 수 있다.

      반면에 타임이르포 작성된 파일은 해당 파일을 그대로 웹 브라우저에서 열어도 정상적인 HTML 결과를 확인할 수 있다.

      물론 이러한 경우 동적으로 결과가 렌더링 되지는 않지만,

      HTML 마크업 결과가 어떻게 되었는지는 파일만 열어봐도 알 수 있다.

      이렇게 순수한 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿(natural templates)이라 한다.

    • 스프링 통합 지원
      타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다.

     

    기본 표현식

    더보기
     • 간단한 표현:
     ◦ 변수 표현식: ${...}
     ◦ 선택 변수 표현식: *{...}
     ◦ 메시지 표현식: #{...}
     ◦ 링크 URL 표현식: @{...}
     ◦ 조각 표현식: ~{...}
     • 리터럴
    ◦ 텍스트: 'one text', 'Another one!',…
     ◦ 숫자: 0, 34, 3.0, 12.3,…
     ◦ 불린: true, false
     ◦ 널: null
     ◦ 리터럴 토큰: one, sometext, main,…
     • 문자 연산:
     ◦ 문자 합치기: +
     • 산술 연산:
     ◦ 리터럴 대체: |The name is ${name}|
     ◦ Binary operators: +, -, *, /, %
     ◦ Minus sign (unary operator): 
    • 불린 연산:
     ◦ Binary operators: and, or
    ◦ Boolean negation (unary operator): !, not
     • 비교와 동등:
     ◦ 비교: >, <, >=, <= (gt, lt, ge, le)
     ◦ 동등 연산: ==, != (eq, ne)
     • 조건 연산:
     ◦ If-then: (if) ? (then)
     ◦ If-then-else: (if) ? (then) : (else)
     ◦ Default: (value) ?: (defaultvalue)
     • 특별한 토큰:
     ◦ No-Operation: _

     

    텍스트 - text, utext

    타임리프의 가장 기본 기능인 텍스트를 출력하는 기능 먼저 알아보자.

     

    HTML 태그의 콘텐츠에 데이터를 출력할 때 에는 다음과 같이 사용하면 된다.

    th:text="${data}"

     

    HTML 태그의 속성이 아니라 콘텐츠 영역안에서 직접 데이터를 출려갛고 싶으면 다음과 같이 [[...]]를 사용하면 된다.

     컨텐츠 안에서 직접 출력하기 = [[${data}]]

     

    Escape

    HTML 문서는 < ` , ` > ` 같은 특수 문자를 기반으로 정의된다. 따라서 뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 ` 데이터에 이러한 특수 문자가 있는 것을 주의해서 사용해야 한다. 

     

    <b> </b> 를 사용하면 글자를 진하게 나오게 할 수 있다.

     

    HTML 엔티티

    웹 브라우저는 <를 HTML 태그의 시작으로 인식한다. 따라서 <를 태그의 시작이 아니라 문자로 표현할 수 있는 방법이 필요한데, 이것을 HTML 엔티티라고 한다. 그리고 HTML에서 사용하는 특수 문자를 HTML 엔티티로 변경하는 것을 이스케이프(escape)라고 한다. 그리고 타임리프가 제공하는 th:text, [[...]]는 기본적으로 이스케이프를 제공한다.

     

    Unescape

    이스케이프 기능을 사용하지 않으려면 어떻게 해야할까?

    th:inline="none" : 타임리프는 [[...]] 를 해석하기 때문에, 화면에 [[...]] 글자를 보여줄 수 없다.

    이 태그 안에서는 타임리프가 해석하지 말라는 옵션이다

     

    변수 - SpringEL

    타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다

    변수 표현식 : ${...}

     

    유틸리티 객체와 날짜

    타임리프는 문자, 숫자, 날짜, URI등을 편리하게 다루는 다양한 유틸리티 객체들을 제공한다.

     

    타임리프 유틸리티 객체들

    더보기

    #message : 메시지, 국제화 처리

    #uris : URI 이스케이프 지원

    #dates : java.util.Date 서식 지원

    #calendars : java.util.Calendar 서식 지원

    #temporals : 자바8 날짜 서식 지원

    #numbers : 숫자 서식 지원

    #strings : 문자 관련 편의 기능 

    #objects : 객체 관련 기능 제공

    #bools : boolean 관련 기능 제공

    #arrays : 배열 관련 기능 제공

    #lists, #sets, #maps : 컬렉션 관련 기능 제공

     

     

     

Designed by Tistory.