본문 바로가기

JSP

MVC 모델이란?


MVC 모델이란?

MVC 모델을 간단히 설명하면 JSP가 View, Servlet이 Controller, Java Bean이 Model 역할을 함으로서 프리젠테이션과 비즈니스 로직을 명확하게 구분하는 Model2 방법 입니다. 상당히 추상적인 표현이죠^^ 하나씩 어떤 의미인지 확인해 보도록 하겠습니다.

참고로 Model2 가 아닌 Model1에서는 JSP가 View, Controller 역할을 하고  자바빈(JavaBean)이 Model 역할을 수행 합니다.

MVC Model에서 JSP/Servlet/JavaBean의 작동 관계 및 순서는 다음과 같습니다.

JSP, Servlet, Bean이 각자의 역할을 가지고 분리 되어 있다고 보자구요,

사용자가 웹 페이지를 호출하면 컨트롤러 역할을 하는 서블릿이 전체 애플리케이션에서 하는 인증, 보안 관련 기능을 수행 하고 Java Bean을 호출하여 비즈니스 로직을 수행하게 되는데 이렇게 컨트롤과 모델을 분리함으로써 관리의 효율을 높일 수 있을 뿐 아니라 유지보수 역시 분리되어서 가능해 질 수 있습니다.

결국 서로 다른 개발자에 의해 개발이 가능하다는 이야기 입니다. 물론 모델(JavaBean)이 원격지의 EJB일 수도 있지만 컨트롤을 담당하는 개발자는 인터페이스만을 가지고 개발을 하는 것이 가능 하다는 이야기 입니다.

그런다음 컨트롤 역할을 하는 서블릿은 결과 화면을 표시하기 위해 View(JSP)를 부르게 됩니다. 포워드 시킨다고 하죠…  

View 자체에는 로직이 없으며 단순하게 화면만 구성하는 역할을 합니다. 처리결과를 저장하거나 어떤 화면으로 이동 할것인지의 결정은 컨트롤러인 서블릿이 하며 따라서 개발자와 웹 디자이너간의 역할분담이 가능해 집니다.

결국View(JSP)는 사용자 인터페이스 이며, 컨트롤러(서블릿)는 HTTP 요청을 받아서 처리하고, 그 결과를 JavaBean에 저장하며 forward할 View(JSP)를 결정 하며 결과가 저장된 JavaBean은 View(JSP)가 데이터를 읽어 올때 사용 되는 것입니다.

만약 JSP로만 개발을 한다면 애플리케이션의 모든 기능을 JSP가 모두 처리 하기 위해서 JSP안의 자바코드는 금방 걸레가 되어 버릴 것입니다. 아마도 상상이 가시리라 생각 되구요...

또 수정 할 때마다 다시 컴파일 되어 실행 되므로 속도도 많이 떨어 질 거구요,,, 프로젝트를 개발 하는 것도 마찬가지 입니다, 한사람이 모든 것을 다할 수 없는 것입니다.

J2EE에서 권장 하듯이 개발자 사이에 역할을 분명히 하고 독립성을 확실히 하기 위해서는 근본적인 프레임웍이 필요해 진 것 입니다.

우리가 MVC Model을 구현하는데 있어 고려해야 되는 사항이라면 소규모의 단순한 시스템을 만드는데 일부러 MVC Model을 써서 일을 크게 할 필요가 없다는 것입니다.

시간이 들며 그런다고 수행 속도 역시 보장 할 수가 없을 수도 있습니다. 그러한 경우에는 차라리 PHP와 같은 간결하고 아주 빠른 속도를 보장하는 언어와 MySQL등으로 개발하면 개발 속도 빨라지고 웹사이트의 Performance역시 어느 정도는 보장 할 수가 있을 겁니다.

그럼 위와 같은 MVC Model로 만들기 위해 개발자가 일일이 프레임웍을 구축하는 것이 좋겠습니까? 사소한 모든 컴포넌트 까지... -.- ?

그것은 거의  현실 세계에서는 어려우므로 제공되고 있는 Framework를 가져다 쓰는 것 입니다. 그중 하나가 현재 해외에서 Defacto 표준으로 오픈 소스 업계에서 널리 사용되고 있는 Struts 입니다.

'JSP' 카테고리의 다른 글

html 페이지 이동(Redirect)  (2) 2011.02.18
MVC : Model, View, Controller  (1) 2009.03.15