JSF、サーブレット、JSPの違いは何ですか?


826

質問があります。これらは :

  1. JSPとサーブレットはどのように関連していますか?
  2. JSPはある種のサーブレットですか?
  3. JSPとJSFはどのように関連していますか?
  4. JSFはASP.NET-MVCのようなビルド前のUIベースのJSPですか?

3
JSF 2.0以降では、xmlは必要ありません。
Divyesh Kanzariya 2016年

回答:


1229

JSP(JavaServer Pages)

JSPはサーバーマシン上で実行されるJavaビューテクノロジーであり、テンプレートテキストをクライアント側の言語(HTML、CSS、JavaScriptなど)で記述できます。JSPはtaglibsをサポートします。これは、ページフローまたは出力を動的に制御できるJavaコードによってサポートされています。よく知られているtaglibはJSTLです。JSPはExpression Languageもサポートします。これは、主にtaglibと組み合わせて、バックエンドデータにアクセスするために使用できます(ページ、リクエスト、セッション、およびアプリケーションスコープで使用可能な属性を介して)。

JSPが初めて要求されたとき、またはWebアプリが起動したときに、サーブレットコンテナはそれを拡張するクラスにコンパイルしHttpServlet、Webアプリの存続期間中に使用します。生成されたソースコードは、サーバーの作業ディレクトリにあります。たとえばTomcatでは、それは/workディレクトリです。JSPリクエストで、サーブレットコンテナはコンパイルされたJSPクラスを実行し、生成された出力(通常はHTML / CSS / JSのみ)をネットワーク経由でクライアントサーバーに送信します。クライアント側はクライアントブラウザにそれを表示します。

サーブレット

サーブレットは、サーバーマシン上で実行されるJavaアプリケーションプログラミングインターフェース(API)であり、クライアントによって行われた要求をインターセプトし、応答を生成/送信します。よく知られている例は、やなどの一般的なHTTPメソッドを使用HttpServletしてHTTPリクエストをフックするメソッドを提供するです。特定のHTTP URLパターンをリッスンするようにを構成できます。これは、で、または最近ではJava EE 6で、アノテーションを使用して構成できます。GETPOSTHttpServletweb.xml@WebServlet

サーブレットが最初に要求されたとき、またはWebアプリの起動時に、サーブレットコンテナはそのインスタンスを作成し、Webアプリの存続期間中、メモリに保持します。同じインスタンスが、URLがサーブレットのURLパターンと一致するすべての受信リクエストで再利用されます。でリクエストデータにアクセスしHttpServletRequest、でレスポンスを処理できますHttpServletResponse。両方のオブジェクトは、オーバーライドされた方法のいずれか内部メソッドの引数として利用可能であるHttpServlet、などdoGet()doPost()

JSF(JavaServer Faces)

JSFは、サーブレットAPIの上に構築されたコンポーネントベースのMVCフレームワークであり、JSPやFaceletsなどの他のJavaベースのビューテクノロジーで使用できるtaglibsを介してコンポーネントを提供します。Faceletsは、JSPよりもJSFにはるかに適しています。つまり、コンポジットコンポーネントなどの優れたテンプレート機能を提供しますが、JSPは基本的にJSFでのテンプレートのみを提供するため、次の場合に生のJavaコード(少し不透明で多くの面倒な作業)を使用してカスタムコンポーネントを作成する必要があります。繰り返されるコンポーネントのグループを単一のコンポーネントに置き換える場合。JSF 2.0以降、JSPはビューテクノロジとして非推奨になり、Faceletsが採用されました。 <jsp:include>

:JSP自体は非推奨ではなく、JSFとJSPの組み合わせのみが非推奨です。

:JSPには、Taglib、特に(タグファイル)バリアントによる優れたテンプレート機能があります。JSFと組み合わせたJSPテンプレートは、欠けているものです。

MVC(Model-View-Controller)フレームワークであるJSFは、FacesServletを唯一の要求/応答コントローラーとして提供します。ユーザー入力の収集、検証/変換、モデルオブジェクトへの配置、アクションの呼び出し、応答のレンダリングなど、標準的で面倒なすべてのHTTP要求/応答作業を手から取得します。このようにして、基本的にはViewの JSPまたはFacelets(XHTML)ページとModelとしてのJavaBeanクラスが作成されます。JSFコンポーネントは、ビュー(ASP.NET Webコントロールなど)とビューをバインドするために使用され、FacesServletJSFコンポーネントツリーを使用してすべての作業を行います。

