본문 바로가기
IT개발/Spring5

[Spring & MVC] MVC의 이해

by Thompson 2024. 11. 18.
728x90

MVC는 Model-View-Controller의 약자로, 소프트웨어 개발에서 사용되는 아키텍처 패턴입니다. 이 패턴은 애플리케이션을 세 가지 주요 구성 요소로 나누어, 각기 다른 역할을 담당하게 하여 코드의 유지보수성과 재사용성을 높입니다. 스프링에서는 이 패턴을 매우 효과적으로 활용하여 웹 애플리케이션의 구조를 명확하게 분리합니다.

1. Model (모델)

  • 정의: 애플리케이션의 데이터비즈니스 로직을 담당하는 부분입니다. 데이터베이스와 상호작용하거나, 데이터를 처리하는 등의 로직을 포함합니다.
  • 역할: 사용자가 요청한 데이터를 관리하고, 이 데이터를 가공하여 반환합니다.
  • 사용처: DAO, Repository, Service 계층이 주로 이 역할을 수행하며, 데이터베이스의 데이터를 CRUD(생성, 조회, 업데이트, 삭제)하는 로직을 포함합니다.
  • 연결: 모델은 Controller에 의해 호출되며, 필요한 데이터를 조회하거나 변경한 후 다시 컨트롤러에 반환됩니다. 이 데이터는 나중에 View로 전달됩니다.

2. View (뷰)

  • 정의: 사용자가 직접 보는 화면을 담당합니다. 데이터의 시각적 표현으로, HTML, CSS, JavaScript와 같은 프론트엔드 기술을 사용하여 사용자 인터페이스(UI)를 구성합니다.
  • 역할: Model로부터 받은 데이터를 사용자에게 보여주는 역할을 하며, 보통 웹 페이지의 형태로 렌더링됩니다.
  • 사용처: JSP, Thymeleaf, HTML 페이지가 이 역할을 수행합니다. 사용자가 브라우저에서 볼 수 있는 결과 페이지를 생성합니다.
  • 연결: Controller가 모델에서 처리한 데이터를 View로 전달하며, 뷰는 이 데이터를 사용해 사용자에게 결과를 보여줍니다.

3. Controller (컨트롤러)

  • 정의: 사용자의 요청을 받아서, 이를 처리한 후 ModelView를 연결하는 역할을 담당합니다. 사용자가 클릭하거나 입력하는 등의 모든 행동이 컨트롤러에 의해 처리됩니다.
  • 역할: 클라이언트의 요청을 받아서, 해당 요청에 맞는 비즈니스 로직(Model)을 실행하고, 결과를 View로 전달합니다. 보통 요청에 따라 데이터를 조회하거나 변경하는 작업을 합니다.
  • 사용처: Spring에서는 @Controller 또는 @RestController로 컨트롤러를 정의합니다. 요청을 받아 모델과 상호작용한 뒤 결과를 뷰에 전달합니다.
  • 연결: 사용자의 요청을 받아 처리하고, 그 결과를 다시 모델에 전달해 데이터 처리를 한 후, 이를 View에 전달합니다. 사용자 인터페이스로부터 요청을 받아 중재하는 역할을 합니다.
    • 예시: 컨트롤러는 사용자가 보낸 요청을 처리하고, 그에 맞는 결과를 제공하는 역할을 합니다.

< MVC 패턴의 전체 흐름 >

  1. 사용자 요청: 사용자가 브라우저에서 특정 URL을 입력하거나, 버튼을 클릭하면 Controller에 요청이 전달됩니다.
    • 예: 사용자가 /users 페이지를 요청.
  2. Controller 처리: 컨트롤러는 해당 요청을 처리하고, 필요한 데이터를 Model에서 가져오거나 비즈니스 로직을 실행합니다.
    • 예: UserController가 userService.getAllUsers() 메서드를 호출하여 데이터베이스에서 사용자 목록을 가져옴.
  3. Model의 데이터: 컨트롤러는 서비스 계층을 통해 Model로부터 데이터를 가져옵니다. 가져온 데이터를 가공하거나 변환하여 다시 컨트롤러에 전달합니다.
    • 예: 데이터베이스에서 가져온 사용자 목록을 컨트롤러에 반환.
  4. View로 데이터 전달: 컨트롤러는 가져온 데이터를 View에 전달하고, View는 이를 사용자에게 표시할 수 있는 웹 페이지로 렌더링합니다.
    • 예: userList라는 이름의 HTML 페이지에 사용자 목록을 보여줌.
  5. 결과 반환: 사용자는 렌더링된 페이지를 브라우저에서 확인할 수 있습니다.

< 전체 구조 예시 >

  1. Model (데이터 처리) :
    • 데이터를 처리하고, 데이터베이스와 상호작용하는 로직.
  2. Controller (로직 처리) :
    • 사용자의 요청을 받고 데이터를 처리한 후, 결과를 View로 보냄.
  3. View (UI 표시) :
    • 사용자가 볼 수 있는 결과 화면을 표시하는 부분.