맨위로가기

JSP 모델 2 아키텍처

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

JSP 모델 2 아키텍처는 1998년 썬 마이크로시스템즈가 자바 서버 페이지(JSP) 사양에서 제시한 두 가지 사용 방법 중 하나이다. 모델 2는 서블릿이 요청을 처리하고 JSP를 호출하여 내용을 출력하는 방식으로, JSP를 템플릿 엔진으로 사용하고 모든 로직을 서블릿으로 분리한다. 1999년 Govind Seshadri는 "모델 2"를 아키텍처 패턴으로 공식화하고 MVC 아키텍처를 제공한다고 주장했으며, 2000년 아파치 스트럿츠 프로젝트가 출시되면서 뷰와 컨트롤러의 분할을 구현했다. 이후 모델 2는 MVC 패턴과 연관되어 사용되면서 "MVC2"라는 용어가 등장했으나, 공식적인 MVC 패턴 구현이 필수적인 것은 아니며, 모델 1과의 혼동을 야기하기도 했다.

2. 역사

JSP 모델 2 아키텍처의 개념은 1998년 썬 마이크로시스템즈가 자바 서버 페이지(JSP) 사양 0.92 버전을 처음 공개했을 때 등장했다.[1] 이 초기 사양에서는 JSP를 사용하는 두 가지 방식을 제시했는데, 첫 번째는 단순한 '모델 1' 방식이었고, 두 번째는 서블릿과 JSP를 결합하여 로직 처리와 화면 표시를 분리하는 '모델 2' 방식이었다. 모델 2에서는 서블릿이 요청을 처리하고 데이터를 준비한 뒤, JSP는 준비된 데이터를 받아 화면을 그리는 역할만 담당했다.

1999년 12월, Govind Seshadri는 JavaWorld 기고를 통해 '모델 2'를 단순한 사용 방식 옵션이 아닌 공식적인 아키텍처 패턴으로 정의하고, 이것이 웹 애플리케이션을 위한 모델-뷰-컨트롤러(MVC) 패턴의 구현이라고 주장했다.[2][3] 그는 서블릿이 컨트롤러(Controller), JSP가 뷰(View) 역할을 하며, 모델(Model)은 다양한 데이터 구조로 구현될 수 있다고 설명했다.

2000년 3월에는 아파치 스트럿츠 프로젝트가 출시되면서 모델 2 패턴을 실제로 구현한 대표적인 프레임워크가 등장했다.[3] 스트럿츠는 뷰와 컨트롤러의 분리를 더욱 명확히 했으며, 모델 부분은 개발자가 JDBC, EJB, Hibernate, iBatis 등 다양한 기술을 사용하여 구현하도록 남겨두었다.[4]

스트럿츠 이후 여러 경쟁 프레임워크들이 등장하면서 대부분 '모델 2'와 'MVC' 구현을 내세웠고, 이로 인해 두 용어는 개발자들 사이에서 거의 동의어처럼 사용되기 시작했다. 이러한 배경 속에서 'MVC 모델 2' 또는 줄여서 'MVC2'라는 용어도 사용되게 되었다.

2. 1. 초기 JSP 사양 (1998)

1998년, 썬 마이크로시스템즈는 자바 서버 페이지(JSP) 사양의 0.92 버전을 사전 공개했다.[1] 이 초기 사양에서는 JSP 페이지를 사용하는 두 가지 방법을 제시했는데, 이를 각각 '모델 1'과 '모델 2'라고 불렀다.

'모델 1'은 JSP 페이지가 독립적으로 작동하는 단순한 방식이었다. 웹 페이지를 만드는 데 필요한 로직(프로그램 코드)이 JSP 페이지 안에 직접 포함되었고, 페이지 간 이동은 주로 하이퍼링크를 통해 이루어졌다. 이는 당시 많이 사용되던 콜드퓨전이나 액티브 서버 페이지와 같은 웹 기술과 유사한 방식이었다.

