[ Spring ]/SpringMVC 1편

[Spring] MVC 패턴 (Model - View - Controller)

쿠릉쿠릉 쾅쾅 2022. 2. 18. 19:07
728x90

 

 

 

 

MVC 패턴 개요

  • MVC 패턴은 서블릿이나 JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다.
  • 사용자가 controller를 조작하면 controller는 model를 통해서 데이터를 가져온다.
  • 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달한다.

 

 

 

 

  • model → controller → view 
  • view → user → controller → model 

 

 

 

🔍 MVC 패턴을 사용하는 이유

  • 사용자가 보는 페이지, 데이터 처리, 그리고 이 2가지를 중간에서 제어하는 컨트롤, 총 3가지로 구성되는 하나의 애플리케이션을 만들면 각각 맡은 바에만 집중할 수 있다.
  • 하나의 역할들만 담당해서 처리를 효율적으로 만든다.
  • 서로 분리되어 각자의 역할을 집중할 수 있게 애플리케이션을 만든다면, 유지보수, 애플리케이션의 확장성, 유연성이 증가되고, 중복코드 문제점이 사라진다.
  • 변경의 라이프 사이클을 기준으로 역할을 분할하여 유지 보수를 쉽게 만든다.

 

 

🔍 Model

  • 데이터를 가진 객체를 모델이라 지칭한다.
  • 데이터는 내부에서 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있다.
  • Model은 HttpServletRequest 객체를 사용한다.
  • HttpServletRequest의 인스턴스인 request는 내부에 데이터 저장소를 가지고 있는데, request.setAttribute() , request.getAttribute() 를 사용하면 데이터를 보관하고, 조회할 수 있다.

 

💡 Model 규칙

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
    • 화면에 네모 박스안에 글자가 표현된다면, 네모 박스의 화면 위치 정보, 네모 박스의 크기 정보, 글자 내용, 글자의 위치, 글자의 포맷 정보 등을 가지고 있어야 한다.
  • view나 controller에 대해서 어떤 정보도 알면 안된다.
    • 데이터 변경이 일어 났을 때, 모델에서 화면UI(view)를 직접 조정해서 수정할 수 있도록 view를 참조하는 내부 속성값을 가지면 안된다.
  • 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다.
    • model의 속성 중 텍스트 정보가 변경되면, 이벤트를 발생시켜 누군가에게 전달해야하며 누군가 모델을 변경하도록 요청하는 이벤트를 보냈을 때 이를 수신할 수 있는 처리 방법을 구현해야 한다.
    • 또한, model은 재사용이 가능해야 하기 때문에 다른 인터페이스에서 변하지 않아야 한다.

 

 

🔍 View

  • 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다.
  • input 텍스트, 체크박스 항복 등과 같이 사용자 인터페이스 요소를 나타낸다.
  • 즉, 데이터 및 객체의 입력, 화면을 보여주는 출력을 담당한다.

 

💡 View 규칙

  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
    • 화면에 글자를 표시하기 위해, 모델 정보를 전달 받게 되는데 그 정보를 유지하기 위해서 임의로 뷰 내부에 저장하면 안된다는 말이다.
    • 단순히 네모 박스를 그리라는 명령을 받으면 화면에 표시하기만 하고 그 화면을 그릴 때 필요한 정보들을 저장하지 않는다.
  • model이나 controller 같은 다른 구성 요소를 모른다.
    • model과 같이 자기 자신을 제외하면 다른 요소를 참조하거나 어떻게 동작하는지 알면 안된다.
    • 그냥 뷰는 데이터를 받으면, 화면에 표시해주는 역할만 가져야 한다.
  • 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.
    • model과 같이 변경이 일어났을 때 누군가에게 변경을 알려줘야하는 방법을 구현해야 한다.
    • view는 사용자가 화면에 표시된 내용을 변경하게 되면 이를 model에게 전달해서 model을 변경해야 한다.
    • 그 작업을 하기 위해 변경 통지를 구현해야 한다.

 

 

🔍 Controller

  • model과 view를 연결해주는 역할을 한다.
  • 주로 비즈니스 로직(문제를 해결하기 위한 과정)이 컨트롤러에 구현되어 있다.

 

💡 Controller 규칙

  • model이나 view에 대해서 알고 있어야 한다.
    • 모델이나 뷰는 서로의 존재를 모르고, 변경을 외부로 알리고, 수신하는 방법만 가지고 있다.
    • 하지만 컨트롤러는 모델과 뷰를 중재하기 위해서 모델과 뷰에 대한 정보를 알고 있어야 한다.
    • 즉, model이나 view에서 변경이 일어 났을 때, 이를 controller에게 알리고, controller는 어떻게 처리할지 결정해 다시 다른 구성 요소에게 변경을 알려주는 중재가 역할을 한다.
  • 모델이나 뷰의 변경을 모니터링 해야 한다.
    • 모델이나 뷰의 변경을 통지 받으면, 이를 해석해서 각각의 구성 요소에게 통지를 해야 한다.

 

 

 

 


👀 참고 자료

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

https://bsnippet.tistory.com/13

 

모델-뷰-컨트롤러(Model-View-Controller MVC)

컴퓨터 프로그램을 개발하면 흔히 MVC 구조, MVC 패턴, MVC 아키텍처라는 단어를 많이 듣게 된다. 그리고 그 뒤에 간단한 설명이 뒤 따른다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며

bsnippet.tistory.com

 

https://m.blog.naver.com/jhc9639/220967034588

 

[개발자 면접준비]#1. MVC패턴이란

오늘은 개발자면접에 많이 나오기도 하는 MVC패턴에 대해서 알아보고자 합니다. 과연 MVC패턴이 무엇...

blog.naver.com

 

728x90