Spring

002. view를 통한 스프링 웹 개발 기초 스터디 1편

chandlerxx 2023. 10. 21. 12:21

아래 두가지 방식을 실습 위주로 설명 드리겠습니다. (실습환경: IntelliJ)

 

1. static welcome page

2. thymeleaf 템플릿 엔진

 

1. static welcome page  (정적 파일 동작) => View


https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page

It first looks for an `index.html` file in the configured static content locations.

 

스프링 부트가 제공하는 welcome page기능인데요.

html 파일을 만들어서 static 디렉토리에 넣어주면 되겠네요.

(resource/static/index.html)

<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 파일 동작 확인하는 예제입니다.
</body>
</html>

 

로그를 읽어보니 port 8080에서 작동 중이네요.

 

브라우저을 통해 view 확인할 수 있죠.

 

 

2. thymeleaf 템플릿 엔진(동적 환경)  => View


https://en.wikipedia.org/wiki/Thymeleaf

https://www.thymeleaf.org/

뷰 템플릿 엔진이며 컨트롤러의 리턴값을 웹 브라우저 출력되도록 하는 역할을 수행합니다. 

 

https://spring.io/guides/gs/serving-web-content/

가이드 참고하여 실습을 진행해보겠습니다.

 

1. 타임리프 라이브러리를 추가해줍니다.

2.  build.gradle - 타임리프 라이브러리 확인

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

3. Controller 생성 (main/java/controller/greetingController)

model 객체를 생성하여 String 데이터를 view로 전달합니다.

package hello.hellospring.controller;

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

@Controller
public class greetingController {

    @GetMapping("greeting") // url/greeting
    public String greeting(Model model) {
        model.addAttribute("name", "greeting!!!!");
        return "greeting"; // related with templates
    }
}

 

4. template html 파일 생성 (src/main/resources/templates/greeting.html)

Thymeleaf parses the `greeting.html` template.

스프링 부트 템플릿 엔진의 기본 뷰네임 매핑 방식인 듯 하네요. `templates/`+{viewname}+`.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="'안녕하세요. ' + ${name}" >안녕하세요. 환영합니다.</p>
</body>
</html>

 

5. 출력

 


[출처]

https://www.inflearn.com/users/74366/@yh?gad=1&gclid=CjwKCAjwysipBhBXEiwApJOcu11Gmy__QkRwxSjT9pJNflRJSwnlrpg6WfM0r9TRIQD3_uPaKmH3ThoC26QQAvD_BwE

 

김영한님의 소개 - 인프런 | 온라인 강의 플랫폼

인프런 김영한님의 소개 페이지 입니다. - 김영한님 소개 | 인프런

www.inflearn.com