본문 바로가기

JSP/JSP Programming

[JSP] 모델 2 기반의 MVC 패턴의 개요

반응형

■ 모델 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 패턴의 : 자바 빈즈

 -. 모델이 제공해 주는 기능은 웹 브라우저의 요청을 처리하는데 필요한 기능을 제공한다.

 -. 컨트롤러인 서블릿이 웹 브라우저의 요청을 분석하여 알맞은 모델을 호출하면서부터 모델의 기능이 시작한다.

 -. 모델은 컨트롤러가 요청한 작업을 처리한 후 알맞은 결과를 컨트롤러에게 전달해 주는데, 이때 처리한 결과값은 자바빈에 저장된다.

 -. 모델의 역할은 다음과 같이 세분화 할 수 있다.

  ① 컨트롤러로부터 요청을 받는다.

  ② 비즈니스 로직을 수행한다.

  ③ 수행결과를 컨트롤러에 리턴한다.

 

반응형