반면 '모델 2'는 서블릿 기술과 JSP 기술을 함께 사용하는 좀 더 발전된 방식이었다. 모델 2에서는 먼저 서블릿이 사용자의 요청을 받아 필요한 작업을 처리하고, 화면에 보여줄 데이터를 준비한다. 준비된 데이터는 보통 자바빈 형태로 만들어져 요청 속성(request attribute)에 저장된다. 그런 다음, 서블릿은 이 데이터를 JSP 페이지로 전달하여 화면을 그리도록 했다. 모델 2의 가장 큰 특징은 JSP 페이지가 화면을 보여주는 역할(뷰, View)에만 집중한다는 점이다. 복잡한 로직 처리는 모두 서블릿이 담당(컨트롤러, Controller 역할)하므로, JSP는 순수한 템플릿 엔진처럼 사용되었다. 이를 통해 화면 디자인과 프로그램 로직을 분리할 수 있었으며, 이는 이후 모델-뷰-컨트롤러(MVC) 패턴의 초기 형태로 여겨지게 된다.

2. 2. Govind Seshadri의 기고 (1999)

1999년 12월, JavaWorld는 Govind Seshadri의 기사 ''자바 서버 페이지 모델 2 아키텍처 이해''를 게재했다.[2] 이 기사에서 Govind는 "모델 2"라는 용어 사용에 있어 두 가지 중요한 이정표를 세웠다. 첫 번째 이정표는 "모델 2"라는 용어를 두 가지 가능한 옵션 중 하나가 아닌 아키텍처 패턴으로 공식화한 것이다. 두 번째 이정표는 모델 2가 웹 기반 소프트웨어를 위한 MVC 아키텍처를 제공한다는 주장이었다.[3]

Govind는 "모델 2" 아키텍처가 로직을 JSP에서 분리하여 서블릿에 배치했기 때문에 이 두 부분이 MVC 아키텍처에서 "뷰(View)"와 "컨트롤러(Controller)"(각각)로 볼 수 있다고 믿었다. MVC 아키텍처의 "모델(Model)" 부분은 Govind에 의해 열려 있었으며, 거의 모든 데이터 구조가 요구 사항을 충족할 수 있다는 제안이 있었다. 기사에 사용된 구체적인 예는 사용자 세션에 저장된 자바 컬렉션의 벡터 목록이었다.

2. 3. 아파치 스트럿츠의 등장 (2000)

2000년 3월, 아파치 스트럿츠(Apache Struts) 프로젝트가 출시되었다. 스트럿츠는 모델 2 패턴을 구현한 프레임워크로 등장했으며, 뷰(View)와 컨트롤러(Controller) 사이의 역할을 명확히 구분하는 것을 목표로 했다.[3]

스트럿츠는 모델(Model) 부분의 구체적인 구현 방식은 정의하지 않고 개발자에게 맡겼다. 다만, JDBC나 EJB를 이용한 데이터베이스 연동을 초기 제안 방식으로 제시했다. 이후에는 Hibernate, iBatis, 객체 관계 매핑(Object Relational Bridge)과 같은 기술들이 모델 구현을 위한 현대적인 선택지로 언급되었다.[4]

2. 4. 경쟁 프레임워크의 등장과 용어 혼란

아파치 스트럿츠가 출시된 이후, 여러 경쟁 프레임워크들이 등장했다. 이러한 프레임워크 중 다수는 자신들이 "모델 2"와 MVC 패턴을 구현한다고 주장했다.[3] 결과적으로 개발자들 사이에서는 이 두 용어가 거의 같은 의미로 받아들여지게 되었다. 이로 인해 "MVC 모델 2" 또는 이를 줄여서 "MVC2"라는 용어가 사용되기 시작했다.

3. 오해

