1. 프로젝트 환경설정

doriskim·2024년 2월 20일
0

김영한의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'
공부하면서 작성함

섹션 1. 프로젝트 환경설정 - view 환경설정

1. welcome page - 정적 페이지

main/resources/static/index.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>

스프링부트는 가장먼저 static파일에서 index.html을 찾아 welcome page를 띄운다. 이 스프링부트에서 제공하는 welcome page 기능을 통해 첫 화면을 띄울 수 있다.

2. thymeleaf 템플릿 엔진 이용하기

소스코드파일구조

다음과 같이 패키지, 파일들을 추가한다.
main/java/hello/hellospring/controller/HelloController.java

package hello.hellospring.controller;

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){
        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> 

동작 원리
http://localhost:8080/hello 를 통해 hello 페이지를 불러오는 경우 다음과 같이 동작한다.

  1. /hello 링크가 입력되면 get method를 통해 HelloController의hello method가 실행된다.

  2. 이때 스프링이 모델을 만들어 넣어준다. 이때 모델에 데이터키는 "data"이고 값은 "hello"인 속성을 넣어준다.

  3. hello method는 "hello"를 리턴한다. 스프링부트는 thymeleaf 템플릿 엔진을 통해 resources/templates 폴더 아래 hello.html를 찾아 화면을 렌더링 해준다. 이때 모델을 화면에 같이 넘긴다.
    ※ 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버(viewResolver)가 화면을 찾아서 처리한다.
    스프링 부트 템플릿엔진은 기본적으로 다음과 같이 viewName을 매핑한다.
    resources:templates/ +{ViewName}+ .html

0개의 댓글