Spring
[SPRING BOOT] MVC Pattern
kiki1875
2024. 5. 28. 13:42
MVC Pattern 이란?
Model View Controller 패턴이다. 어플리케이션의 데이터(Model) , 사용자 인터페이스 (View) , 제어로직 (Controller) 를 분리하여 개발하는 아키텍처 패턴이다.
Model : 데이터와 비즈니스 로직을 처리하는 계층으로, 데이터베이스와 상호작용하며, 데이터를 가공하고 조작한다. Model 은 View 혹은 Controller 에 대한 정보를 가지고 있지 않다
View : 사용자에게 표기되는 UI 계층으로, Model 의 데이터를 가져와 사용자에게 보여준다.
Controller : 사용자의 입력을 받아 Model 과 View 를 제어하는 계층으로, 사용자의 요청을 처리한다.

Model
어플리케이션의 정보, 데이터 등을 나타내는데, 다음과 같은 규칙을 가진다
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다
- View 혹은 Controller에 대한 어떤 정보도 알지 말아야 한다
- 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다.
View
input text, checkbox 등 사용자 인터페이스 요소를 나타낸다. 다음과 같은 규칙을 가진다
- 모델의 정보를 따로 저장해서는 안된다
- 모델이나 컨트롤러와 같이 다른 구성 요소들을 몰라야 된다
- 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다
Controller
데이터와 사용자 인터페이스 요소들을 잇는 다리 역할을 한다. 다음과 같은 규칙을 가진다.
- Model이나 View 에 대해 알고 있어야 한다
- Model 과 View 의 변경을 모니터링 해야 한다.
@Controller 어노테이션은 스프링 컨테이너에 해당 클래스가 컨트롤러 역할을 한다는 것을 알린다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "Hello!!");
return "hello";
}
}
- @Controller 어노테이션으로 해당 클래스를 스프링 컨테이너에 등록 해준다
- 이후, 클라이언트에서 url/hello 를 호출했을 경우 @GetMapping(”hello”)를 찾는다 (GET 요청)
- 이때 Model 은 controller 와 view 사이에 데이터를 전달하는 역할을 한다
- return “hello” → resource/templates/hello.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="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
- 해당 페이지의 ${data} 는 컨트롤러를 통해 “Hello!!” 반환