ポートレットとサーブレットの違いは何ですか?


96

ポートレットとポータルで作業するように求められます。

ポートレットとサーブレットの違いを知りたいのですが。

ポートレットはどのように/どこで(機能的には)サーブレットと異なりますか?

回答:


65

ポートレットは、ポータルコンテナとコンポーネントを規制するJSR-168標準の一部です。これは、Webコンテナ(およびサーブレット)の標準とは異なる標準です。これら2つの標準の間には確かに強い類似点がありますが、コンテナ、API、ライフサイクル、構成、デプロイメントなどが異なります。

ポートレットとサーブレットの主な違いは、サーブレットは常に単一のタイプのアクション(要求)に応答する一方で、ポートレットは(ライフサイクルの性質とより強力なコンテナバインディングにより)レンダリング要求の 2つのタイプのアクションに応答する必要があるということです。もちろんそれだけではありませんが、ポータル開発を研究したとき、これが2つのコアの違いであることがわかりました。


1
更新:ポートレット1はJSR 168、ポートレット2は JSR 286、ポートレット3はJSR 362です。
バジルブルク

137

ソースから拡張サーブレット対ポートレット

類似点

  1. サーブレットとポートレットは、実装にJavaを使用するWebベースのコンポーネントです。

  2. サーブレットは、サーブレットコンテナーによって管理されるのと同じように、ポートレットコンテナーによって管理されます。

  3. 静的コンテンツと動的コンテンツの両方を、ポートレットとサーブレットで生成できます。

  4. ポートレットとサーブレットのライフサイクルはコンテナによって制御されます

  5. クライアント/サーバーモデルは、サーブレットとポートレットの両方に使用されます

  6. WAR / EARのパッケージ化とデプロイメントは基本的に同じです。

  7. アプリケーションセッションは、サーブレットコンテナとポートレットコンテナの両方に存在します。これは、ポートレットコンテナでレンダリングフェーズからアクションフェーズ(またはそれより下位のフェーズ)にデータを共有する方法(粗いポートレット間通信)の1つです。

  8. サーブレットとポートレットはどちらも、それをサポートする同様のサーバー/ VM環境を使用します。ただし、ポートレットの場合は、ティックするために追加の構成が必要になる場合があります。

  9. ビルド/ DIツールはどちらも似ています-Ant、Maven、Gradleなどがすべてサポートされています。ほとんど:)-これはLiferay 7で少し変更されました。


相違点

  1. サーブレットは完全なWebページをレンダリングできますが、ポートレットはHTMLフラグメントをレンダリングします。これらのフラグメントは、ポータルによって完全なWebページに集約されます。

  2. JSR 168ポートレットのコンテンツタイプは、cHTML、XHTML、WMLのみです。他のコンテンツタイプはサポートしていません。

  3. ポートレットは、本文、フレーム、フレームセット、ヘッド、html、タイトルなどのタグを含むHTMLコードを生成することはできません。

  4. サーブレットとは異なり、ポートレットにはURLが添付されていないため、直接アクセスすることはできません。アクセスは、ポートレットを保持するポータルページを介してのみ行われます。

  5. ポートレットには、ウィンドウの状態またはポートレットモードを操作するためのコントロールを提供できます。

  6. 単一のポートレットの複数のインスタンスを同じページに配置できます。

  7. ポートレットは、永続的な構成とカスタマイズ、プロファイル情報をサポートします。

  8. ポートレットには、2種類の要求vizがあります。レンダリング要求とアクション要求。

  9. ポートレットには、セッション内に2つのスコープがあります。ポートレット間通信のアプリケーションスコープと、ポートレット内通信のポートレットスコープ。

  10. ポートレットは、応答の文字セットエンコーディングを設定することも、HTTP応答ヘッダーを設定することもできません。

  11. ポートレットはリクエストURLにアクセスできません。そのため、URLに追加されたクエリパラメータにアクセスできません。ポートレットはCookieを設定できません。

  12. ポートレットAPIの代表的な方法がありdoView()doEdit()doHelp()processAction()しながら、サーブレットのものがありますservice()doPost()doGet()

  13. サーブレット仕様 -JSR 369(サーブレット4.0)、JSR 340(サーブレット3.1)、JSR 315(サーブレット3.0)、JSR 154(サーブレット2.5および2.4)。 ポートレット仕様 -JSR 168(ポートレット仕様v1.0)、JSR 286(ポートレット仕様v2.0)、JSR 362(ポートレット仕様v3.0)

  14. ポートレットの配備には、サーブレットアプリケーションとは異なるアプローチが含まれます。一部のプロバイダー(Liferay / Alfresco / WebSphere)は、サーバーの再起動を必要とせずにポートレットのホットデプロイメントをサポートしています。これは、OSGiなどの特別なライブラリを使用してアプリケーションをモジュール化せずにサーブレットの場合は不可能です。


