4-4. MVC 시대

박은서's avatar
Jan 28, 2026
4-4. MVC 시대

1. MVC 시대

1️⃣ MVC시대란?

💡
M = 모델
V = 뷰
C = 컨트롤러
화면(View), 처리 흐름(Controller), 비즈니스 로직(Model)을 분리해서 개발하자는 패러다임이 정착된 시기

2️⃣ MVC가 나오기 이전 상황

1) MVC 이전 (혼돈의 시대)

  • 서블릿이 HTML 생성
  • JSP에 자바 코드 난무
  • View가 로직을 처리
  • 페이지마다 접근 방식 제각각
결과:
  • 유지보수 어려움
  • 테스트 불가능
  • 규모 커질수록 붕괴
➡️ 그래서 나온 질문:
“역할을 좀 나눌 수 없을까?”

3️⃣ MVC의 핵심 아이디어

🎯 “각자 할 일만 하자”
역할
책임
Model
비즈니스 로직, 데이터
View
화면 출력
Controller
요청 흐름 제어
이게 MVC 패턴

4️⃣ MVC 구성 요소

1) Model

  • 순수 자바 객체
  • 비즈니스 규칙 담당
  • DB 접근, 계산, 검증 등
class OrderService { void order() { ... } }
📌 HTML, JSP, 템플릿 절대 모름

2) View

  • 화면만 책임
  • 데이터 출력만 수행
  • 로직 ❌ 판단 ❌
예:
<p th:text="${user.name}"></p>
📌 “보여주기만 한다”

3) Controller (MVC의 핵심)

  • 요청의 진입점
  • 어떤 Model을 실행할지 결정
  • 어떤 View를 보여줄지 선택
@GetMapping("/users") public String users(Model model) { model.addAttribute("users", userService.findAll()); return "users"; }
📌 흐름 제어자

5️⃣ MVC 시대의 가장 중요한 변화

1) 단일 진입점 (Front Controller)

  • 모든 요청은 Controller를 거친다
  • 인증, 로깅, 예외 처리 공통화
예:
/users → DispatcherServlet → Controller
➡️ JSP 직접 호출 ❌
➡️ URL 구조 통제 ⭕

6️⃣ MVC + 템플릿 엔진 = 현대 웹 구조

이 시점에 딱 맞게 등장한 게
👉 3세대 템플릿 엔진
왜냐면:
  • View에 로직 넣으면 MVC가 깨짐
  • 템플릿 엔진이 View를 “강제적으로 얇게” 만듦
📌 그래서:
MVC 시대 = 3세대 템플릿 엔진 시대

7️⃣ MVC 이전 vs 이후 비교

구분
MVC 이전
MVC 이후
진입점
JSP/서블릿 제각각
Controller 단일
로직 위치
View에 섞임
Model로 집중
View 역할
로직 + 출력
출력 전용
유지보수
어려움
쉬움
테스트
거의 불가
가능

8️⃣ 필기

notion image
Share article