[Thymeleaf] View 환경설정

728x90

01. Thymeleaf와 jsp의 차이점

 

Thymeleaf는 HTML, XML, JavaScript, CSS 및 일반 텍스트를 처리 할 수 있는 웹 및 독립형 환경에서 사용할 수 있는 Java 템플릿 엔진입니다. Thymeleaf는 html파일을 가져와서 파싱해서 분석후 정해진 위치에 데이터를 치환해서 웹 페이지를 생성합니다.

 

JSP는 서블릿으로 변환되어 실행이 되어집니다.

JSP 내에서 자바 코드를 사용할 수도 있습니다(사용하지 못하도록 설정할 수 있습니다).

 

Thymeleaf는 자바코드를 사용할 수 없고, jsp에서 처럼 커스텀 태그와 같은 기능도 없습니다.

 

02. 장단점
 
JSP는 사실 서블릿이다보니 뭐든지 할 수 있다는게 장점이자 단점이 되겠습니다.
MVC 구조가 주로 사용되면서 JSP는 뷰만 담당하고, JSP에 비즈니스 로직을 넣으면 디버깅 및 유지보수가 힘들어진다고 하여 요즘은 JSP에서는 자바 코드를 사용하지 못하게 하는게 일반적입니다.
 
Thymeleaf 템플릿 엔진의 장점은 페이지를 생성하는데 필요한 정보를 태그의 속성으로 넣고, remove 속성을 이용해서 실제 생성될 페이지에서는 제거될 태그를 넣을 수 있어서 페이지의 프로토타입을 제공할 수 있다는 것입니다.
Thymeleaf로 작성된 페이지를 웹 브라우저로 열어보면 실제 보여질 내용과 동일하게 보여집니다.
디자이너 또는 퍼블리셔가 페이지를 생성하거나 수정할 때 톰캣 같은 웹서버를 실행하지 않고 오프라인에서 수정을 할 수 가 있다는 장점이 있는 것입니다.
 
JSP 페이지를 웹브라우저로 열어보면 제대로 된 모양이 보이지 않습니다.
 
 
 
 

Thymeleaf

Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati

www.thymeleaf.org

 

스프링 공식 튜토리얼 Spring | Guides

 

Spring | Guides

Whatever you're building, these guides are designed to get you productive as quickly as possible – using the latest Spring project releases and techniques as recommended by the Spring team.

spring.io

 

 

 

검색창에 serving web이라고 입력하고 초록색 네모박스를 클릭하면 가이드가 나옵니다. 

 

코드를 입력하면서 따라해보는것도 좋습니다.

 

 

HelloController.java

package com.codezero.study;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model) throws Exception{
    model.addAttribute("data","hello");
        return "hello";
    }




}

 

hello.html

 

파일은 templates 아래에 생성합니다.

 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p th:text="'안녕하세요 '+${data}">안녕하십니까? 손님</p>
</body>
</html>

 

 

 

alt +F2를 눌러서 chrome으로 실행합니다.

 

랜더링이 되기전의 화면이 나옵니다.

 

랜더링이란?

 

더보기

스프링 부트에서 랜더링은 웹 애플리케이션에서 사용자에게 보여지는 화면을 생성하는 과정을 말합니다. 사용자가 요청한 페이지나 데이터를 기반으로 동적으로 HTML, XML, JSON 등의 문서를 생성하고 이를 클라이언트(웹 브라우저)에게 전달합니다. 이렇게 생성된 화면은 사용자에게 시각적으로 나타나며, 웹 애플리케이션의 사용자 경험과 인터페이스를 결정하는 중요한 부분입니다.

스프링 부트에서는 템플릿 엔진을 사용하여 랜더링 작업을 수행합니다. 템플릿 엔진은 미리 정의된 템플릿과 동적으로 변경될 데이터를 결합하여 최종적인 문서를 생성하는 역할을 합니다. 스프링 부트에서는 주로 Thymeleaf, Freemarker, Mustache 등의 템플릿 엔진을 많이 사용합니다.

 

출력)

이제 localhost:8080/hello를 입력해보겠습니다.

 

출력)

 

랜더링을 하지 않는 정적페이지는 static 폴더아래에 만듭니다.

index.html을 만들어보겠습니다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/hello">hello</a>
</body>
</html>

출력)