Java/Spring

[스프링] MVC(Model-View-Controller)

ImYena 2021. 9. 2. 02:26
728x90

MVC(Model-View-Controller)

  • 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
  • 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니 로직을 서로 영향 없이 쉽게 수정할 수 있는 애플리케이션 개발에 사용

 

Controller

  • 명령을 Model과 View 부분으로 *라우팅
  • 데이터와 비즈니스 로직 사이의 상호 동작 관리
  • 애플리케이션의 사용자로부터의 입력에 대한 응답으로 Model 또는 View를 업데이트하는 로직 포함
예를 들어보면, 쇼핑 리스트는 항목을 추가하거나 제거할 수 있게 해주는 입력 폼과 버튼을 갖습니다. 이러한 액션들은 모델이 업데이트되는 것이므로 입력이 컨트롤러에게 전송되고, 모델을 적당하게 처리한다음, 업데이트된 데이터를 뷰로 전송합니다.

출처 : https://developer.mozilla.org/ko/docs/Glossary/MVC
  • Model에 명령을 보냄으로써 모델 상태 변경
    • 관련된 View에 명령을 보냄으로써 Model의 표시 방법 수정 가능
    • Model의 mutator 함수를 호출하여 상태 변경
    • Controller의 명령으로 모델의 상태가 바뀌면, Model은 등록된 View에 자신의 상태가 바뀌었다는 것을 알리고, View는 거기에 맞게 사용자에게 Model의 상태를 보여줌

*라우팅(Routing) : 어떤 네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정

 

Model

  • 데이터와 비즈니스 로직 관리
  • 동작을 수행하는 코드
  • 애플리케이션이 포함해야 할 데이터 정의
  • 표시 형식에 의존하지 않음, 사용자에게 어떻게 보일지 신경쓰지 않아도 됨!
  • 순수하게 public 함수로만 이루어져 있음
    • 몇몇 함수들은 사용자 질의(query)에 대해 상태 정보를 제공, 나머지 함수들은 상태를 수정
  • Model의 상태 변화(데이터 변경)가 있을 때 Controller와 View에 이를 통보
    • 이를 통해 View는 최신의 결과를 보여줄 수 있고, Controller는 Model의 변화에 따른 적용 가능한 명령을 추가/제거/수정
      • 어떤 MVC 구현에서는 Model의 통보 대신 View나 Controller가 직접 Model의 상태를 읽어오기도 함!
  • Model은 여러 개의 View를 가질 수 있음

 

View

  • 레이아웃과 화면 처리
    • 데이터를 보여주는 방식 정의
  • UI를 생성하기 위해 Model로부터 정보를 얻음
    • Model에게 질의하고, Model로부터 값을 가져와 사용자에게 보여줌
  • View는 여러 개의 Controller를 가질 수 있음

 

참고 : https://developer.mozilla.org/ko/docs/Glossary/MVC

728x90
반응형