■ 모델 2 기반의 MVC 패턴의 개요
용 어 |
설 명 |
Model |
-. 정보를 담고 있는 객체, 자바 빈즈를 뜻한다. |
View |
-. 정보를 표현하는 객체, JSP(Java Server Page)를 뜻한다. |
Controller |
-. 정보를 컨트롤하고 Model과 View 사이를 중재하는 객체이다. -. 모델 2에서는 서블릿으로 구현한다. |
※ 모델2는 데이터(Model) - 표현(View) - 정보처리(Controller)를 구분하여 재사용과 가독성(읽기 쉽게)을 높이려는 기법이다.
01) 모델 1 구조
-. JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.
-. JSP 페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관련 코드가 뒤섞여 있는 구조이다.
-. 이러한 구조는 JSP 페이지 안에서 모든 정보를 표현(View)하고 저장(Model)하고 처리(Control)되므로 재사용이 힘들고,
읽기도 힘들어 가독성이 떨어진다.
모델 1 구조 정리 |
-. 정의 : 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조이다. -. 단점 : 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생된다. |
02) 모델 2 구조
-. 모델 2로 구현한 JSP는 데이터 저장을 자바빈즈가, 데이터처리는 서블릿이, 표현은 JSP가한다.
이렇게 하여 비즈니스 로직과 데이터, 표현을 완전히 분리해서 처리한다.
-. JSP와 서블릿을 분리하면 데이터나 비즈니스 로직만을 부분적으로 바꿔도 전체에는 영향이 없을 뿐만 아니라
다양하게 확장할 수 있는 가능성을 열어두게 된다. 물론 가장 중요한 유지보수 문제도 쉬워진다.
-. 모델 1은 컨트롤러가 모델이나 뷰를 포함한 MV 형태를 띄고 있고, 모델 2는 완전한 MVC 형태를 적용하고 있다고 볼 수 있다.
바람직한 형태는 모델 2이다.
모델 2 구조 정리 |
-. 정의 : 클라이언트의 요청처리와 응답처리, 비즈니스 로직 처리하는 부분을 모듈화시킨 구조이다. 각 컴포넌트의 재사용성이 높아진다. -. 단점 : MVC 구조에 대한 이해가 필요하며 개발자의 높은 Skill이 요구된다. |
03) MVC 패턴
-. 프로그램에서 가장 중요한 것이 비즈니스 로직, 즉 데이터를 어떻게 처리하는냐-라는 컨트롤러(Controller)의 역할이다.
-. JSP에서는 서블릿이 컨틀롤러의 역할을 담당하도록 설계되었다.
-. 데이터베이스에 접근하는 것은 모델(Model) 객체의 몫이다.
-. 모델 객체를 UML 클래스 다이어그램을 그린다면 그 자체로 비즈니스 로직으로 표현될 수 있다.
-. 뷰(View)는 화면 UI를 구성하는 요소이며 일반적으로 웹 어플리케이션에서는 JSP가 뷰의 역할을 맡는다.
-. 컨트롤러는 사용자의 요청을 받아서 모델 객체를 실행하고 그 결과를 뷰로 전달하는 역할을 맡게 되는데 개발자는 어떤 모델을 실행하고
어떤 뷰를 선택할 것인지를 컨트롤러에 알려주기만 하면 된다.
※ MVC의 핵심
-. 비즈니스 로직을 처리하는 모델과 결과 화면을 보여주는 뷰가 분리되어 있다. |
① MVC 패턴의 가장 큰 장점은 모델과 뷰의 분리를 통해 화면 UI를 위한 코드와 비즈니스 로직을 위한 코드가 섞이지 않는다는 것이다.
그래서 화면 UI 개발자와 비즈니스 로직 개발자를 따로 두는 것도 가능하다.
② 또한 모델과 뷰가 분리되면 한 모델에 여러 가지 다양한 뷰를 붙이는 것도 가능하고 그 반대의 경우도 가능하다.
그래서 요구사항의 복잡도는 높지만 규격이 잘 정해진 애플리케이션을 만들 때는 개발자의 일을 획기적으로 줄일 수 있다.
③ MVC패턴은 결국 이런 모델과 뷰의 분리를 효과적으로 할 수 있는 컨트롤러를 제공한다는데에 그 가치가 있다.
● MVC 패턴의 컨트롤러 : 서블릿
-. 비즈니스 로직은 모델에서 처리하므로 서블릿은 모델이 내부적으로 어떻게 비즈니스 로직을 처리하는지 알 필요가 없다.
-. 웹 브라우저의 요청에 맞는 모델을 사용하여 요청한 기능을 수행하고 그 결과를 뷰인 JSP에 전달해 주기만 한다.
-. 요청 처리 결과는 request나 session 객체에 저장되어 뷰 역할을 하는 JSP 페이지로 전달된다.
-. 모델 2 구조에서는 서블릿이 컨트롤러의 역할을 담당한다. 컨트롤러의 역할은 다음과 같이 세분화 할 수 있다.
① 웹 브라우저(클라이언트)의 요청을 받는다.
② 웹 브라우저(클라이언트)가 어떤 기능을 요청했는지 분석한다.
③ 분석된 요구사항을 바탕으로 필요한 비즈니스 로직을 처리하는 모델을 호출한다.
④ 모델로부터 전달받은 결과물을 알맞게 가공한 후, request나
session 기본 객체의 setAttribute 메소드를 사용하여 결과값을 속성에 저장한다.
이렇게 저장된 결과값은 뷰인 JSP에서 사용한다.
⑤ 웹 브라우저(클라이언트)에 처리결과를 보여주기 위한 JSP를 선택한 후 해당 JSP를 포워딩한다.
● MVC 패턴의 뷰 : JSP
-. 모델 2 구조에서 뷰(요청한 결과를 보여주는 프레젠테이션)의 역할은 JSP로 구현한다.
-. MVC패턴에서 뷰의 역할을 하는 JSP는 비즈니스 로직과 관련도니 코드가 없단느 점을 제외하고는 일반 JSP 페이지와 거의 동일하다.
-. 다만 request나 session 기본 객체에 저장한 데이터를 사용해서 알맞은 결과를 출력해 준다는 점이 특징다.
● MVC 패턴의 : 자바 빈즈
-. 모델이 제공해 주는 기능은 웹 브라우저의 요청을 처리하는데 필요한 기능을 제공한다.
-. 컨트롤러인 서블릿이 웹 브라우저의 요청을 분석하여 알맞은 모델을 호출하면서부터 모델의 기능이 시작한다.
-. 모델은 컨트롤러가 요청한 작업을 처리한 후 알맞은 결과를 컨트롤러에게 전달해 주는데, 이때 처리한 결과값은 자바빈에 저장된다.
-. 모델의 역할은 다음과 같이 세분화 할 수 있다.
① 컨트롤러로부터 요청을 받는다.
② 비즈니스 로직을 수행한다.
③ 수행결과를 컨트롤러에 리턴한다.
'JSP > JSP Programming' 카테고리의 다른 글
[JSP] 서블릿 사용자의 요청을 명령어로 전달 (0) | 2012.08.30 |
---|---|
[JSP] 모델 2 기반의 간단한 MVC 패턴 구현방법 (1) | 2012.08.30 |
[JSP] 이클립스에 데이터 베이스 연동하기 (0) | 2012.06.05 |
[JSP] 자바 빈(Bean)을 이용한 JSP 로직 모듈화 (0) | 2012.06.05 |
[JSP] 자바 빈(Bean)이란? (0) | 2012.06.05 |