페이지 렌더링과 뷰 템플릿

dropKick·2020년 7월 27일
0

목표

  • 스프링 부트와 JPA를 활용한 웹 애플리케이션 구축 학습
  • 도메인 주도 설계를 통한 스프링 starter 웹 앱을 구성

Thymeleaf

클라이언트 사이드 렌더링


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="ko">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title</title>
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
  • 서버 사이드 렌더링 하지 않은 순수한 HTML 파일
  • HTML만 브라우저에 의해서 렌더링 되고, 페이지 소스 보면 th(타임리프)가 그대로 남아있음

서버 사이드 렌더링

Controller

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

hello.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title</title>
</head>
<body>
<p >안녕하세요. hello</p>
</body>
</html>
  • 타임리프 엔진에 의해 서버 사이드 렌더링 된 HTML 파일
  • 페이지 소스에도 렌더링 된 데이터만 남아있음

Thymeleaf 엔진 매핑

  • 어떻게 hello.html을 찾을까
    resources:templates/ +{ViewName}+ .html 라는 형식으로 서버 사이드 렌더링 매핑이 이루어짐
  • 어떻게 Index.html을 찾을까
    스프링 부트가 기본적으로 resource/static/index.html 찾아서 렌더링, 없다면 index 템플릿을 찾음

    Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an index template. If either is found, it is automatically used as the welcome page of the application.
    참고 링크

0개의 댓글