0. 개요
- 이전 포스팅에서 Servlet과 JSP에 대해 배우면서, 이 기술이 갖는 문제점에 대해 언급하였다.
- 하나의 대상이 다수의 역할을 갖는다는 문제를 해결하는 방법으로, 역할의 분리를 언급했다.
- 그렇다면 어떻게 분리했는지, 최초의 MVC는 어떤 기술을 사용하는지 천천히 알아보자.
1. Web 개발 기술의 발전 흐름
- 본격적으로 MVC를 배우기 전에, Web 개발 기술이 어떤 방식으로 발전했는지 복습해보자.
a) 정적 Web
- 최초의 Web의 형태로, 정적 Content를 제공한다.
- Server는 Client가 언제, 어디서 접근하더라도 동일한 데이터를 반환한다. (= 정적이다)
- 초창기의 Web에서는 HTTP 메소드 또한 GET 밖에 없었다.
- 왜냐면 Server는 정적 데이터만을 반환하기 때문이다.
b) 동적 Web
- 동적 Content를 제공하는 Server(WAS)의 등장
- Server 측에서 비즈니스 로직을 수행하여 Client에게 동적인 Content를 전달한다.
- Client가 누구, 언제, 어디서 접근하느냐에 따라 Client마다 다른 데이터를 반환한다. (= 동적이다)
- 동적 Content는 Client의 요청에 따라 데이터가 조작될 수 있는 환경이므로 다양한 HTTP 메소드를 지원한다.
c) 동적 Content 처리기술
- Servlet (HTTP를 객체로 만들어 편하게 사용, Java 코드에서 HTML을 반환, Java 중점적)
- JSP(HTML 내부에서 Java를 사용, HTML 중점적)
- MVC(Servlet과 JSP의 공통적인 문제점을 보완한 형태의 구조, view와 business 로직의 분리)
2. JSP와 Servlet을 이용한 MVC 1
a) 기존의 문제점 (Servlet, JSP)
- Servlet, JSP 모두 하나의 대상이 비즈니스 로직 처리와 view 생성을 처리한다.
- 하나의 파일에 모든 로직이 다 들어있는 상태, 유지보수의 문제점이 발생한다.
- view와 비즈니스 로직의 유지보수 시점이 다르지만 모든 코드를 봐야한다.
b) 특화된 기능에 집중
- Servlet은 비즈니스 로직 처리에 특화되어 있다.
- JSP는 view 랜더링에 특화되어 있다.
- 각 기술의 특징과 장점에 맞는 역할(업무)을 담당하는 것이 올바른 구조이다.
c) 그래서 어떻게 분리했나
- Servlet은 비즈니스 로직을 처리만을 담당
- JSP는 view 랜더링 처리만을 담당
- 결과적으로 view와 비즈니스 로직을 완전히 분리
3. MVC 1의 기본 구조
a) Controller
- HTTP 요청을 받는다.
- 요청에 포함된 Parameter를 검증하여 비즈니스 로직을 실행한다.
- 비즈니스 로직의 결과를 Model 객체에 담아 View에게 전달한다.
b) View
- Model을 통해 전달받은 데이터를 이용하여 화면을 구성하는 작업만 수행한다.
c) Model
- View에게 전달할 데이터를 담는 역할
- Model을 사용하므로, View는 직접 데이터에 접근할 필요가 없어진다.
- 비즈니스 로직의 처리 과정도 View와는 상관이 없다.
'Back-end > Spring MVC 개념' 카테고리의 다른 글
8. Forward와 Redirect (0) | 2022.03.03 |
---|---|
7. MVC 1의 동작원리와 한계점 (0) | 2022.03.02 |
5. JSP의 등장 (0) | 2022.02.28 |
4. Servlet - 요청/응답 처리방법 (0) | 2022.02.25 |
3. Servlet - 기본 사용 방법 (0) | 2022.02.24 |
댓글