포틀릿과 서블릿의 차이점은 무엇입니까?


96

포틀릿 및 포털 작업을 요청 받았습니다.

포틀릿과 서블릿의 차이점을 알고 싶습니다.

포틀릿이 서블릿과 어떻게 / 어디에서 다릅니 까 (기능적으로)?

답변:


65

포틀릿은 포털 컨테이너 및 구성 요소를 규제하는 JSR-168 표준의 일부입니다. 이것은 웹 컨테이너 (및 서블릿)의 표준과는 다릅니다. 이 두 표준 사이에는 확실히 강력한 유사점이 있지만 컨테이너, API, 수명주기, 구성, 배포 등이 다릅니다.

- 포틀릿 대 서블릿의 주요 차이점은 서블릿이 항상 단일 작업의 유형에 응답하는 동안 일 수 있었다 요청 : 포틀릿 (인해 수명주기의 성격과 강한 용기 바인딩에) 행동의 두 가지 유형에 응답 할 수있다 렌더링요청 . 물론 더 많은 것이 있지만 포털 개발을 공부할 때 두 가지의 핵심 차이점으로 생각했습니다.


1
업데이트 : 포틀릿 1은 JSR 168 , 포틀릿 2는 JSR 286 , 포틀릿 3은 JSR 362 입니다.
Basil Bourque

137

소스에서 향상된 기능 : 서블릿 대 포틀릿

유사점

  1. 서블릿 및 포틀릿은 구현을 위해 Java를 사용하는 웹 기반 구성 요소입니다.

  2. 포틀릿은 서블릿 컨테이너가 서블릿 컨테이너에서 관리하는 것처럼 포틀릿 컨테이너에서 관리합니다.

  3. 포틀릿 및 서블릿에서 정적 및 동적 컨텐츠를 모두 생성 할 수 있습니다.

  4. 포틀릿 및 서블릿의 수명주기는 컨테이너에 의해 제어됩니다.

  5. 클라이언트 / 서버 모델은 서블릿과 포틀릿 모두에 사용됩니다.

  6. 패키징과 배포는 본질적으로 동일합니다. WAR / EAR입니다.

  7. 애플리케이션 세션은 서블릿 및 포틀릿 컨테이너에 모두 존재합니다. 이는 포틀릿 컨테이너의 렌더링 단계에서 작업 단계 (또는 하위 단계)까지 데이터를 공유하는 (원유 한 포틀릿 간 통신) 방법 중 하나입니다.

  8. 서블릿과 포틀릿은 모두이를 지원하는 유사한 서버 / VM 환경을 사용합니다. 그러나 포틀릿의 경우 일부 추가 구성이 필요할 수 있습니다.

  9. 빌드 / DI 도구는 둘 다 비슷합니다. Ant, Maven, Gradle 등이 모두 지원됩니다. 대부분 :)-이것은 Liferay 7에서 약간 변경되었습니다.


차이점

  1. 서블릿은 완전한 웹 페이지를 렌더링 할 수있는 반면 포틀릿은 html 조각을 렌더링합니다. 이러한 조각은 포털에서 완전한 웹 페이지로 집계됩니다.

  2. JSR 168 포틀릿의 컨텐츠 유형은 cHTML, XHTML, WML 만 될 수 있습니다. 다른 콘텐츠 유형은 지원하지 않습니다.

  3. 포틀릿은 body, frame, frameset, head, html 또는 title과 같은 태그를 포함하는 HTML 코드를 생성 할 수 없습니다.

  4. 서블릿과 달리 포틀릿에는 URL이 첨부되어 있지 않으므로 직접 액세스 할 수 없습니다. 액세스는 포틀릿이있는 포털 페이지를 통해서만 가능합니다.

  5. 포틀릿은 창 상태 또는 포틀릿 모드를 조작하는 컨트롤과 함께 제공 될 수 있습니다.

  6. 단일 포틀릿의 여러 인스턴스를 동일한 페이지에 배치 할 수 있습니다.

  7. 포틀릿은 지속적인 구성 및 사용자 정의, 프로필 정보를 지원합니다.

  8. 포틀릿에는 두 가지 유형의 요청 즉, 렌더링 요청 및 작업 요청.

  9. 포틀릿에는 세션 내에 두 가지 범위가 있습니다. 포틀릿 간 통신을위한 애플리케이션 범위 및 포틀릿 내 통신을위한 포틀릿 범위.

  10. 포틀릿은 응답의 문자 세트 인코딩을 설정할 수 없으며 HTTP 응답 헤더를 설정할 수도 없습니다.

  11. 포틀릿은 요청 URL에 액세스 할 수 없습니다. 따라서 URL에 추가 된 쿼리 매개 변수에 액세스 할 수 없습니다. 포틀릿은 쿠키를 설정할 수 없습니다.

  12. 포틀릿 API의 일반적인 방법은 doView(), doEdit(), doHelp()processAction()서블릿의 사람들은 동안 service(), doPost(), doGet().

  13. 서블릿 사양 -JSR 369 (Servlet 4.0), JSR 340 (Servlet 3.1), JSR 315 (Servlet 3.0), JSR 154 (Servlet 2.5 & 2.4). Portlet 사양 -JSR 168 (Portlet Spec v1.0), JSR 286 (Portlet Spec v2.0), JSR 362 (Portlet Spec v3.0)

  14. 포틀릿 배포 에는 Servlet 애플리케이션 과 다른 접근 방식 이 포함됩니다 . 일부 공급자 (Liferay / Alfresco / WebSphere)는 OSGi와 같은 특수 라이브러리를 사용하여 애플리케이션을 모듈화하지 않고 서블릿의 경우 불가능한 서버를 다시 시작할 필요없이 포틀릿의 핫 배포를 지원합니다.