関連する質問


8
@Shashank:完全にではありません。<c:forEach>JSTLからのタグのみです。stackoverflow.com/tags/jstl/info
BalusC 2012

1
はい。<mytag:doesSomething/>カスタムタグと<jsp:attribute>jspタグのように見えます。
Shashank Kadne

3
これは非常に人気のある回答なので、JSPタグファイルという非常に重要なビットを追加します。これにより、Javaコードを記述せずにページ構成とレイアウトのカスタムタグを作成できます。この機能は非常に便利で、長年にわたって標準の一部として使用されていますが、十分に活用されていません。
ジギー、2014

1
@johnny Faceletsは、Java EE 6が2009年にリリースされて以来、推奨されるビューテクノロジーです(docs.oracle.com/javaee/6/tutorial/doc/giepx.html)。Java Webアプリを開発するための最低限のテクノロジーセットは他のほとんどの言語ほど高くはありませんが、多くのオプションと競合相手が存在するため、新規参入者を混乱させます。RubyでのWeb開発?最初の選択は明白です。
DavidS 2014

1
詳細な説明については@BalusC +1。私の好きな答え。
アニッシュB.

84

http://www.oracle.com/technetwork/java/faq-137059.htmlを参照してください

JSPテクノロジは、Javaテクノロジファミリの一部です。JSPページはサーブレットにコンパイルされ、JavaBeansコンポーネント(Bean)またはEnterprise JavaBeansコンポーネント(エンタープライズBean)を呼び出してサーバー上で処理を実行できます。そのため、JSPテクノロジーは、Webベースのアプリケーションの非常にスケーラブルなアーキテクチャの主要コンポーネントです。

https://jcp.org/en/introduction/faqを参照してください

A:JavaServer Facesテクノロジは、Webアプリケーションのユーザーインターフェースを構築するためのフレームワークです。JavaServer Facesテクノロジには次のものが含まれます。

一連のAPI:UIコンポーネントの表現とその状態の管理、イベントと入力の検証の処理、ページナビゲーションの定義、国際化とアクセシビリティのサポート。

JSPページ内でJavaServer Facesインターフェースを表現するためのJavaServer Pages(JSP)カスタムタグライブラリ。

JSPは特殊なサーブレットです。

JSFは、JSPで使用できるタグのセットです。


6
「JSPは特殊な種類のサーブレットです。JSFは、JSPで使用できるタグのセットです。」このステートメントは、3つの関係を最もよく表しています!
lfree 2016年

34

ブラウザ/クライアントの観点から

JSPとJSFはどちらも同じように見えます。アプリケーションごとの要件が示すように、JSPはリクエストベースのアプリケーションに適しています。

JSFは、よりリッチなイベントベースのWebアプリケーションを対象としています。イベントはリクエスト/レスポンスよりもはるかに細かく見えます。

サーバーの観点から

JSPページはサーブレットに変換され、動作は最小限です。

JSFページは(特殊なFacesServletによって)コンポーネントツリーに変換され、仕様で定義されたコンポーネントライフサイクルに従います。


23

サーブレット:

JavaサーブレットAPIを使用すると、Java開発者は動的Webコンテンツを配信するためのサーバー側コードを記述できます。他の独自のWebサーバーAPIと同様に、JavaサーブレットAPIはCGIよりもパフォーマンスが向上しました。ただし、いくつかの重要な追加の利点があります。サーブレットはJavaでコーディングされているため、オブジェクト指向(OO)設計アプローチを提供し、さらに重要なことに、任意のプラットフォームで実行できます。したがって、Javaをサポートするすべてのホストに同じコードを移植できました。サーブレットは、サーバー側のWebアプリケーション開発で広く使用されているテクノロジーになり、Javaの人気に大きく貢献しました。

JSP:

