본문 바로가기
Backend/Spring

[Spring] 뷰 템플릿과 MVC 패턴 실습(페이지 만들기) (1)

by 희디 2023. 8. 16.

뷰 템플릿을 만드는 것 : 확장자 mustache (ex. greetings.mustache)

resources의 templates에 만들면 된다. 

 

머스테치 플러그인이 필요하므로 Install~에서 ok를 눌러주면 이렇게 나온다.

다음은 컨트롤러를 만들어야 한다. 

컨트롤러는 src > main > java 디렉터리에 하나의 패키지로 만든다. 

 

com.example.firstproject에서 new > package로 com.example.firstproject.controller를 만든다. 

그러고나서 해당 controller 패키지에서 new > java class로 FIrstController 클래스명을 지정한다. 

 

실행하면서 또 문제가 생겨서

> Process 'command 'C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe'' finished with non-zero exit value 1

https://velog.io/@dogakday/IntelliJ-%EC%8B%A4%ED%96%89%EC%8B%9C-finished-with-non-zero-exit-value-1-%EC%97%90%EB%9F%AC

 

IntelliJ 실행시 finished with non-zero exit value 1 에러

Process 'command 'C:/Program Files/AdoptOpenJDK/jdk-11.0.8.10-hotspot/bin/java.exe'' finished with non-zero exit value 1File > Settings 메뉴 클릭 (단축키: ct

velog.io

 

(사람들은 너무 똑똑하다..)

 

@Controller : 컨트롤러 어노테이션 

@GetMapping("/URL") : 클라이언트의 URL 요청을 받아 특정 컨트롤러의 메서드가 처리하게 한다. 

{{ }} : 변수로 사용하는 것. 모델적용

 

모델은 컨트롤러의 메서드에서 매개변수로 받아온다. 

매개변수를 추가해주고, 모델에서 변수를 등록할 땐 addAttribute("변수명", 변수값) 메서드를 사용 

 

<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>
    <h1>{{username}}님, 반갑습니다!</h1>
</body>
</html>

greetings.mustache (뷰 템플릿)

 

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

@Controller
public class FirstController {

    @GetMapping("/hi")
    public String niceToMeetYou(Model model){
        model.addAttribute("username", "희디");
        return "greetings";
    }
}

FirstController.java (Controller) + 모델추가

: 메서드를 수행한 결과로 greeting.mustache 파일을 반환한다. 

: 이때 return 문에는 파일 이름만 작성하면 됨

(서버가 알아서 templates 디렉터리에 있는 뷰 페이지 찾아서 웹 브라우저로 전송함)

 

package com.example.firstproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FirstprojectApplication {

	public static void main(String[] args) {
		SpringApplication.run(FirstprojectApplication.class, args);
	}

}

Main 함수. 

 

MVC 패턴으로 홈페이지 만드는 알고리즘, 순서 

1. 뷰 페이지 만들기(greetings.mustache)

2. 컨트롤러 만들기(FirstController.java) : src>main>java에서 새로운 컨트롤러 패키지 생성 후 클래스 추가(.java)

3. 컨트롤러에서 뷰 페이지 반환하기 : return "greetings";

4. 뷰 페이지에 변수 삽입하기 : {{username}}

5. 컨트롤러에 모델 추가하기 : niceToMeetYou(Model model)

6. 모델에서 변수 등록하기 : model.addAttribute("username", "희디");

 

 

MVC의 역할과 실행 흐름 이해하기 

 

컨트롤러가 클라이언트의 요청을 받고, 뷰가 최종 페이지를 만들고, 모델이 최종 페이지에 쓰일 데이터를 뷰에 전달.

 

정리하면 아래와 같다!

 

 

 

 

하나의 컨트롤러엔 하나의 뷰 템플릿만 매치가 되는것인가???

 

 

[내용 출처] : https://www.gilbut.co.kr/book/view?bookcode=BN003778&keyword=%EC%8A%A4%ED%94%84%EB%A7%81&collection=GB_BOOK 

 

코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문

만들면서 배우는 친절한 백엔드 개발 자습서

www.gilbut.co.kr