편집 (댓글에서)

포틀릿 컨테이너는 서블릿 컨테이너에 빌드됩니다. 따라서 궁극적으로 포틀릿은 서블릿 컨테이너에서 실행된다고 말할 수 있습니다. 그러나 앱을 개발하는 동안 Servlet / Java EE 컨테이너와는 별도로 포틀릿 컨테이너를 봅니다.


그렇다면 포털 애플리케이션은 서블릿 / JEE 컨테이너에서 실행되고 포틀릿 컨테이너와 개별적으로 통신합니까? 클라이언트의 컴퓨터 (브라우저)는 내가 이해하는 포틀릿 컨테이너 또는 포틀릿을 인식하지 못합니다. JavaScript 및 부분 페이지 새로 고침을 통해 처리되는 페이지의 모양 외에는 다릅니다.
Andy

2
포틀릿 컨테이너는 서블릿 컨테이너에 빌드됩니다. 포틀릿 컨테이너는 많은 '기능'이있는 고급 서블릿 컨테이너라고 말할 수 있습니다. 그러나 귀하의 질문에 퉁명스럽게 대답하려면, 그렇습니다. 앱을 개발하는 동안 Servlet / JEE 컨테이너와 별도로 포틀릿 컨테이너를 봅니다.
Ashok Goli 2013

4
이것을 생각하는 가장 간단한 방법은 서블릿이 전체 웹 페이지를 렌더링하고 포틀릿이 웹 페이지의 특정 직사각형 부분 (하위 섹션)을 렌더링한다는 것입니다. 예를 들어, 뉴스 페이지의 오른쪽에있는 광고 막대는 포틀릿으로 렌더링 될 수 있습니다. 그러나 너무 세분화되어 단일 편집 필드를 포틀릿으로 구현하지 않습니다. 기본적으로 웹 페이지를 주요 섹션 영역으로 나누면 포틀릿으로 만들 수있는 좋은 후보입니다.

그것은 <DIV> ... 프레임처럼, 또는 그래서 @ClayFerguson는 "포틀릿은 웹 페이지의 특정 직사각형 부분 (하위 섹션) 렌더링"
톰 브리토

@TomBrito-부분적으로 사실입니다. 자체 수명주기가 있고 다른 프레임 또는 div와 데이터를 공유 할 수있는 프레임 또는 div와 같습니다.
쇼크 타라

8

포틀릿과 서블릿은 모두 http 요청을 수신하고 일반적으로 브라우저에서 렌더링 할 수있는 일부 HTML 인 응답을 반환합니다. 포틀릿은 "포털"의 컨텍스트에서 사용되며, 사용자가 보는 단일 페이지에는 서로 다른 포틀릿에서 가져온 많은 부분, 생각 타일이 있습니다.

이제 일반 서비스에서 "바둑판 식"효과를 얻을 수 있습니다 (방법에 대한 예는 Struts + Tiles 참조). 포틀릿의 추가 비트는 포틀릿이 포털에서 제공하는 더 풍부한 환경에 있다는 것입니다. 추가 API가 제공되므로 포틀릿에 표시되는 내용은 개별 사용자가 기본 설정에 맞게 구성 할 수 있으며, 포틀릿은 서로 통신 할 수 있습니다. 하나의 버튼을 누르면 다른 작업이 발생합니다.


6

서블릿에는 자바 정의 (HTTP GET / POST 요청을 처리하는 애플리케이션)가있는 반면 포틀릿에는 사용자 인터페이스 정의가 있습니다. Windows Vista 위젯과 유사한 특정 기능을 수행하는 구성 요소 또는 여기에서 스택 오버플로에 사용되는 많은 구성 요소가 있습니다. 서버 측의 서블릿이 반드시 지원할 필요는 없습니다. 그러나 포틀릿 표준은 자바와 함께 개발되었습니다. O'Reilly는 멋진 튜토리얼을 가지고 있습니다 .


4

기본적으로 서블릿은 일반적으로 브라우저에서 전체 페이지를 차지하는 콘텐츠를 제공하고 (프레임을 사용하지 않는 경우) 포틀릿은 창으로 래핑 된 콘텐츠를 제공합니다. 포틀릿을 사용하면 여러 포틀릿이 나란히있을 수 있으며 각 포틀릿은 서로 다른 컨텐츠와 기능을 제공 할 수 있습니다. 포틀릿은 한 유형의 애플리케이션에 대한 완전한 상호 작용을 제공 할 수 있고 다른 포틀릿은 다른 유형의 애플리케이션에 대한 컨텐츠를 제공 할 수 있습니다. 포털은 페이지의 모든 포틀릿에 대해 일부 하우스 키핑 기능과 보안 된 단일 진입 점을 제공 할 수 있습니다. 그들 사이의 세부 사항 (유사성 / 차이점)에 대해서는 계속 읽으십시오. 다음은 몇 가지 유사점입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.