본문 바로가기
Back end/Spring

[Spring] MVC(Model-View-Controller)

by 더 이프 2023. 7. 24.
728x90

목차

    1. MVC

    ■ 정의

    MVC(Model-View-Controller)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하여 더 나은 업무의 분리와 향상된 관리가 가능합니다.

    ■ 구성요소

    • Controller는 로직을 의미하며 사용자의 요청에 따라 URL을 분석하여 Model과 View를 호출
    • Model은 데이터의 저장소이며 Controller의 요청에 따라 사용자가 요청한 내용을 업데이트
    • View는 인터페이스 요소로서 Model에서 업데이트된 내용을 사용자에게 보여줌

    ■ 구조

     

    2. Spring MVC

    ■ 정의

    Spring MVC는 기본요소인 Model, View, Cotroller외에도 여러 컴포넌트들을 가집니다. 추가적인 컴포넌트들은 DispatcherServlet, HandlerMapping, Interceptor, ViewResolver등이 있으며 각각의 역할이 명확하게 분리되어 있습니다. 특히 Controller나 폼 클래스 작성시에 특정 클래스를 상속받거나 참조할 필요 없이 POJO를 작성함으로써 비즈니스 로직에 집중한 코드를 작성할 수 있으며 JSP 폼을 쉽게 구성하도록 Tag를 제공합니다.

    ■ 구성요소

    • DispatcherServlet은 Spring MVC 프레임워크의 Front Controller, 웹 요청과 응답의 Life Cycle을 주관하며 요청 시 Model과 View의 객체를 생성
    • HandlerMapping은 웹 요청시 해당 URL을 어떤 Controller가 처리할지 찾아서 결정
    • Controller는 비즈니스 로직을 수행하고 해당 결과 데이터를 ModelAndView에 반영
    • ModelAndView는 Controller가 수행 결과를 반영하는 Model 데이터 객체와 View객체 로 이루어짐
    • ViewResolver는 어떤 View를 선택할지 결정
    • 결과 데이터인 Model 객체를 화면에 출력

    ■ 구조