jaka jest różnica między portletem a serwletem?


96

Jestem proszony o pracę nad portletami i portalami.

Chcę poznać różnicę między portletem a serwletem?

Czym / gdzie portlet różni się (może funkcjonować) od serwletu?

Odpowiedzi:


65

Portlety są częścią standardu JSR-168, który reguluje kontenery i komponenty portalu. Jest to inny standard niż standardy dla kontenerów WWW (i serwletów). Chociaż istnieją zdecydowanie silne podobieństwa między tymi dwoma standardami, różnią się one kontenerami, interfejsami API, cyklem życia, konfiguracją, wdrożeniem itp.

Główna różnica między portletem a serwletem może polegać na tym, że podczas gdy serwlet zawsze odpowiada na jeden typ akcji - żądanie , portlet (ze względu na swój cykl życia i silniejsze powiązania kontenerów) musi odpowiadać na dwa typy akcji: renderowanie i żądanie . Jest tego oczywiście więcej, ale uznałem to za podstawową różnicę między nimi, gdy studiowałem tworzenie portali.


1
Aktualizacja: Portlety 1 to JSR 168 , Portlety 2 to JSR 286 , a Portlet 3 to JSR 362 .
Basil Bourque

137

Ulepszone ze źródła : serwlety kontra portlety

Podobieństwa

  1. Serwlety i portlety są komponentami WWW, które używają języka Java do ich implementacji.

  2. Portlety są zarządzane przez kontener portletów, tak jak serwlet jest zarządzany przez kontener serwletów.

  3. Portlety i serwlety mogą generować zarówno treść statyczną, jak i dynamiczną.

  4. Cykl życia portletów i serwletów jest kontrolowany przez kontener

  5. Model klient / serwer jest używany zarówno w przypadku serwletów, jak i portletów

  6. Pakowanie i wdrażanie są zasadniczo takie same, WAR / EAR.

  7. Sesja aplikacji istnieje zarówno w kontenerach serwletów, jak i portletów. Jest to jeden ze sposobów udostępniania danych (prostą komunikację między portletami) z fazy wyświetlania do fazy akcji (lub dowolnej niższej fazy) w kontenerach portletów.

  8. Serwlety i portlety używają podobnych środowisk serwer / maszyny wirtualnej, które je obsługują. Chociaż w przypadku portletów mogą być potrzebne pewne dodatkowe konfiguracje, aby to zadziałało

  9. Narzędzia do budowania / DI są podobne dla obu - obsługiwane są Ant, Maven, Gradle itp. Głównie :) - Trochę się to zmieniło w Liferay 7.


Różnice

  1. Serwlety mogą renderować całe strony internetowe, podczas gdy portlety renderują fragmenty html. Portal agreguje te fragmenty w kompletną stronę internetową.

  2. Typ treści portletów JSR 168 może obejmować tylko cHTML, XHTML i WML. Nie obsługuje innych typów treści.

  3. Portlety nie mogą generować kodu HTML zawierającego znaczniki, takie jak treść, ramka, zestaw ramek, nagłówek, html lub tytuł.

  4. Portlet w przeciwieństwie do serwletu nie ma dołączonego adresu URL, więc nie można uzyskać do niego bezpośredniego dostępu. Dostęp jest możliwy tylko za pośrednictwem strony portalu, na której znajduje się portlet.

  5. Portlety mogą być wyposażone w elementy sterujące służące do manipulowania stanami okien lub trybami portletów.

  6. Na tej samej stronie można umieścić wiele instancji jednego portletu.

  7. Portlety obsługują trwałą konfigurację i dostosowywanie oraz informacje o profilu.

  8. Portlety mogą mieć dwa typy żądań, a mianowicie. żądanie renderowania i żądanie działania.

  9. Portlety mają dwa zasięgi w ramach sesji; zakres aplikacji do komunikacji między portletami i zakres portletów do komunikacji między portletami.

  10. Portlet nie może ustawić kodowania zestawu znaków odpowiedzi ani nagłówków odpowiedzi HTTP.

  11. Portlety nie mają dostępu do adresu URL żądania. Dlatego nie może uzyskać dostępu do parametrów zapytania dołączonych do adresu URL. Portlety nie mogą ustawiać plików cookie.

  12. Typowe metody portletĂłw czynnych są doView(), doEdit(), doHelp()i processAction(), gdy te są serwletu service(), doPost(), doGet().

  13. Specyfikacje serwletów - JSR 369 (serwlet 4.0), JSR 340 (serwlet 3.1), JSR 315 (serwlet 3.0), JSR 154 (serwlet 2.5 i 2.4). Specyfikacje portletów - JSR 168 (Portlet Spec v1.0), JSR 286 (Portlet Spec v2.0), JSR 362 (Portlet Spec v3.0)

  14. Wdrażanie portletów wymaga innego podejścia niż aplikacja serwletowa. Niektórzy dostawcy (Liferay / Alfresco / WebSphere) obsługują wdrażanie portletów na gorąco bez konieczności restartowania serwera, co nie jest możliwe w przypadku serwletów bez modularyzacji aplikacji przy użyciu specjalnych bibliotek, takich jak OSGi.


