回答:
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で、アノテーションを使用して構成できます。GET
POST
HttpServlet
web.xml
@WebServlet
サーブレットが最初に要求されたとき、またはWebアプリの起動時に、サーブレットコンテナはそのインスタンスを作成し、Webアプリの存続期間中、メモリに保持します。同じインスタンスが、URLがサーブレットのURLパターンと一致するすべての受信リクエストで再利用されます。でリクエストデータにアクセスしHttpServletRequest
、でレスポンスを処理できますHttpServletResponse
。両方のオブジェクトは、オーバーライドされた方法のいずれか内部メソッドの引数として利用可能であるHttpServlet
、などdoGet()
とdoPost()
。
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コントロールなど)とビューをバインドするために使用され、FacesServlet
はJSFコンポーネントツリーを使用してすべての作業を行います。
<c:forEach>
JSTLからのタグのみです。stackoverflow.com/tags/jstl/info
<mytag:doesSomething/>
カスタムタグと<jsp:attribute>
jspタグのように見えます。
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で使用できるタグのセットです。
サーブレット:
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 ]
サーブレット-Javaサーバー側のレイヤーです。
サーブレットとJSPの基本的な違いは、サーブレットではJavaコードを記述し、HTMLコードを埋め込んでいることと、JSPでは逆のケースしかないことです。JSPではHTMLコードを記述し、JSPが提供するタグを使用してJavaコードを埋め込みます。
Java Server Pages(JSP)は、Java開発者および設計者が既存のビジネスシステムを活用する情報豊富な動的Webページを迅速に開発し、簡単に保守できるようにするJavaテクノロジです。JSPテクノロジーは、ユーザーインターフェイスをコンテンツ生成から分離し、設計者が基礎となる動的コンテンツを変更せずにページレイアウト全体を変更できるようにします。
Faceletsは、JSF(Java Server Faces)用に設計された最初の非JSPページ宣言言語であり、JSP開発者に、JSPと比較してよりシンプルで強力なプログラミングモデルを提供します。Webアプリケーション開発用のJSPで発生するさまざまな問題を解決します。
以下は、スクリプレットとファセットの機能を比較する表です。
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.
JSFは高度なフレームワークであり、プロジェクトに対してModel-View-Controller(MVC)ベースのアーキテクチャを非常に簡単に実装できます。JSPに対するJSFの主な利点は、条件に基づいてブラウザー上でコンポーネントを簡単に動的にレンダリングし、ajaxイベントを簡単に統合できることです。
JSFアプリケーションのフロントエンド、つまりxhtmlファイルは、ブラウザを介してユーザーに表示されるファイルです。これらのxhtmlファイルは、実際のアプリケーションロジックが記述されているコントローラーなどの管理対象Beanを内部的に呼び出します。
コントローラは、データベースと通信するさまざまなサービスを内部的に呼び出します(HibernateまたはJPA APIを使用)。これは、要するにフローが発生する方法です。
JSFは、Webアプリケーションにリッチなルックアンドフィールを与えるためのフレームワークであるRichFacesと組み合わせて使用されます。
JSF + RichFaces + Hibernate / JPAは、確かに学ぶための優れたテクノロジーです!
Jspには、直接実行して実行できる外部コンパイルを必要としない組み込みのサーブレットコードも含まれています。変更は、ブラウザーのjspで直接有効になります。
サーブレットをコンパイルする必要があります(つまり、特定のクラスが作成されます)
JSFはMVCフレームワークのビューコンポーネントです。
JSPはJAVA SERVER PAGEを表します........ jspはサーブレットではありません。JspはコードとHTMLタグの両方を使用するため、HTMLとサーブレットを別々に作成する必要はありません。JspはWebアプリケーションで素晴らしい役割を果たしています。サーブレットはJavaクラスであり、HTMLページを静的から動的に変更する役割を果たします。