JSPとServletはどのように関係しているのですか?JSPはサーブレットの一種ですか?JSPとJSFはどのように関係しているのですか?JSFはASP.NET-MVCのようなプリビルドUIベースのJSPの一種ですか?
JSPは、サーバーマシン上で動作するJavaビュー技術であり、クライアントサイドの言語(HTML、CSS、JavaScriptなど)でテンプレートテキストを記述することができます。JSPは、ページの流れや出力を動的に制御するためのJavaコードの一部であるtaglibsをサポートしています。よく知られているのはJSTLというタグライブラリです。JSPは、Expression Languageもサポートしています。Expression Languageは、(ページ、リクエスト、セッション、アプリケーションの各スコープで利用可能な属性を介して)バックエンドのデータにアクセスするために使用することができ、主にタグライブラリと組み合わせて使用します。
JSPが初めてリクエストされたときや、ウェブアプリが起動したときに、サーブレットコンテナはJSPをHttpServlet
を拡張したクラスにコンパイルし、ウェブアプリが存続している間、それを使用します。生成されたソースコードは、サーバのworkディレクトリにあります。例えばTomcatの場合,/work
ディレクトリになります。JSPのリクエストがあると、サーブレットコンテナはコンパイルされたJSPクラスを実行し、生成された出力(通常はHTML/CSS/JSのみ)をネットワーク経由でウェブサーバーからクライアント側に送り、クライアントはそれをウェブブラウザーに表示します。
サーブレットとは、サーバーマシン上で動作するJavaアプリケーション・プログラミング・インターフェース(API)であり、クライアントからのリクエストを受け取り、レスポンスを生成・送信します。よく知られた例としては、HttpServlet
があります。これは、GET
やPOST
といった一般的なHTTPメソッドを用いて、HTTPリクエストをフックするためのメソッドを提供します。HttpServletは特定のHTTP URLパターンをリッスンするように設定することができます。これは
web.xmlや、最近では[Java EE 6][10]で、
@WebServletアノテーションで設定することができます。 サーブレットが最初にリクエストされたとき、あるいはウェブアプリのスタートアップ時に、サーブレットコンテナはそのインスタンスを作成し、ウェブアプリが存続する間、そのインスタンスをメモリ内に保持します。同じインスタンスは、URLがサーブレットのURLパターンと一致するすべてのリクエストに対して再利用されます。リクエストのデータにアクセスするには[HttpServletRequest
][11]を,レスポンスを処理するにはHttpServletResponse`を使用します。この2つのオブジェクトは、HttpServlet
のオーバーライドされたメソッド、例えばdoGet()
やdoPost()
の中で、メソッドの引数として利用できます。
JSFはコンポーネントベースのMVCフレームワークで、Servlet APIの上に構築されており、JSPやその他のJavaベースのビュー技術であるFaceletsで使用できるコンポーネントをタグリブを介して提供しています。FaceletsはJSPよりもJSFに適しています。即ち、JSPは複合コンポーネントのような優れたテンプレート機能を提供しますが、JSPは基本的にJSFのテンプレートのための<jsp:include>
しか提供しませんので、繰り返されるコンポーネント群を単一のコンポーネントに置き換えたい場合には、生のJavaコードでカスタムコンポーネントを作成することを余儀なくされます(これは少し不透明で、多くの面倒な作業です)。 JSF 2.0以降、JSPはビューテクノロジーとしては廃止され、Faceletsが採用されています。
注。JSF 2.0以降、JSPはビュー技術として廃止され、Faceletが採用されました。
*注釈JSPはTaglibs、特に(Tag File)を用いた優れたテンプレート機能を持っています。 JSFと組み合わせた場合のJSPのテンプレート機能が不足しています。
MVC(Model-View-Controller)フレームワークであるJSFは、唯一のリクエスト・レスポンス型のコントローラとしてFacesServlet
を提供しています。JSFは、ユーザーの入力を収集し、それらを検証/変換し、モデルオブジェクトに格納し、アクションを呼び出し、レスポンスをレンダリングするといった、標準的で退屈なHTTPリクエスト/レスポンスの作業をすべて代行します。このようにして、基本的にはJSPまたはFacelets(XHTML)のページをViewとして、JavaBeanクラスをModelとして使用することになります。JSFコンポーネントは(ASP.NETのウェブコントロールのように)ビューとモデルを結びつけるために使われ、FacesServlet
はJSFコンポーネントツリー*を使ってすべての作業を行います。
http://www.oracle.com/technetwork/java/faq-137059.html をご覧ください。
JSPテクノロジーは、Java テクノロジーファミリーの一つです。JSPページは JSPページはサーブレットにコンパイルされます。 JavaBeansコンポーネント(ビーンズ)や エンタプライズJavaBeansコンポーネント (エンタープライズBeans)を呼び出して 処理を行います。このように、JSP の技術が重要な役割を果たします。 JSP技術は、Webベースのアプリケーションの拡張性の高い JSP技術は、Webベースのアプリケーションのための
参照 https://jcp.org/en/introduction/faq
A: JavaServer Faces技術は、ユーザーインターフェースを構築するためのフレームワークです。 ウェブアプリケーションのユーザーインターフェースを構築するフレームワーク Webアプリケーションのユーザーインターフェースを構築するフレームワークです。JavaServer Faces
技術には以下のものがあります。
JavaServer Faces技術には、次のようなものがあります。 コンポーネントを表現し、その状態を管理する。 イベントおよび入力検証の処理 ページナビゲーションの定義 国際化とアクセシビリティのサポート アクセシビリティをサポートします。
JavaServer Pages(JSP)カスタムタグ を表現するためのライブラリです。 JavaServer Pages (JSP) のカスタムタグライブラリです。
JSPはサーブレットの一種です。
JSFは、JSPで使用できるタグのセットです。