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️⃣ 필기

Share article