본문 바로가기
Back-end/Spring MVC 개념

6. MVC 1의 등장

by devraphy 2022. 3. 1.

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

댓글