JSP

제6장. MVC(Mode-View-Controller) 개념

십억10 2009. 3. 27. 15:54

▶ MVC(Model-View-Controller)

● 모델 1구조

- JSP를 이용한 단순한 모델

  ① 웹 브라우저의 요청이 곧바로 JSP에 전달

  ② 웹 브라우저의 요청을 받은 JSP는 자바빈즈나 매니저 클래스 또는 EJB 콘테이너와 통신하여 요청한 작업 처리

  ③ 처리 결과를 클라이언트에 출력

- 모델 1구조는 JSP 페이지에서 비즈니스 로직과 출력 결과 코드가 섞여 있어 관리 하는데 불편함이 있다.

- 즉, JSP 페이지에서 모든 관리가 필요하다.


● 모델 2 구조

※ 모델 2 과정

  ① 웹 브라우저의 요청을 하나의 서블릿이 받는다.

  ② 서블릿은 웹 브라우저의 요청을 알맞게 처리 후 그 결과를 보여 줄 JSP 페이지로 포워딩한다.

  ③ 포워딩을 통해 요청 흐름을 받은 JSP 페이지는 결과 화면을 클라이언트에 전송

※ 특징

  - 스블릿이 비즈니스 로직 부분을 처리 한다.

  - 웹 브라우저의 모든 요청이 단일 진입점, 즉 하나의 서블릿에서 처리 된다.

  - 서블릿은 웹 브라우저의 요청 구분을 구분할 방법이 필요

  - 서블릿은 웹 브라우저의 요청을 처리한 후 웹 브라우저에 보여질 JSP를 선택하게 된다.


● MVC(Model-View-Controller) 패턴

※ 구성

  - 모델 : 비즈니스 영역의 상태 정보를 처리

  - 뷰 : 비즈니스 영역에 대한 프리젠테이션 뷰(즉, 사용자가 보게 될 결과 화면)을 담당

  - 컨트롤러 : 사용자의 입력 및 흐름 제어를 담당

※ MVC 패턴의 구조 

  ① 사용자는 원하는 기능을 처리하기 위한 모든 요청을 단일 컨트롤러에 보낸다.

  ② 컨트롤러는 모델(비즈니스와 관련된 상태 정보 및 관련 기능을 제공)을 통해서 사용자의 요청을 처리한다.

  ③ 모델을 사용하여 알맞은 비즈니스 로직을 수행한 후 컨트롤러는 사용자에게 보여 줄 뷰를 선택한다.

  ④ 선택된 뷰는 사용자에게 알맞은 결과 화면을 보여준다.

  ⑤ 뷰가 사용자에게 결과 화면을 보여 줄 때에는 결과 정보가 필요한데 이 정보는 컨트롤러가 뷰에 전달해준다.

※ MVC 패턴의 핵심

  - 비즈니스 로직을 처리하는 모델과 결과 화면을 보여주는 뷰가 분리되어 있다.

  - 어플리케이션의 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중된다.

  - 모델과 뷰가 분리되어 있어 내부 로직이 변경되어도 뷰는 전혀 영향을 받지 않는다.


● MVC 패턴과 모델2 구조

- 컨트롤러 = 서블릿

- 모델 = EJB 내지 비즈니스 로직 처리 클래스, 자바빈

- 뷰 = JSP

- 사용자 = 웹 브라우저 내지 휴대폰과 같은 다양한 기기


● 서블릿(컨트롤러) 내부 동작

① 웹 브라우저가 전송한 HTTP 요청을 받는다. 서블릿의 doGet() 메소드나 doPost() 메소드가 호출된다.

웹 브라우저가 어떤 기능을 요청했는지 분석한다. 예를 들어 게시판 목록을 요청인지 글 쓰기 요청인지 알아낸다.

③ 모델(비지니스 로직의 처리)을 사용하여 요청한 기능을 수행

④ 모델로부터 전달받은 결과물을 알맞게 가공한 후, request나 session의 setAtrribute() 메소드를 사용하여 결과값을 속성에 저장한다. 이렇게 저장된 결과값은 뷰인 JSP에서 사용된다.

⑤ 웹 브라우저에 보여 줄 JSP를 선택한 후, 해당 JSP로 포워딩한다. 경우에 따라서 리다이렉트를 하기도 한다.


● JSP(뷰)

- request나 session 기본객체를 사용하여 웹 브라우저에 알맞은 결과를 출력해준다.

- 웹 브라우저가 요청한 결과를 보여주는 것 뿐만 아니라 웹 브라우저의 요청을 컨트롤러에 전달해 주는 매개체가 되기도 한다.


● MVC의 모델

- 명확하게 어떤 것을 통해서 구현된다는 규칙은 없다.

- 비즈니스 로직을 처리해주면 모델이 될 수 있다.

- 웹 브라우저의 요청을 분석하여 알맞은 모델을 호출하면서부터 모델의 기능이 시작된다.

- 모델은 컨트롤러가 요청한 작업을 처리한 후 알맞은 결과를 컨트롤러에게 전달해 준다. 이때 처리한 결과값을 저장하는 객체로는 보통 자바빈을 사용한다.

- 모델의 대표적인 예가 EJB 컴포넌트이다.

'JSP' 카테고리의 다른 글

[펌] 이클립스 jsp 사용법  (0) 2009.04.01
제7장. 자바빈(JavaBean)  (0) 2009.03.30
제5장. 쿠키  (0) 2009.03.24
제4장. 필수 이해 요소  (0) 2009.03.23
제3장. 내장객체(기본객체) request, response  (0) 2009.03.20