JSP 모델 2 아키텍처에 대해 흔히 발생하는 몇 가지 오해가 있다. 대표적으로 모델 2 구현에 반드시 공식적인 MVC 패턴이 필요하다는 생각과[5], "MVC2"라는 용어가 MVC 패턴의 차세대 버전을 의미한다는 오해가 있다.[6] 사실 모델 1과 모델 2는 JSP 초기 사양에서 컨트롤러 서블릿 유무를 기준으로 구분하던 용어이며, "MVC2"는 단순히 "MVC 모델 2"를 줄여 부르는 표현일 뿐이다.

3. 1. Model 2와 MVC 패턴의 관계

흔히 잘못 이해하는 부분은 공식화된 MVC 패턴이 모델 2 구현에 필요하다는 것이다. 그러나 자바 블루프린트는 이러한 해석에 대해 특별히 경고하고 있다:[5]

J2EE 플랫폼의 웹 계층 기술 관련 문헌에서는 "모델 1"과 "모델 2"라는 용어를 설명 없이 자주 사용합니다. 이러한 용어는 JSP 페이지의 두 가지 기본적인 사용 패턴을 설명하는 JSP 사양의 초기 초안에서 유래되었습니다. 이 용어는 사양 문서에서 사라졌지만 여전히 일반적으로 사용되고 있습니다. 모델 1과 모델 2는 클라이언트 계층의 요청을 디스패치하고 뷰를 선택하는 컨트롤러 서블릿의 유무를 나타냅니다.


또한 "MVC2"라는 용어는 많은 사람들이 모델 2가 차세대 MVC 패턴을 나타낸다는 잘못된 믿음을 갖게 했다. 사실, MVC2는 단순히 "MVC 모델 2"라는 용어를 줄인 것이다.[6]

이러한 혼란은 모델 1 코드에 대한 추가적인 혼란으로 이어져, 실제로는 존재하지 않는 "MVC1"이라는 용어까지 흔히 사용되는 결과를 낳았다.

3. 2. "MVC2" 용어의 혼란

흔히 잘못 이해하는 부분 중 하나는 공식화된 MVC 패턴이 모델 2 구현에 반드시 필요하다는 생각이다. 그러나 자바 블루프린트에서는 이러한 해석에 대해 다음과 같이 경고한다.[5]

J2EE 플랫폼의 웹 계층 기술 관련 문헌에서는 "모델 1"과 "모델 2"라는 용어를 설명 없이 자주 사용한다. 이 용어는 JSP 페이지의 두 가지 기본적인 사용 패턴을 설명하는 JSP 사양의 초기 초안에서 유래했다. 이 용어는 사양 문서에서는 사라졌지만 여전히 일반적으로 사용되고 있다. 모델 1과 모델 2는 클라이언트 계층의 요청을 처리하고 뷰를 선택하는 컨트롤러 서블릿의 유무를 나타낸다.


또한 "MVC2"라는 용어 때문에 많은 사람들이 모델 2가 MVC 패턴의 차세대 버전을 의미한다고 잘못 생각하게 되었다. 사실, MVC2는 단순히 "MVC 모델 2"라는 용어를 줄여서 부르는 것일 뿐이다.[6]

이러한 "MVC2" 용어에 대한 혼란은 모델 1 방식에 대한 추가적인 오해로 이어져, 실제로는 존재하지 않는 "MVC1"이라는 용어가 흔히 사용되는 결과를 낳기도 했다.

참조

[1] 웹사이트 JSP 0.92 Specification http://www.kirkdorff[...]
[2] 웹사이트 Understanding JavaServer Pages Model 2 architecture https://www.infoworl[...] 1999-12-29
[3] 문서 How Struts Implements Model 2 (The Origins of Model 1/Model 2) http://ptgmedia.pear[...]
[4] 웹사이트 Struts 1.x Homepage http://struts.apache[...] 2010-10-05
[5] 웹사이트 Java BluePrints 4.4.1: Structuring the Web Tier http://java.sun.com/[...]
[6] 웹사이트 Struts, an open-source MVC implementation http://www.ibm.com/d[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com