디자인 패턴 중 하나인 MVC 패턴은 Model, View, Controller의 줄임말로 어플리케이션을 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴을 의미한다.
사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향 없이 쉽게 고칠 수 있는 설계가 가능하다.
Model과 View 사이에서 브릿지 역할을 수행한다.
앱의 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트 하는 로직을 포함한다.
사용자의 요청은 모두 컨트롤러(Controller)를 통해 진행되어야 한다.
컨트롤러로 들어온 요청은 어떻게 처리할지 결정하여 모델로 요청을 전달함.
데이터를 처리하는 영역이다.
데이터베이스와 연동을 위한 DAO(Data Access Object)와 데이터의 구조를 표현하는 DO(Data Object)로 구성된다.
데이터를 보여주는 화면 자체의 영역을 뜻한다.
사용자 인터페이스(UI)요소들이 여기에 포함되며, 데이터를 각 요소에 배치한다.
뷰에서는 별도의 데이터를 보관하지않음.
어플리케이션의 역할을 세 구간으로 나누어 설계함으로써 서로 간의 의존성이 낮아진다.
각 영역이 독립적으로 구성되어 개발자 간 분업 및 협업이 원활해진다.
한 영역을 업데이트 하더라도 다른곳에 영향을 주지 않음.
firstproject/src/main/java/com.example.firstproject 경로로 들어가 controller 패키지를 생성한 후 FirstController 클래스를 만든다.
package com.example.firstproject.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller // 컨트롤러 어노테이션 생성
public class FirstController {
@GetMapping("/hi") // 겟맵핑 어노테이션으로 url 좌표를 설정
public String niceToMeetYou(Model model) { // 파라미터안에 불러올 Model을 설정
model.addAttribute("username", "재현");
return "greetings"; // templates/greetings.mustache 경로에서 브라우저로 전송
}
firstproject/src/main/resources/templates/greetings.mustache 경로로 들어가 View 파일을 생성한다. (greetings.mustache)
<!doctype html>
<html lang="en">
<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> // mustache 전용 코드를 작성한다. ({{변수명}})
</body>
</html>
이후 서버를 재가동 한 후 localhost:8080/hi로 접속해보면
재현님, 반갑습니다!가 출력이 되는걸 확인할 수 있다.