JSPはサーブレットの上に構築されており、Webユーザーインターフェース用の大量の動的HTMLコンテンツを生成するためのよりシンプルなページベースのソリューションを提供します。JavaServer Pagesを使用すると、Web開発者およびデザイナーは、動的なJava部分の特別なタグを使用してHTMLページを簡単に編集できます。JavaServer Pagesは、Webサーバーにインストールされ、すべてのJSPページビュー要求を処理するJSPコンテナと呼ばれる特別なサーブレットを使用することで機能します。JSPコンテナは、要求されたJSPをサーブレットコードに変換し、それをコンパイルしてすぐに実行します。同じページに対する後続のリクエストは、ページのランタイムサーブレットを呼び出すだけです。サーバー上のJSPに変更が加えられた場合、それを表示する要求により、ランタイムサーブレットの別の変換、コンパイル、および再起動がトリガーされます。

JSF:

JavaServer Facesは、Webアプリケーションのユーザーインターフェイスを構築するための標準Javaフレームワークです。最も重要なのは、ユーザーインターフェイスの開発を簡略化することです。これは、多くの場合、Webアプリケーション開発のより困難で面倒な部分の1つです。
エンタープライズWebアプリケーション開発用に設計された包括的なフレームワークがなくても、基盤となるJava Webテクノロジー(JavaサーブレットやJavaServer Pagesなど)を使用してユーザーインターフェースを構築することは可能ですが、これらのコアテクノロジーは、さまざまな開発や保守の問題を引き起こす可能性があります。さらに重要なのは、開発者が本番品質のソリューションを達成するまでに、JSFによって解決された同じ一連の問題が非標準的な方法で解決されることです。JavaServer Facesは、Java Webアプリケーションのユーザーインターフェースの開発を次のように簡素化するように設計されています。
•Webユーザーインターフェースを構築するためのコンポーネント中心のクライアントに依存しない開発アプローチを提供し、開発者の生産性と使いやすさを向上させます。
•Webユーザーインターフェイスからのアプリケーションデータへのアクセスと管理を簡素化します。
•複数のリクエストと複数のクライアント間のユーザーインターフェイスの状態を、シンプルで目立たない方法で自動的に管理します。
•さまざまなスキルセットを持つ多様な開発者向けの開発フレームワークを提供します。
•Webアプリケーションのアーキテクチャパターンの標準セットについて説明します。

[ ソース:完全なリファレンス:JSF ]


3
それは私ではありませんでしたが、基本的には本から回答をコピーして貼り付けただけだと思います。
mawburn 2013

7
@オベロン:返信ありがとうございます。正確な言葉を見つけるのにしばらく時間がかかったので、本を探しに行きました。それが適切でない場合は、あなたまたは誰もが答えを削除するように提案できます。よろしくお願いします。
Kishor Prakash 2013

18

JSFよりもJSPを優先できる状況もあります。アプリケーションの性質は、テクノロジーを選択する際の決定要因となるはずです。

豊富なGUIインタラクションと多くのJavaスクリプトが必要な場合は、JSFを選択してください。基本的に、GUIアプリのアーキテクチャがコンポーネント指向で、Swingのように駆動される場合でも、JSFが最適です。

アプリケーションが単なるフォーム送信で、GUIのやり取りがそれほど必要ない場合は、新しい技術の習得がオーバーヘッドであり、複雑なフレームワークも不要であれば、JSPはうまく機能します。


13

サーブレット-Javaサーバー側のレイヤーです。

  • JSP-HTMLを使用したサーブレット
  • JSF-タグライブラリに基づくコンポーネント
  • JSP-サーバーがリクエストを受け取ったときに一度サーブレットに変換されます。

2
サーバーがリクエストを受け取ると、JSPはサーブレットに変換されます。
おしゃべり

...サーバーが最初のリクエストを受け取ったとき。マインドキャッシング。
dbalakirev 2016年

10

つまり、JSPは実行時にサーブレットに変換され、JSFはすべてのプログラミング構造をタグの形式で書き込むことができるため、Webページを読みやすくするためのまったく新しいものです。


6

サーブレットとJSPの基本的な違いは、サーブレットではJavaコードを記述し、HTMLコードを埋め込んでいることと、JSPでは逆のケースしかないことです。JSPではHTMLコードを記述し、JSPが提供するタグを使用してJavaコードを埋め込みます。


5

Java Server Pages(JSP)は、Java開発者および設計者が既存のビジネスシステムを活用する情報豊富な動的Webページを迅速に開発し、簡単に保守できるようにするJavaテクノロジです。JSPテクノロジーは、ユーザーインターフェイスをコンテンツ生成から分離し、設計者が基礎となる動的コンテンツを変更せずにページレイアウト全体を変更できるようにします。

