HJW's IT Blog

[SPRING BOOT] MVC Pattern 본문

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

어플리케이션의 정보, 데이터 등을 나타내는데, 다음과 같은 규칙을 가진다

  1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다
  2. View 혹은 Controller에 대한 어떤 정보도 알지 말아야 한다
  3. 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다.
  4.  

View

input text, checkbox 등 사용자 인터페이스 요소를 나타낸다. 다음과 같은 규칙을 가진다

  1. 모델의 정보를 따로 저장해서는 안된다
  2. 모델이나 컨트롤러와 같이 다른 구성 요소들을 몰라야 된다
  3. 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다
  4.  

Controller

데이터와 사용자 인터페이스 요소들을 잇는 다리 역할을 한다. 다음과 같은 규칙을 가진다.

  1. Model이나 View 에 대해 알고 있어야 한다
  2. 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!!” 반환