ポートレットとサーブレットの違いは何ですか?
ポートレットとポータルで作業するように求められます。
ポートレットとサーブレットの違いを知りたいですか?
ポートレットは、サーブレットとどのように/どこで(機能的に)異なるのですか?
ポートレットは、ポータルコンテナおよびコンポーネントを規制するJSR-168標準の一部です。これは、Webコンテナ(およびサーブレット)の標準とは異なる標準です。これら2つの標準には明確な類似点がありますが、コンテナ、API、ライフサイクル、構成、展開などが異なります。
ポートレットとサーブレットの主な違いは、サーブレットが常に単一のタイプのアクションに応答する一方で、request、ポートレット(ライフサイクルの性質とより強力なコンテナバインディングのため)が2つのタイプに応答する必要があることです。アクション:レンダリングおよびリクエスト。もちろん、それ以上のことがありますが、ポータル開発を勉強したとき、これがこの2つの主要な違いであることがわかりました。
ソースから強化: Servlets対Portlets
類似度
サーブレットとポートレットは、実装にJavaを使用するWebベースのコンポーネントです。
サーブレットがサーブレットコンテナによって管理されるように、ポートレットはポートレットコンテナによって管理されます。
ポートレットとサーブレットは、静的コンテンツと動的コンテンツの両方を生成できます。
ポートレットとサーブレットのライフサイクルはコンテナによって制御されます
クライアント/サーバーモデルは、サーブレットとポートレットの両方に使用されます
パッケージ化と展開は基本的に同じWAR/EARです。
アプリケーションセッションは、サーブレットコンテナとポートレットコンテナの両方に存在します。これは、ポートレットコンテナのレンダリングフェーズからアクションフェーズ(またはそれ以下のフェーズ)までデータを共有する(粗いポートレット間通信)方法の1つです。
- サーブレットとポートレットはどちらも同様のサーバー/ VMそれをサポートする環境を使用します。
- ビルド/ DIツールは両方とも類似しており、Ant、Maven、Gradleなどがすべてサポートされています。主に:)-これはLiferay 7で少し変更されました。
相違点
サーブレットは完全なWebページをレンダリングできますが、ポートレットはhtmlフラグメントをレンダリングします。これらのフラグメントは、ポータルによって完全なWebページに集約されます。
JSR 168ポートレットのコンテンツタイプは、cHTML、XHTML、WMLのみです。他のコンテンツタイプはサポートしていません。
ポートレットでは、body、frame、frameset、head、html、titleなどのタグを含むHTMLコードを生成できません。
サーブレットとは異なり、ポートレットにはURLが添付されていないため、直接アクセスできません。アクセスは、ポートレットを保持するポータルページを介してのみ行われます。
ポートレットには、ウィンドウの状態またはポートレットモードを操作するためのコントロールを提供できます。
単一のポートレットの複数のインスタンスを同じページに配置できます。
ポートレットは、永続的な構成とカスタマイズ、プロファイル情報をサポートします。
ポートレットには2種類のリクエストがあります。レンダリング要求とアクション要求。
ポートレットには、セッション内に2つのスコープがあります。ポートレット間の通信用のアプリケーションスコープと、ポートレット内通信用のポートレットスコープ。
ポートレットは、応答の文字セットエンコーディングを設定することも、HTTP応答ヘッダーを設定することもできません。
ポートレットにはリクエストURLへのアクセス権がありません。そのため、URLに追加されたクエリパラメータにアクセスできません。ポートレットはクッキーを設定できません。
ポートレットAPIの典型的なメソッドは
doView()
、doEdit()
、doHelp()
およびprocessAction()
です。一方、サーブレットのメソッドはservice()
、doPost()
、doGet()
。ポートレットのデプロイには、サーブレットアプリケーションとは異なる 異なるアプローチ が含まれます。一部のプロバイダ(Liferay/Alfresco/WebSphere)は、OSGiなどの特別なライブラリを使用してアプリケーションをモジュール化しないサーブレットの場合は不可能な、サーバーを再起動することなくポートレットのホットデプロイをサポートします。
編集 (コメントから)
ポートレットコンテナは、サーブレットコンテナ上に構築されます。したがって、最終的には、ポートレットはサーブレットコンテナ上で実行されると言えます。ただし、アプリの開発中は、サーブレット/ Java EEコンテナとは別にポートレットコンテナを表示します。
ポートレットとサーブレットの両方がhttpリクエストを受信し、レスポンスを返します。これは通常、ブラウザでレンダリング可能なHTMLです。ポートレットは「ポータル」のコンテキストで使用されます。これは、ユーザーに表示される1つのページに多くのパーツ、思考タイルがあり、それぞれが異なるポートレットに由来するという考え方です。
これで、通常のサーバーからその「タイル化」効果を得ることができます(方法の例についてはStruts + Tilesを参照)。ポートレットによって表示されるものは、個々のユーザーが好みに合わせて構成でき、ポーレットは相互に通信できます。1つのボタンを押すと、別のボタンで何かが発生します。
サーブレットにはJava定義(HTTP GET/POST要求を処理するアプリケーション)がありますが、ポートレットにはユーザーインターフェイス定義があります。WindowsVistaウィジェットまたは多くのコンポーネントに似た特定の機能を実行するコンポーネントここではstackoverflowで使用されます。サーバー側のサーブレットによって必ずしもサポートされる必要はありませんが、Portlet標準はJavaとともに開発されました。O'ReillyにはNice tutorial があります。
基本的に、サーブレットは(フレームを使用していない限り)通常ブラウザでページ全体を占めるコンテンツを提供し、ポートレットはウィンドウでラップされたコンテンツを提供します。ポートレットを使用すると、複数のポートレットを並べて配置でき、それぞれが異なるコンテンツと機能を提供できます。ポートレットは、あるタイプのアプリケーションに完全な対話を提供し、別のポートレットは別のタイプのアプリケーションにコンテンツを提供できます。ポータルは、ハウスキーピング機能を提供し、ページ上のすべてのポートレットへの単一のエントリポイントを保護できます。それらの間の詳細(類似性/相違点)については、引き続きお読みください。いくつかの類似点は次のとおりです。サーブレットとポートレットは、実装にJavaを使用するWebベースのコンポーネントです。ポートレットは、サーブレットコンテナと同様のポートレットコンテナによって管理されます。または動的