1️⃣ 1세대: 정적 웹 시대 (Static HTML)
1) 특징
- 서버는 HTML 파일을 그대로 전달
- 요청 URL = 파일 경로
- 로직 ❌, 계산 ❌, 조건 ❌
2) 예시
/index.html → index.html 파일 전달3) 장점
- 구조 단순
- 빠름
- 구현 쉬움
4) 한계
- 사용자마다 다른 화면 제공 불가능
- DB 연동 불가능
- 파일이 많아질수록 관리 불가
5) 다음 세대가 등장한 이유
“요청마다 다른 결과를 주고 싶다”
2️⃣ 2세대: 동적 웹 등장 (Servlet 시대)
1) 핵심 변화
- 서버가 계산을 시작함
- 요청을 자바 코드가 직접 처리
2) 특징
- 하나의 Servlet으로 여러 응답 생성
- DB 연동 가능
- 조건 처리 가능
3) 구조
브라우저 → Servlet(자바 코드) → HTML 응답4) 한계
- 자바 코드 안에서 HTML 작성
- 가독성 최악
- 프론트/백엔드 분리 불가능
5) 다음 세대가 등장한 이유
“HTML은 화면이고, 자바는 로직인데 왜 한 파일에 섞여 있지?”
3️⃣ 3세대: 템플릿 엔진 등장 (JSP)
1) 핵심 변화
- HTML 중심 개발
- 자바 코드를 HTML 안에 부분적으로 삽입
2) 특징
- 화면은 HTML로 작성
- 반복/조건만 자바 코드로 처리
3) 장점
- 화면 수정 쉬움
- 디자이너 협업 가능
4) 한계
- 여전히 로직과 화면이 섞임
- JSP 하나가 모든 역할 수행
5) 다음 세대가 등장한 이유
“화면 담당, 로직 담당을 파일 단위로 분리하자”
4️⃣ 4세대: Model 1 패턴 (과도기)
1) 특징
- JSP가 요청도 받고
- 로직도 처리하고
- 화면도 출력
2) 장점
- 빠른 개발
- 구조 단순
3) 한계
- 코드가 비대해짐
- 유지보수 지옥
- 테스트 불가능
4) 다음 세대가 등장한 이유
“이제 서비스가 커졌다전문 분업이 필요하다”
5️⃣ 5세대: MVC 패턴 등장
1) 핵심 아이디어
역할을 나누자
2) 역할 분리
- Controller: 요청 처리
- Service(Model): 비즈니스 로직
- View: 화면
3) 장점
- 유지보수 쉬움
- 테스트 가능
- 협업 가능
4) 한계
- 컨트롤러가 많아짐
- 요청 분기 코드 반복
5) 다음 세대가 등장한 이유
“모든 요청을 중앙에서 관리하자”
6️⃣ 6세대: DispatcherServlet (Front Controller)
1) 핵심 변화
- 모든 요청을 하나의 관문에서 처리
- URL → Controller 자동 연결
2) 역할
요청 → DispatcherServlet
→ Controller
→ Service
→ View3) 장점
- 공통 처리 가능
- 구조 통일
- 확장성 ↑
4) 필요 기술
- 리플렉션 필요
7️⃣ 리플렉션의 등장
1) 역할
- 문자열로 클래스/메서드 실행
- 실행 중 객체 분석
2) 왜 중요?
- DispatcherServlet이
“이 URL은 이 컨트롤러”
하드코딩 없이 처리
👉 스프링의 핵심 기술
8️⃣ 스프링 프레임워크 시대
1) 해결해준 것
- MVC 자동화
- DI / AOP 제공
- 반복 코드 제거
2) 결과
- 개발자는 로직만 작성
- 생산성 폭발
👉 웹 개발의 표준 프레임워크
9️⃣ WAS 시대 (Tomcat)
1) 역할
- Servlet 실행 환경
- HTTP 처리
- 스레드 관리
2) 정리
- 스프링: 개발 틀
- 톰켓: 실행기
🔟 현대 웹: API 서버 시대
1) 변화
- 화면 ❌
- JSON 데이터만 제공
- 프론트엔드와 완전 분리
2) REST 방식
- GET: 조회
- POST: 생성
- PUT: 수정
- DELETE: 삭제
✔ 구조
Controller → Service → Repository(DB)Share article