編集 (コメントから)

ポートレットコンテナは、サーブレットコンテナ上に構築されています。したがって、最終的には、ポートレットはサーブレットコンテナ上で実行されると言えます。ただし、アプリの開発中は、サーブレット/ Java EEコンテナとは別にポートレットコンテナを表示します。


それでは、ポータルアプリケーションはサーブレット/ JEEコンテナで実行され、ポートレットコンテナと個別に通信しますか?クライアントのマシン(ブラウザ)は、私が理解しているように、JavaScriptおよび部分的なページの更新を介して処理されるページの外観以外は、ポートレットコンテナを認識していません。
アンディ

2
ポートレットコンテナは、サーブレットコンテナ上に構築されています。ポートレットコンテナは、多くの「機能」を備えた高度なサーブレットコンテナであると言えます。しかし、あなたの質問に率直に答えるには、はい。アプリの開発中は、サーブレット/ JEEコンテナーとは別にポートレットコンテナーを表示します。
Ashok Goli 2013年

4
これを考える最も簡単な方法は、サーブレットがWebページ全体をレンダリングし、ポートレットがWebページの特定の長方形の部分(サブセクション)をレンダリングすることです。たとえば、ニュースページの右側にある広告バーをポートレットとしてレンダリングできます。ただし、細かすぎるため、単一の編集フィールドをポートレットとして実装することはできません。基本的に、Webページを主要なセクション領域に分割する場合、それらはポートレットに作成するのに適した候補です。

@ClayFerguson "ポートレットはWebページの特定の長方形の部分(サブセクション)をレンダリングします"なので、フレームまたは<div>のようなものです
Tom Brito

@TomBrito-部分的に正しい。フレームやdivのようなもので、独自のライフサイクルを持ち、他のフレームやdivとデータを共有できます。
Ashok Goli 2017年

8

ポートレットとサーブレットの両方がhttp要求を受信して​​応答を返します。これは通常、ブラウザでレンダリングできる一部のHTMLです。ポートレットは「ポータル」のコンテキストで使用されます。つまり、ユーザーが表示する単一のページには多数のパーツがあり、タイルはそれぞれ異なるポートレットからのものであると考えています。

これで、通常のサーブ(その方法の例についてはStruts + Tilesを参照)から「タイル」効果を得ることができます。ポートレットからの追加のビットは、ポートレットがポータルによって提供されるより豊かな環境にあり、追加のAPIが提供されているためです。ポートレットが表示する内容は、個々のユーザーが好みに合わせて設定でき、ポーレットは互いに通信できます。あるボタンを押すと、別のポートで何かが発生します。


6

サーブレットにはJava定義(HTTP GET / POST要求を処理するアプリケーション)があり、ポートレットにはユーザーインターフェース定義があります。WindowsVistaウィジェットと同様の特定の機能を実行するコンポーネント、またはここでのスタックオーバーフローで使用される多くのコンポーネント。それらは必ずしもサーバー側のサーブレットによって支えられる必要はありません。しかし、ポートレット標準は、Javaとともに開発されました。O'Reillyには素晴らしいチュートリアルがあります。


4

基本的に、サーブレットは通常フレーム全体を使用している場合を除き、ブラウザのページ全体を占めるコンテンツを提供し、ポートレットはウィンドウによってラップされるコンテンツを提供します。ポートレットを使用すると、複数のポートレットを並べて配置でき、それぞれが他とは異なるコンテンツと機能を提供できます。ポートレットは、あるタイプのアプリケーションに完全な対話を提供できますが、別のポートレットは、別のタイプのアプリケーションにコンテンツを提供できます。ポータルは、いくつかのハウスキーピング機能と、ページ上のすべてのポートレットへの安全な単一のエントリポイントを提供できます。それらの詳細(類似点/相違点)については、読み続けてください。ここにいくつかの類似点があります:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.