본문 바로가기

웹공부/Spring

Spring 입문 - thymeleaf 템플릿 엔진 동작

-jdk 17 설치

-spring initializr에서 프로젝트 생성 (3.X 버전은 jdk 버전 17이상이어야 함.)

 

intelliJ에서 프로젝트 열기(Gradle로 선택)

 

*Gradle은 버전 설정하고 라이브러리 땡겨오는 것

->build.gradle

 

 

[라이브러리 살펴보기]

Gradle, Maven같은 것들이 의존관계를 다 관리해줌.

 

 

[정적 파일 동작 - 웹페이지 시작 화면]

resources > static 폴더 밑에 index.html 파일 생성.

index.html 파일은 웹페이지 시작화면에 로드되는 html파일이다.

<!DOCTYPE HTML>
<html>
    <head>
        <title>Hello</title>
        <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" />
    </head>
    <body>
    Hello
    <a href="/hello">hello</a>
    </body>
</html>

 

"localhost:8080" 포트로 접속 시 index.html 파일이 렌더링된 페이지가 나옴.

 

 

 

[프로그래밍 결과가 실행되는 화면 만들어보기]

src > main > java > com.example.firstspring 폴더 밑에 "controller"라는 package 생성 후, "HelloController" javaClass 생성

 

-> HelloController에 다음과 같이 자바 코드 작성

package com.example.firstspring.controller;

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

@Controller
public class HelloController {
    @GetMapping("/hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}

 

 

resources > templates > hello.html 생성

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p th:text="안녕하세요. +${data}">안녕하세요. 손님</p>
</body>
</html>

 

 

 

 

[템플릿 엔진 동작]

 

-model 객체 생성해서 attribute에 속성값을 hello.html 페이지로 전달한다.("data": "hello!!")

-helloController함수에서 "hello"를 return하면, resources:templates/hello.html 로 스프링 부트 템플릿 엔진이 viewName을 맵핑해준다.

-hello.html에서는 model의 attribute값을 전달받아 "안녕하세요. {hello!!} 값을 출력함.

 

'웹공부 > Spring' 카테고리의 다른 글

Spring - 정적 컨텐츠, MVC&템플릿 엔진, API  (0) 2024.01.29