▶ 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 |