쉽게 쉽게

[MVC] MVC 패턴의 구성요소와 동작 본문

CS/CS

[MVC] MVC 패턴의 구성요소와 동작

곱마2 2025. 1. 10. 18:16
반응형

▤ 목차

    1. MVC 패턴이란?

    MVC 패턴은 웹 개발에서 널리 사용되는 강력한 설계 패턴 중 하나로, 사용자 인터페이스와 비즈니스 로직을 분리하여 애플리케이션의 구조를 개선하는 디자인 패턴이다.

    애플리케이션의 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 개발하는 방식이다.

    따라서 MVC 패턴을 도입하면 UI 영역과 도메인(비즈니스 로직) 영역이 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수가 가능하다.

    즉 MVC 패턴의 장점은 아래와 같다. 

    • 각 컴포넌트가 서로 분리되어 개발 과정을 체계화하고 시스템 결합도를 낮출 수 있다.
    • 컴포넌트의 변경이 다른 컴포넌트에 영향을 미치지 않아 유지보수가 쉬우며 중복코드를 제거할 수 있고, 애플리케이션의 확장성 및 유연성이 증가한다.

    2. MVC(Model-View-Controller)란?

     1. Model

    MVC 패턴에서 Model은 데이터를 나타낸다.

    데이터베이스와 통신하며 데이터를 처리하는 DAO나 Repository 뿐만 아니라 Service, DTO, 변수 등 데이터를 다루는 모든 영역이 Model에 해당한다.

    Model에는 중요한 원칙이 존재하는데 이를 유의하며 설계해야 한다.

    • Model은 View 또는 Controller에 대한 어떤 정보도 가져서는 안된다. (독립성 유지)
    • Model은 UI(View)를 직접 조작하거나 호출하지 않으며, UI가 변경되도 Model에 영향이 없어야 한다.(유지보수성)
    • Model은 UI에 독립적이므로, 동일한 데이터를 여러 View 또는 애플리케이션에서 재사용할 수 있다. (재사용성)

    Model은 데이터를 처리하는 역할만 수행하며, View나 Controller에 종속되지 않아야 한다.

     2. View

    MVC 패턴에서 View는 사용자에게 보여지는 UI를 나타낸다.

    주로 HTML, JSP, Thymeleaf 등의 템플릿 엔진을 사용하여 구현한다.

    • View 또한 Model과 마찬가지로 Controller 또는 Model에 대해 어떠한 정보도 가져선 안된다.

    View는 Model에서 받은 데이터를 화면에 표시하고, 사용자의 입력을 Controller에 전달한다.

     3. Controller

    MVC 패턴에서 Controller는 Model과 View를 이어주는 역할을 한다.

    • Controller는 Model과 View에 대한 정보를 가지고 있어야 한다.
    • 변경을 지속적으로 모니터링해서 변경 사항의 처리에 필요한 내용을 각자에게 전달하는 역할을 한다.

    Controller는 사용자의 요청을 받아 해당 요청에 대한 비즈니스 로직을 실행하고, 그 결과를 Model에 저장한 후, 적절한 View로 전달한다.

    3. MVC 패턴 발전 과정

     1. MVC1와 MVC2 패턴

    MVC1 / MVC2

    MVC1는 초기 웹 애플리케이션 (1990년대 중반) 설계 방식으로 JSP가 View와 Controller 역할을 담당하는 구조였다.

    이는 구현이 간단하고 학습 곡선이 낮으나 코드의 재사용성과 유지보수가 어렵다는 단점이 있다.  

    MVC2는 Controller를 추가하여 역할을 분리하고 확장성을 향상시킨 버전의 패턴이다.

    View는 HTML/CSS, Model은 데이터베이스와의 상호작용, Controller는 사용자의 요청을 처리하는 역할로 구체화되었다

     2. Spring MVC 패턴

    2000년대 초반 다양한 프레임워크의 등장하면서 Spring MVC 패턴이 표준으로 자리 잡게 됐다.

    Spring MVC는 MVC2 패턴을 발전시킨 구조로 유연성과 확장성을 제공한다.

    Spring의 DI(Dependency Injection)와 AOP(Aspect-Oriented Programming)를 지원하여 생산성을 높이고, 유지보수성을 향상했다는 특징이 있다.

    4. Spring MVC 구성요소

     1. DispatcherServlet

    DispatcherServlet은 Spring MVC에서 사용자의 모든 요청을 받아 처리하는 프런트 컨트롤러로, 웹 애플리케이션의 진입점 역할을 수행한다.

    DispatcherServlet은 클라이언트로부터 받은 요청을 적절한 컨트롤러에게 전달하여 처리한다.

     2. HandlerMapping

    HandlerMapping은 DispatcherServlet이 요청을 처리할 컨트롤러를 찾는 역할을 한다.

    사용자의 요청 URL을 분석하여 어떤 컨트롤러가 이를 처리할지를 결정한다.

     3. HandlerAdapter

    HandlerAdapter는 매핑된 컨트롤러의 실행을 요청하고, 그 결과를 ModelAndView 객체로 변환한다.

    이는 다양한 종류의 컨트롤러를 유연하게 지원하기 위한 역할을 수행한다.

    https://stonehee99.tistory.com/24

     

    HandlerMapping과 HandlerAdapter는 왜 나뉘었나요?

    오늘은 제가 참여하고 있는 부트캠프 과정인 Kernel360 에서 유명 자바 강사이신 박은종 디렉터님과 함께 스터디를 진행하였습니다. 스터디의 주제는 Spring Web MVC Framework 이었고 그 중 해당 프레임

    stonehee99.tistory.com

     4. ViewResolver

    ViewResolver는 Controller에서 리턴된 뷰 이름을 기반으로 실제 View 객체를 찾는 역할을 한다.

    이를 통해 View 객체는 실제 화면을 생성하고 클라이언트에게 응답한다.

    Spring은 다양한 View 템플릿을 지원하며, ViewResolver는 해당 템플릿을 찾아준다.

    5. Spring MVC 동작

    Spring MVC 동작

    1. Client 요청을 DispatcherServlet이 받는다.
    2. DispatcherServlet은 HandlerMapping를 호출하여 요청 정보를 전달한다. 요청 정보(URL)를 분석하여 적합한 Controller를 선택한다.
    3. 적합한 Controller를 찾았다면 DispatcherServlet가 HandlerAdapter를 호출하여 요청한 URL에 적합한 실제 메서드를 찾게 한다.
    4. HandlerAdapter가 Controller로 요청을 위임한다. Controller는 요청을 처리하고, View에 전달할 결과를 Model 객체에 저장한다.
    5. HandlerAdapter는 Controller가 처리한 결과값을 받아서 ModelAndView 형태로 바꿔 DispatcherServlet에 보내준다.
    6. DispatcherServlet이 ViewResolver를 호출하여 Controller가 리턴한 view name을 기반으로 적합한 View를 찾는다.
    7. DispatcherServlet이 View 객체에 처리 결과를 전달하여 보여준다.
    8. View 객체는 해당하는 View를 호출한다. View는 화면을 표시하는 데 필요한 객체를 가져와 화면에 처리하고, Client에 넘겨준다.

    https://isaac-christian.tistory.com/entry/Spring-Spring-MVC-Framework-MVC-%ED%8C%A8%ED%84%B4%EC%9D%98-%EA%B5%AC%EC%A1%B0-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95

     

    [Spring] Spring MVC Framework: MVC 패턴의 구조, 동작 과정

    Spring MVC Framework는 웹 개발에서 널리 사용되는 아키텍처 중 하나로, MVC(Model-View-Controller) 패턴을 기반으로 한다. 💡MVC 패턴의 구조 Model 정의: 애플리케이션의 데이터를 책임지며, 비즈니스 로직

    isaac-christian.tistory.com

    https://ss-o.tistory.com/160

     

    Spring) Spring MVC 동작 구조

    * https://iri-kang.tistory.com/4 , https://junu0516.tistory.com/92를 참고하여 재작성했음을 밝힙니다. * Spring MVC 동작에 대한 설명입니다. * 오탈자 및 잘못된 정보는 댓글로 알려주시기 바랍니다. * 본 포스팅

    ss-o.tistory.com

     

    잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다.

     

    반응형

    'CS > CS' 카테고리의 다른 글

    CSRF란?  (2) 2024.11.15
    [프로젝트 설정] XML과 Java Configuration 설정 방식  (1) 2024.10.13
    SQL Mapper와 ORM이란?  (0) 2023.05.14
    멀티태스킹, 멀티프로세싱, 멀티스레딩  (1) 2023.05.07
    컴퓨터 구성요소  (0) 2023.05.07