Faceletsは、JSF(Java Server Faces)用に設計された最初の非JSPページ宣言言語であり、JSP開発者に、JSPと比較してよりシンプルで強力なプログラミングモデルを提供します。Webアプリケーション開発用のJSPで発生するさまざまな問題を解決します。

以下は、スクリプレットとファセットの機能を比較する表です。

ここに画像の説明を入力してください ソース


0
JSP:means HTML+Java Code:

JSPには独自のライフサイクルがありますjsp_init()jsp_service()jsp_destroy

最初のリクエスト後、JSPを.javaファイルに変換します。使用しているタグには3つのタイプがあり
ます1.)スクリプトレス

<%  %>

ここで開発者は、開発者がデータを取得したいすべてのものを宣言できます

2.)式タグ

<%=  %>

ここで開発者は印刷関連のデータを使用できます

3.)宣言

<!% %>

ここで、開発者はいくつかのメソッド関連データを宣言できます。

Servlet:

サーブレットには独自のライフサイクルがあります。

init()
service()
destroy()

最初のリクエストコンテナーがweb.xmlファイルからデータを読み取った後、ウェルカムフィルが表示されます。
次に、アクションを実行した後、URLを検索し、このプロセスの後、特定のサーブレットをそこで検索します。サービス操作が実行されます。

JSF:

JSFには独自のUIがあり、ライフサイクルは6つの方法で実行できます。

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

ここのuiのここではテーブルのパネルグリッドを使用していますが、これにはさまざまな面があります。

Rich Faces
Prime Faces.

-1

JSPは、MVC(Model View Controller)のビューコンポーネントです。コントローラは受信リクエストを受け取り、それをモデルに渡します。モデルは、データベースアクセスを行うBeanである可能性があります。次に、JSPはHTML、CSS、JavaScriptを使用して出力をフォーマットし、出力はリクエスタに返送されます。


-1

JSFは高度なフレームワークであり、プロジェクトに対してModel-View-Controller(MVC)ベースのアーキテクチャを非常に簡単に実装できます。JSPに対するJSFの主な利点は、条件に基づいてブラウザー上でコンポーネントを簡単に動的にレンダリングし、ajaxイベントを簡単に統合できることです。

JSFアプリケーションのフロントエンド、つまりxhtmlファイルは、ブラウザを介してユーザーに表示されるファイルです。これらのxhtmlファイルは、実際のアプリケーションロジックが記述されているコントローラーなどの管理対象Beanを内部的に呼び出します。

コントローラは、データベースと通信するさまざまなサービスを内部的に呼び出します(HibernateまたはJPA APIを使用)。これは、要するにフローが発生する方法です。

JSFは、Webアプリケーションにリッチなルックアンドフィールを与えるためのフレームワークであるRichFacesと組み合わせて使用​​されます。

JSF + RichFaces + Hibernate / JPAは、確かに学ぶための優れたテクノロジーです!


-2

Jspには、直接実行して実行できる外部コンパイルを必要としない組み込みのサーブレットコードも含まれています。変更は、ブラウザーのjspで直接有効になります。

サーブレットをコンパイルする必要があります(つまり、特定のクラスが作成されます)

JSFはMVCフレームワークのビューコンポーネントです。


-2

JSPはJAVA SERVER PAGEを表します........ jspはサーブレットではありません。JspはコードとHTMLタグの両方を使用するため、HTMLとサーブレットを別々に作成する必要はありません。JspはWebアプリケーションで素晴らしい役割を果たしています。サーブレットはJavaクラスであり、HTMLページを静的から動的に変更する役割を果たします。


2
実際、JSPはサーブレットコンポーネントに変換されます。「JSPは実行時にサーブレットに変換されます」。出典:en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev 2016年

-2

サーブレットは、Webコンテナ内で実行されるサーバー側のJavaプログラムです。サーブレットの主な目的は、クライアントから受信した要求を処理することです。

Java Server Pagesは、動的Webページを作成するために使用されます。JSPは、サーブレットプログラムでは簡単ではなかった単一のファイルでJavaおよびHTMLコードを書き込むために導入されました。また、JSPファイルは、変換時にJavaサーブレットに変換されます。

Java Server Facesは、UIの開発を簡素化するMVC Webフレームワークです。

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