Edytuj (z komentarzy)

Kontener portletów jest oparty na kontenerze serwletów. Ostatecznie można więc powiedzieć, że portlet działa w kontenerze serwletów. Jednak podczas tworzenia aplikacji widzimy kontener portletów oddzielnie od kontenera Servlet / Java EE.


Czyli aplikacja portalu działa w kontenerze serwletów / JEE i osobno komunikuje się z kontenerem portletów? Komputer klienta (przeglądarka) nie rozpoznaje kontenera portletów lub portletów, tak jak rozumiem, poza wyglądem strony, który jest obsługiwany przez JavaScript i częściowe odświeżanie strony.
Andy

2
Kontener portletów jest oparty na kontenerze serwletów. Można powiedzieć, że kontener portletów to zaawansowany kontener serwletów z wieloma „funkcjami”. Ale odpowiadając na twoje pytanie bez ogródek, tak. Podczas tworzenia aplikacji widzimy kontener portletów oddzielnie od kontenera Servlet / JEE.
Ashok Goli

4
Najprościej można o tym pomyśleć, że serwlet renderuje całą stronę WWW, a portlet renderuje określoną prostokątną część (podsekcję) strony WWW. Na przykład pasek reklamowy po prawej stronie strony z wiadomościami mógłby zostać wyrenderowany jako portlet. Ale nie zaimplementowałbyś jednego pola edycyjnego jako portletu, ponieważ jest to zbyt szczegółowe. Zasadniczo, jeśli podzielisz stronę internetową na jej główne sekcje, to są one dobrymi kandydatami do przekształcenia w portlety.

@ClayFerguson „portlet renderuje określoną prostokątną część (podsekcję) strony internetowej”, więc przypomina ramkę lub <div> ...
Tom Brito

@TomBrito - Częściowo prawda. Przypomina ramkę lub element div, które mają własne cykle życia i mogą udostępniać dane innym ramkom lub elementom div.
Ashok Goli

8

Zarówno portlety, jak i serwlety odbierają żądanie http i zwracają odpowiedź, która jest zwykle fragmentem kodu HTML, który może zostać wyświetlony przez przeglądarkę. Portlet jest używany w kontekście „portalu”, a idea polega na tym, że pojedyncza strona widziana przez użytkownika składa się z wielu części, kafli myśli, z których każda pochodzi z innego portletu.

Teraz możesz uzyskać ten efekt „kafelków” z normalnych serwetów (zobacz Struts + Tiles, aby zapoznać się z przykładem). Dodatkowy bit z portletów polega na tym, że portlety znajdują się w bogatszym środowisku udostępnianym przez Portal, dostępne są dodatkowe interfejsy API, dzięki czemu to, co jest wyświetlane przez dowolny portlet, może być konfigurowane przez poszczególnych użytkowników zgodnie z ich preferencjami, a porlety mogą się ze sobą komunikować - w jednym naciśnij przycisk, w drugim coś się dzieje.


6

Serwlety mają definicję java (aplikacje, które obsługują żądania HTTP GET / POST), a portlety mają definicję interfejsu użytkownika. Komponent wykonujący określoną funkcję podobną do widżetów Windows Vista lub wiele komponentów używanych tutaj w stackoverflow. Nie muszą być obsługiwane przez serwlety po stronie serwera. Ale standard Portlet został opracowany razem z java. O'Reilly ma fajny tutorial .


4

Zasadniczo serwlety dostarczają treści, która normalnie zajmuje całą stronę w przeglądarce (chyba że używasz ramek), a portlety dostarczają treści zawiniętej w okno. W przypadku portletów można mieć wiele portletów obok siebie, a każdy z nich może udostępniać treści i funkcje inne niż pozostałe. Portlet może zapewnić pełną interakcję dla jednego typu aplikacji, podczas gdy inny portlet może udostępnić treść dla innego typu aplikacji. Portal może zapewnić pewne funkcje zarządzania i zabezpieczony pojedynczy punkt dostępu do wszystkich portletów na stronie. Jeśli chodzi o szczegóły (podobieństwa / różnice) między nimi, czytaj dalej. Oto kilka podobieństw:

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.