JSP 모델 2 아키텍처
JSP model 2 architectureJSP 모델 2는 Java Web 어플리케이션의 설계에 사용되는 복잡한 디자인 패턴으로, 콘텐츠를 입수하고 조작하는 데 사용되는 로직과 콘텐츠의 디스플레이를 구분한다.모델 2는 로직과 디스플레이의 분리를 유도하기 때문에 통상 모델-뷰-컨트롤러(MVC) 패러다임과 연관된다.MVC "모델"의 정확한 형태는 모델 2 설계에 의해 명시되지 않았지만, 많은 출판물은 MVC 모델 코드를 포함하도록 공식화된 레이어를 권장한다.예를 들어 Java BluePrints는 원래 MVC 모델을 캡슐화하는 데 EJB를 사용할 것을 권장했다.
모델 2 애플리케이션에서는 클라이언트 브라우저의 요청이 컨트롤러로 전달된다.컨트롤러는 디스플레이를 위해 정확한 콘텐츠를 얻기 위해 필요한 로직을 수행한다.그런 다음, 요청서에 내용을 배치하고(일반적으로 자바빈 또는 POJO 형태로) 요청을 전달할 보기를 결정한다.그런 다음 뷰는 컨트롤러를 통해 전달된 콘텐츠를 렌더링한다.
중대형 애플리케이션에는 모델2가 권장된다.
역사
1998년, Sun Microsystems는 JavaServer Pages 규격의 사전 공개 버전 0.92를 발표하였다.[1]이 명세서에서 Sun은 JSP 페이지를 사용할 수 있는 두 가지 방법을 제시했다.첫 번째 모델(문서에 나와 있는 주문 때문에 "모델 1"이라고 한다)은 JSP 페이지가 독립적으로 분리되고 분리된 엔터티인 단순화된 모델이었다.논리는 페이지 자체 내에 포함될 수 있으며, 페이지 간 탐색은 일반적으로 하이퍼링크를 통해 이루어졌다.이것은 당시의 일반적인 템플릿 기술 사용과 잘 들어맞는다.
콜드퓨전(ColdFusion)과 액티브 서버 페이지(Active Server Pages)는 이 모델을 구현한 현대 기술의 예다.
문서에 언급된 두 번째 모델("주문 중 모델 2")은 서블릿 기술과 JSP 기술을 결합한 개선된 방법이었다.나열된 특정 차이점은 서블릿이 요청을 가로채서 렌더링할 콘텐츠를 요청 속성에 배치한 다음(일반적으로 자바 빈으로 표시됨) JSP를 호출하여 원하는 출력 형식으로 콘텐츠를 렌더링한다는 것이었습니다.이 모델은 JSP 기술을 순수 템플릿 엔진으로 사용했다는 점에서 이전 모델과 차이가 있었다.모든 논리는 서블릿으로 분리되어 JSP는 제공된 콘텐츠에 대한 출력을 렌더링하는 단독 책임을 지게 되었다.
1999년 12월, 자바월드는 Goverind Seshadri의 JavaServer Pages Model 2 아키텍처 이해라는 제목의 기사를 게재했다.[2]이 글에서 Govind는 "모델 2"라는 용어를 사용하는 데 있어 두 가지 주요 이정표를 달성했다.첫 번째 이정표는 "모델 2"라는 용어를 가능한 두 가지 옵션 중 하나가 아닌 건축 패턴으로 공식화하는 것이었다.두 번째 이정표는 모델 2가 웹 기반 소프트웨어를 위한 MVC 아키텍처를 제공했다는 주장이었다.[3]
Governind는 "모델 2" 아키텍처가 JSP에서 논리를 분리하여 서블릿에 배치했기 때문에 이 두 작품을 MVC 아키텍처에서 "뷰"와 "컨트롤러"(존중하게)로 볼 수 있다고 믿었다.MVC 아키텍처의 "모델" 부분은 Goverind에 의해 공개되었고, 거의 모든 데이터 구조가 요건을 충족할 수 있다는 제안이 있었다.기사에 사용된 구체적인 예는 사용자 세션에 저장된 벡터 목록이었다.
2000년 3월 아파치 스트럿츠 프로젝트가 출시되었다.이 프로젝트는 View와 Controller 사이의 구분을 공식화하고 "모델 2" 패턴의 구현을 주장했다.[3]다시 한번, 「모델」의 구현은, 소프트웨어 개발자가 적절한 솔루션을 채울 것이라는 기대감으로, 정의되지 않은 채로 남겨졌다.JDBC와 EJB를 통한 데이터베이스 상호작용은 Struts 홈페이지에서 제안된 옵션이었다.좀 더 최근에는, 겨울잠, iBatis, Object Relational Bridge가 모델에 사용될 수 있는 보다 현대적인 옵션으로 나열되었다.[4]
스트럿츠 출시 이후 경쟁적인 프레임워크가 다수 등장했다.이러한 프레임워크의 상당수는 또한 "모델 2"와 "MVC"를 구현한다고 주장한다.결과적으로, 이 두 용어는 개발자들의 마음속에서 동의어가 되었다.이로 인해 "MVC 모델 2" 또는 "MVC2"라는 용어를 약칭으로 사용하게 되었다.
오해
일반적인 오해는 모델 2 구현을 달성하기 위해 공식화된 MVC 패턴이 필요하다는 것이다.그러나 자바 블루프린트는 이러한 해석에 대해 특별히 경고한다.[5]
J2EE 플랫폼의 Web-tier 기술에 관한 문헌은 설명 없이 "모델 1"과 "모델 2"라는 용어를 자주 사용한다.이 용어는 JSP 페이지의 두 가지 기본 사용 패턴을 기술한 JSP 규격의 초기 초안에서 유래한다.명세서에서 용어가 사라졌지만, 그것들은 여전히 공통적으로 사용되고 있다.모델 1과 모델 2는 단순히 클라이언트 계층의 요청을 발송하고 뷰를 선택하는 컨트롤러 서블릿의 부재 또는 존재(존중)를 가리킨다.
더욱이, "MVC2"라는 용어는 많은 사람들로 하여금 모델 2가 차세대 MVC 패턴을 나타낸다고 잘못 믿게 만들었다.사실 MVC2는 단순히 "MVC Model 2"[6]라는 용어를 줄인 것이다.
'MVC2'라는 용어에 대한 혼동 때문에 모델 1 코드에 대한 혼동이 추가로 발생하여 존재하지 않는 용어 'MVC1'을 공통적으로 사용하는 결과가 되었다.
참고 항목
- Apache Struts는 모델 2 아키텍처를 기반으로 웹 애플리케이션을 구현하기 위한 오픈 소스 프레임워크다.
참조
- ^ JSP 0.92 사양
- ^ Seshadri, Govind (December 29, 1999). "Understanding JavaServer Pages Model 2 architecture". JavaWorld. Retrieved 2020-07-17.
- ^ a b 스트럿이 모델 2를 구현하는 방법(모델 1/모델 2의 기원)
- ^ "Struts 1.x Homepage". Archived from the original on 2010-09-23. Retrieved 2010-10-05.
- ^ Java BluePrint 4.4.1: 웹 계층 구조화
- ^ 오픈 소스 MVC 구현인 Struts
외부 링크
- Seshadri, Govind (December 29, 1999). "Understanding JavaServer Pages Model 2 architecture". JavaWorld. Retrieved 2020-07-17.
- 모델 2를 포함한 MVC의 역사
- ASP.NET 프리젠테이션 패턴 - 이 글에서 Dino Esposito는 모델2가 ASP에서도 어떻게 사용되는지에 대해 논한다.NET MVC.