MVC 패턴


Model

  • 어플리케이션 상태의 캡슐화
  • 상태 쿼리에 대한 응답
  • 어플리케이션의 기능 표현
  • 변경을 view에 통지

View

  • 모델을 화면에 시각적으로 표현
  • 모델에게 업데이트 요청
  • 사용자의 입력을 컨트롤러에 전달
  • 컨트롤러가 view를 선택하도록 허용

Controller

  • 어플리케이션의 행위 정의
  • 사용자 액션을 모델 업데이트와 mapping
  • 응답에 대한 view 선택

특징

  • 어플리케이션의 확장을 쉽게 하기 위해 Model, View, Controller 세가지 영역으로 분리
  • 컴포넌트의 변경이 다른 영역 컴포넌트에 영향을 미치지 않음 (유지보수 용이)
  • 컴포넌트 간의 결합성이 낮아 프로그램 수정 용이(확장성이 뛰어남)

장점

  • 화면과 비즈니스 로직을 분리하여 작업
  • 영역별 개발 => 확장성 뛰어남
  • 표준화된 코드를 사용하여 공동작업 용이, 유지보수 좋음

단점

  • 개발과정 복잡 => 초기 개발속도 느림
  • 초보자가 이해하고 개발하기 어려움 => 개발 비용 증가

Spring MVC

DispatcherServlet (Front Controller)

  • 모든 클라이언트의 요청을 받음
  • Controller에게 클라이언트의 요청을 전달하고, Controller가 리턴한 결과값을 View에게 전달하여 알맞은 응답을 생성

HandlerMapping

  • 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정
  • URL과 요청 정보를 기준으로 어떤 핸들러 객체를 사용할지 결정하는 객체이며, DispatcherServlet은 하나 이상의 핸들러 매핑을 가질 수 있음

Controller

  • 클라이언트의 요청을 처리한 뒤, Model을 호출하고 그 결과를 DispatcherServlet에 전달

ViewResolver

  • Controller가 리턴한 뷰 이름을 기반으로 Controller의 처리 결과를 보여줄 View를 결정

View

  • Controller의 처리결과를 보여줄 응답화면을 생성

Spring MVC 요청 흐름

요청 순서

  1. Client의 요청을 DispatcherServlet이 받음
profile
안녕

0개의 댓글

Powered by GraphCDN, the GraphQL CDN