MVC(Model-View-Controller) 패턴의 개념

Model - View - Controller, MVC 는 소프트웨어 공학에서 사용되는 아키텍처 패턴으로 MVC 패턴의 주 목적은 Business logic과 Presentation logic을 분리하기 위함이다.

MVC 패턴을 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음.

  • Model : 애플리케이션의 정보(데이터, Busniness Logic 포함)
  • View : 사용자에게 제공할 화면 (Presentation Logic)
  • Controller : Model과 View 사이의 상호 작용을 관리

컨트롤러(Controller)

  • 클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무르 수행하는 모델 컴포넌트를 호출하는 일을 함(=service객체)
  • 클라이언트가 보낸 데이터가 있다면 모델을 호출할 때 전달하기 쉽게 데이터를 적절히 가공하는 일을 함
  • 모델이 업무 수행을 완료하면, 그 결과를 가지고 화면을 생성하도록 뷰에게 전달(데이터 형태)
  • Servlet과 JSP를 사용하여 작성할 수 있음

뷰(View)

  • (SPA) 주로 Json 형태로 가져와서 HTML/CSS/JS 로 바인딩 하는 형태이다. 
  • HTML과 JSP를 사용하여 작성

모델(Model)

  • 주로 데이터 처리를 담당한다.(DB에서 데이터를 가져온다), DAO클래스, Service 클래스에 해당, VO(Domain객체)

Front Controller 패턴 아키텍처

: 미리 내장 되어 있는 로직, Front Controller가 미리 Controller를 공통 내용을 미리 작성해주므로 편리하다.

  • Front Controller는 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행
  • Front Controller는 적절한 세부 Controller에게 작업을 위임
  • 각각의 애플리케이션 Controller는 클라이언트에게 보낼 를 선택해서 최종 결과를 생성하는 작업
  • Front Controller 패턴은 인증이나 권한 체크처럼 모든 요청에 대하여 공통적으로 처리해야 하는 로직이 있을 경우 전체적으로 클라이언트의 요청을 중앙 집중적으로 관리하고자 할 경우에 사용

 

Spring MVC의 특징

  • Spring은 DI나 APO 같은 기능뿐만 아니라, 서블릿 기반의 웹 개발을 위한 MVC 프레임워크를 제공
  • Spring MVC는 모델2 아키텍처와 Front Controller 패턴을 프레임워크 차원에서 제공 (=내장)
    • DispatcherServlet이라는 클래스를 계층의 맨 앞단에 놓고, 서버로 들어오는 모든 요청을 받아서 처리하도록 구성
    • 예외 발생했을때 처리하는 것도 Front Controller이다.
  • Spring MVC 프레임워크는 Spring을 기반으로 하고 있기 때문에 Spring이 제공하는 트랜잭션처리나 DI 및 AOP등을 손쉽게 사용 

Spring MVC의 주요 구성 요소

 

*3번 Controller가 개발자가 개발해야할 부분.

+ Recent posts