いくつか質問があります。
- JSP と Servlet はどのように関連していますか?
- JSP はサーブレットの一種ですか?
- JSP と JSF はどのように関連していますか?
- JSF は、ASP.NET-MVC のような、事前ビルドされた UI ベースの JSPの一種ですか?
ベストアンサー1
JSP (Java サーバー ページ)
JSPはサーバーマシン上で実行されるJavaビュー技術であり、クライアント側の言語(HTML、CSS、JavaScriptなど)でテンプレートテキストを記述することができます。JSPは以下をサポートしています。タグライブラリは、ページフローや出力を動的に制御できるJavaコードでサポートされています。よく知られているタグライブラリはJSTL. JSPはサポートもしています表現言語は、主にタグライブラリと組み合わせて、バックエンド データにアクセスするために使用できます (ページ、リクエスト、セッション、およびアプリケーションのスコープ内で使用可能な属性経由)。
JSPが初めて要求されたとき、またはWebアプリケーションが起動したときに、サーブレットコンテナはそれを次のクラスにコンパイルします。HttpServlet
ウェブアプリの存続期間中に使用します。生成されたソースコードはサーバーの作業ディレクトリにあります。例えばトムキャット、それは/work
ディレクトリです。JSP リクエストでは、サーブレット コンテナはコンパイルされた JSP クラスを実行し、生成された出力 (通常は HTML/CSS/JS のみ) を Web サーバーからネットワーク経由でクライアント側に送信し、クライアント側で Web ブラウザに表示されます。
サーブレット
サーブレットは、サーバーマシン上で実行されるJavaアプリケーションプログラミングインターフェース(API)であり、クライアントからのリクエストをインターセプトし、レスポンスを生成/送信します。よく知られている例としては、HttpServlet
フックするメソッドを提供するがあります。ウェブ人気のリクエストHTTP メソッドGET
やなどです。 は、 または最近ではで設定可能な特定のHTTP URLパターンをリッスンするようにPOST
設定できます。HttpServlet
web.xml
Java EE 6、@WebServlet
注釈付き。
サーブレットが最初にリクエストされたとき、またはWebアプリケーションの起動中に、サーブレットコンテナはサーブレットのインスタンスを作成し、Webアプリケーションの存続期間中メモリ内に保持します。同じインスタンスは、サーブレットのURLパターンに一致するURLを持つすべての受信リクエストに対して再利用されます。リクエストデータには、次の方法でアクセスできます。HttpServletRequest
そして応答を処理するHttpServletResponse
HttpServlet
両方のオブジェクトは、doGet()
やなどの のオーバーライドされたメソッド内でメソッド引数として使用できますdoPost()
。
JSF (JavaServer Faces)
JSFは、サーブレットAPI上に構築され、次のような機能を提供するコンポーネントベースのMVCフレームワークです。コンポーネントタグライブラリはJSPやその他のJavaベースのビューテクノロジーで使用できます。フェイスレットFaceletsはJSPよりもJSFに適しています。つまり、優れたテンプレート機能のような複合部品一方、JSPは基本的に<jsp:include>
JSF のテンプレート化では、繰り返し使用されるコンポーネントのグループを単一のコンポーネントに置き換える場合、生の Java コード (少しわかりにくく、非常に面倒な作業) を使用してカスタム コンポーネントを作成する必要があります。JSF 2.0 以降、JSP はビュー テクノロジとして非推奨となり、代わりに Facelets が採用されています。
注: JSP 自体は非推奨ではありません。JSF と JSP の組み合わせのみが非推奨です。
注: JSP には、特に (タグファイル) バリアント。JSF と組み合わせた JSP テンプレートが欠けています。
MVC(モデル-ビュー-コントローラ)フレームワークでは、JSFはFacesServlet
を唯一の要求/応答コントローラーとして使用します。ユーザー入力の収集、それらの検証/変換、モデル オブジェクトへの配置、アクションの呼び出し、応答のレンダリングなど、標準的で面倒な HTTP 要求/応答作業をすべて手作業で行います。この方法では、基本的にView用の JSP または Facelets (XHTML) ページとModel用の JavaBean クラスが作成されます。JSF コンポーネントは、ビューとモデルをバインドするために使用され (ASP.NET Web コントロールが行うように)、JSF コンポーネント ツリーFacesServlet
を使用してすべての作業を実行します。