6. MVC 디자인 패턴이란?

2026. 2. 9. 23:27·BackEnd/내일배움캠프

디자인 패턴이란?

디자인 패턴이란,
소프트웨어를 효율적으로 개발하기 위해
반복적으로 등장하는 문제에 대한 검증된 해결 방법을 정리해 둔 개념이다.

즉,

"이런 상황에서는 보통 이렇게 설계하면 좋다"

라는 개발자들의 공통된 약속이라고 볼 수 있다.


MVC 패턴이란?

MVC(Model–View–Controller) 는
대표적인 소프트웨어 디자인 패턴 중 하나다.

애플리케이션의 역할을 세 가지로 분리하여

  • 관심사를 분리하고
  • 유지보수를 쉽게 만들기 위한 구조다.

MVC 구성 요소

Model

  • 데이터와 비즈니스 로직을 담당
  • DB 접근, 핵심 로직 처리

View

  • 사용자 인터페이스(UI)를 담당
  • 사용자에게 보여지는 화면

Controller

  • Model과 View 사이의 흐름을 제어
  • 사용자의 요청을 받아
    • Model에 전달하고
    • 처리 결과를 View로 전달

MVC 요청 흐름 개념

  1. 사용자가 요청을 보냄
  2. Controller가 요청을 받음
  3. Model을 통해 비즈니스 로직 처리
  4. 처리 결과를 View로 전달
  5. View가 사용자에게 화면을 보여줌

Spring Web MVC란?

Spring Web MVC는
Servlet API를 기반으로 구축된 Spring Framework의 웹 프레임워크다.

  • Spring Framework 초기부터 포함된 핵심 모듈
  • 공식 모듈명: spring-webmvc
  • 일반적으로 Spring MVC라고 불린다

Spring MVC는
Front Controller 패턴을 기반으로 설계되었다.

중앙에서 요청을 처리하는 하나의 컨트롤러를 두고,
공통된 처리 로직을 집중시키는 구조다.


Servlet 기반 요청 처리 흐름

Spring MVC를 이해하기 전에,
기존 Servlet 기반 요청 처리 흐름을 먼저 살펴볼 필요가 있다.

  1. Client(브라우저)가 HTTP Request 전송
  2. Servlet 컨테이너가
    • HttpServletRequest
    • HttpServletResponse
      객체를 생성
  3. 요청 URL에 따라 어떤 Servlet인지 탐색
  4. Servlet의 service() 메서드 호출
  5. HTTP Method에 따라
    • doGet()
    • doPost()
      등의 메서드 실행
  6. 처리 결과를 HttpServletResponse에 담아 Client에 반환
  7. 요청 완료 후 Request / Response 객체 소멸

HttpServletRequest / Response의 역할

HTTP 프로토콜의 구조는 항상 동일하다.

매 요청마다:

  • Header 분석
  • Body 파싱
  • Method 확인

을 직접 구현하는 것은 매우 비효율적이다.

이를 해결하기 위해 Servlet은:

  • HTTP 요청 데이터를
  • HttpServletRequest 객체에 담아 제공한다.

개발자는 복잡한 HTTP 파싱을 직접 하지 않고도
객체를 통해 필요한 데이터만 쉽게 꺼내 사용할 수 있다.


Spring MVC의 핵심: DispatcherServlet

Spring MVC에서는
개발자가 직접 Servlet을 구현하지 않는다.

그 역할을 대신하는 것이
DispatcherServlet이다.

DispatcherServlet은
모든 HTTP 요청을 가장 먼저 받는
Front Controller 역할을 수행한다.


Spring MVC 요청 처리 흐름

1. Client → DispatcherServlet

Client(브라우저)에서 HTTP 요청이 들어오면
DispatcherServlet이 요청을 수신하고 분석한다.


2. Handler Mapping

DispatcherServlet은
요청 URL과 HTTP Method 정보를 바탕으로

Handler Mapping을 통해
요청을 처리할 Controller를 찾는다.

예시:

  • GET /api/hello → HelloController.hello()
  • GET /user/login → UserController.login()
  • GET /user/signup → UserController.signup()
  • POST /user/signup → UserController.registerUser()

Handler Mapping에는
API 경로와 Controller 메서드의 매핑 정보가 저장되어 있다.


3. Controller 처리

Controller는 요청에 대한 작업을 수행한다.

@RestController
public class HelloController {
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello World!";
    }
}
  • @Controller 또는 @RestController가 붙은 클래스가 대상
  • @GetMapping, @PostMapping 등으로
    URL과 HTTP Method를 매핑
  • 메서드 이름은 URL 매핑과 무관

이제는 개발자가 직접 Servlet을 구현하지 않아도
DispatcherServlet이 요청 처리를 자동으로 연결해준다.


4. Controller → DispatcherServlet

Controller는:

  • 요청 처리 결과 데이터(Model)
  • 또는 View 정보

를 DispatcherServlet에 반환한다.


5. DispatcherServlet → Client

DispatcherServlet은:

  • ViewResolver를 통해 View를 결정하고
  • Model 데이터를 View에 적용한 뒤
  • 최종 결과를 Client에게 응답으로 반환한다.

정리

  • MVC는 역할 분리를 위한 디자인 패턴이다
  • Spring MVC는 Servlet 기반의 웹 프레임워크다
  • DispatcherServlet은 모든 요청의 시작점이다
  • 개발자는 비즈니스 로직에만 집중하면 된다
  • 반복적이고 복잡한 요청 처리 흐름은
    Spring MVC가 대신 처리해준다

결과적으로 우리는
직접 Servlet을 구현하지 않아도
DispatcherServlet을 통해
효율적으로 웹 애플리케이션을 개발할 수 있다.

'BackEnd > 내일배움캠프' 카테고리의 다른 글

8. 정적 페이지와 동적 페이지  (0) 2026.02.10
7. Controller란?  (0) 2026.02.10
5. Lombok이란?  (0) 2026.02.09
4. 테스트코드  (0) 2026.02.09
3. HTTP란 무엇일까?  (0) 2026.02.09
'BackEnd/내일배움캠프' 카테고리의 다른 글
  • 8. 정적 페이지와 동적 페이지
  • 7. Controller란?
  • 5. Lombok이란?
  • 4. 테스트코드
JK-LEE98
JK-LEE98
백엔드 개발자
  • JK-LEE98
    JK-LEE98
    JK-LEE98
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 나의 지식 공유 (4)
      • SQL (4)
      • PS (10)
      • BackEnd (32)
        • Java (3)
        • Spring (4)
        • 내일배움캠프 (20)
        • 프로그래머스 데브코스 (5)
      • 건강한 나 되기🍀 (10)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
JK-LEE98
6. MVC 디자인 패턴이란?
상단으로

티스토리툴바