본문 바로가기
Server/Spring

HTML 페이지 렌더링 시 고정된 데이터 포함하기(MVC와 템플릿엔진 이용해보기)

by print_soo 2024. 8. 24.

1. Welcome Page 만들기 

(파일 경로: src/main/resources/static/index.html)

 

아래의 html을 구성해서 간단한 Welcome Page를 만들어보자.

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

 

 

2. MVC 패턴을 이용하여 특정 경로로 들어오는 GET 요청 처리하는 컨트롤러 만들기

(파일 경로: src/main/java/hello_spring/controller/HelloController)

 

package hello.hello_spring.controller;

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

@Controller
public class HelloController {

    @GetMapping("hello")
        model.addAttribute("data", "hello!111!");
        return "hello";
    }
}

 

 

코드를 하나씩 해석보자. 

 

package hello.hello_spring.controller;

-> hello.hello_spring.controller 패키지에 속한 클래스임을 선언합니다.


import org.springframework.ui.Model;

-> Model 객체를 사용하기 위해 Spring의 Model 클래스를 가져옵니다.


import org.springframework.stereotype.Controller;

-> @Controller 어노테이션을 사용하기 위해 Spring의 Controller 클래스를 가져옵니다.


import org.springframework.web.bind.annotation.GetMapping;

-> @GetMapping 어노테이션을 사용하기 위해 Spring의 GetMapping 클래스를 가져옵니다.


@Controller

-> 이 클래스를 Spring MVC의 컨트롤러로 지정합니다.


public class HelloController {

-> HelloController라는 이름의 클래스를 정의합니다.


@GetMapping("hello")

-> /hello 경로로 들어오는 HTTP GET 요청을 처리할 메서드를 지정합니다


public String hello(Model model){

 

-> hello라는 메서드를 정의하며, Model 객체를 매개변수로 받아 뷰에 데이터를 전달할 수 있게 합니다.


model.addAttribute("data", "hello!111!");

-> 뷰에 전달할 데이터로 "hello!111!" "data"라는 이름으로 모델에 추가합니다.


return "hello";

-> hello라는 이름의 뷰(hello.html)를 반환하여, 해당 뷰를 렌더링하도록 합니다.


 

 

3. hello Page 만들기

(파일 경로: src/main/resources/templetes/hello.html)

 

아래의 html을 구성해서 간단한 hello Page를 만들어보자.

<!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>