[Spring Boot로 프로그램 만들기] Mustache, Controller 사용해보기

 


0. 이전 포스팅에서 진행한 내용

이전 포스팅에서는 아래의 과정들을 수행했습니다.

  1. Spring Framework 개발을 하기 위하여 필요한 JDK와 IDE인 Eclipse 를 설치
  2. Spring Initializr 를 이용하여 프로젝트 설정 파일을 생성
  3. 해당 설정 파일을 이용하여 Spring 프로젝트를 열고 서버 실행해보기

1. Spring Initializr 로 프로젝트 생성 및 구조 확인

1.1. 프로젝트 생성하기

이번에는 새로 Spring Initializr를 이용하여 프로젝트를 생성하고, 간단한 기능을 가진 프로그램을 만들어보려고 합니다. 아래와 같은 옵션들을 선택하여 프로젝트를 생성하였습니다. Dependencies는 현재 사용하지 않는 Dependencies도 있지만 일단 추가하고 진행해보겠습니다. Group/Artifact 값은 원하는 그룹명/프로젝트명 으로 설정하여 진행하시면 됩니다.

image Spring Initializr 다운로드

설정할 옵션들을 선택한 후에는 zip파일을 다운받아서 IDE에서 해당 프로젝트를 오픈합니다. 프로젝트를 오픈하면 아래와 같이 잘 열리는 것을 확인할 수 있습니다. 실제로 SpringSysinfoApplication Class 를 실행해보면 웹서버가 정상적으로 잘 열리는 것을 확인할 수 있습니다.

image 프로젝트 구조

1.2. 프로젝트 구조

프로젝트 구조는 위와 같이 src 하에 main/java, test/java 로 나눠지는 것을 확인할 수 있습니다. 프로젝트의 뼈대를 이루는 java 코드는 java 패키지 아래에 위치하고 있으며, test 패키지 하에는 test 사용되는 코드를 집어넣습니다. 저는 아래와 같이 SpringSysinfoApplication Class 가 위치하고 있는 패키지 아래에 dto, controller 패키지를 생성하였습니다.

image 프로젝트 구조 _ java 폴더 아래에 controller, dto 패키지 추가

Dto, Controller의 개념은 간단히 서술하면 아래와 같습니다.

  • Dto : Class 간에 데이터를 전송할 때 사용하는 객체
  • Controller : 유저가 보는 View와 정보가 있는 DB를 연결하며 어떻게 데이터를 처리할지 결정하는 곳입니다.

2. template 파일 사용하기

2.1. template 이란?

이번에는 mustache template engine를 이용하여 template를 만들어보겠습니다. template engine이란 프로그램 로직을 표현하는 계층과 서비스를 사용하는 유저가 보는 데이터 출력을 위한 프리젠테이션 계층을 분리하기 위한 수단으로, Controller에서 View로 데이터를 보내면 데이터를 View에서 볼 수 있게 도와줍니다. mustache는 spring을 개발하는 프로그래머들이 많이 사용하는 template 중에 하나라고 합니다.

2.2. template 생성하기

먼저, resources/templates 폴더simple_info.mustache 파일을 생성하였습니다.

image template 생성

생성하면 하기와 같이 txt 파일과 같은 형태로 회색 문서모양의 simple_info.mustache 파일이 생성됩니다. 이 파일은 현재 intelliJ에서 플러그인이 설치되어 있지 않아 제대로 해당 파일을 인식하지 못한 상태라는 의미입니다.

image template 생성 _ mustache file을 intelliJ 에서 제대로 인식하지 않고 있음

IntelliJ의 Preferences 에 들어가서 Plugins 를 선택합니다. Plugins에 들어가서 Marketplace 탭을 선택한 후, mustaache를 검색하여 install 해줍니다.

image preferencs 옵션

image mustache plugin 설치

정상적으로 설치되면 mustache 파일을 정상적으로 인식하는 것을 확인할 수 있습니다.

image mustache plugin 설치

해당 파일을 열면 처음에는 아무 내용도 없는데요. 아래와 같이 doc를 입력한 이후 tab 키를 눌러주면 기본적인 내용으로 채워지게 됩니다.

image mustache 사용하기

image mustache doc 기본 내용

아래와 같이 body에 값을 채워 넣어줍니다.

image mustache doc 에 text 추가

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    Here is simple info!
</body>
</html>

3. Controller 생성하기

image controller 생성을 위한 클래스 생성하기

이제 controller 패키지 아래에 SimpleInfoController를 생성했습니다. 해당 Class를 Controller라고 Spring Framework에 알려주기 위하여 @Controller Annotation을 사용합니다.

image 클래스 생성 후 Annotation 추가

image 클래스 생성 후 Annotation 추가

이후 Method를 생성해줍니다. 메소드는 하기와 같이 작성하며 @GetMapping Annotation을 이용하여 “/simple_info”로 들어오는 데이터를 해당 메소드가 처리하게 해줍니다. 메소드의 return 값은 String 이며, templates 폴더 안에서 simple_info.mustache 파일을 찾아 해당 파일을 유저에게 보여줍니다.

image 원하는 동작을 위한 메소드 추가

package com.melonicedlatte.spring_sysinfo.controller;

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

@Controller
public class SimpleInfoController {
    @GetMapping("/simple_info")
    public String sendSimpleInfo(){
        return "simple_info";
    }
}

4. 결과 확인하기

localhost:8080/simple_info 경로에 접속하여 확인해보면 아래와 같이 결과값을 잘 출력하는 것을 확인할 수 있습니다. 이러한 내용을 기반으로 추가적인 기능을 향후 계속 추가해보겠습니다.

image localhost:8080/simple_info