1. ホーム

[解決済み】JSF、Servlet、JSPの違いは何ですか?

2022-03-23 10:05:27

質問

いくつか質問があります。これらは:

  1. JSPとServletはどのような関係にあるのですか?
  2. JSPはServletの一種ですか?
  3. JSPとJSFはどのような関係にあるのですか?
  4. JSFは、ある種の プリビルドUIベースのJSP ASP.NET-MVCのようなものですか?

どのように解決するのですか?

JSP (ジャバサーバーページ)

JSPは Javaビュー技術 サーバマシン上で動作し、クライアント側の言語(HTML、CSS、JavaScriptなど)でテンプレートテキストを記述することができます。JSPは以下をサポートしています。 タグライブズ これは、ページの流れや出力を動的に制御するためのJavaコードの断片に支えられています。よく知られているタグリブは JSTL . また、JSPは 表現言語 これは、バックエンドデータにアクセスするために使用されます(ページ、リクエスト、セッション、アプリケーションスコープで利用可能な属性を介して)。

JSP が初めてリクエストされたとき、あるいは Web アプリが起動したとき、サーブレットコンテナは JSP をコンパイルして HttpServlet を作成し、ウェブアプリのライフタイム中、それを使用します。生成されたソースコードは、サーバーの作業ディレクトリにあります。たとえば トムキャット であり、それは /work ディレクトリに格納されます。JSP リクエストがあると、サーブレットコンテナはコンパイルされた JSP クラスを実行し、生成された出力(通常は HTML/CSS/JS だけ)をネットワーク経由で Web サーバからクライアント側に送り、クライアント側はそれを Web ブラウザで表示します。

サーブレット

サーブレットは Java アプリケーション・プログラミング・インターフェース (API) サーバーマシン上で動作し、クライアントからのリクエストを受け付け、レスポンスを生成/送信します。よく知られた例として HttpServlet をフックするメソッドを提供します。 HTTP を使用したリクエストに対応するために、よく使われる HTTPメソッド など GETPOST . を設定することができます。 HttpServlet で設定可能な、特定の HTTP URL パターンをリッスンするための web.xml で、あるいは最近では Java EE 6 である。 @WebServlet アノテーションを使用します。

サーブレットが最初にリクエストされたとき、またはウェブアプリの起動時に、サーブレットコンテナはそのインスタンスを作成し、ウェブアプリのライフタイム中、メモリに保持します。同じインスタンスは、URLがサーブレットのURLパターンに一致するすべてのリクエストに対して再利用されます。リクエストデータへのアクセスは HttpServletRequest で、レスポンスを HttpServletResponse . のオーバーライドされたメソッドの中では、両方のオブジェクトがメソッドの引数として利用できます。 HttpServlet のような doGet()doPost() .

JSF (JavaServer Faces)

JSFは コンポーネントベースのMVCフレームワーク サーブレット API の上に構築されており、以下の機能を提供します。 コンポーネント のようなJSPや他のJavaベースのビューテクノロジーで使用できるタグリブを介して フェイスレット . Faceletsは、JSPよりもJSFに適しています。つまり、素晴らしい テンプレート機能 例えば コンポジットコンポーネント 一方、JSPでは基本的に <jsp:include> をJSFでテンプレート化する必要があるため、繰り返されるコンポーネント群を単一のコンポーネントに置き換えたい場合、生のJavaコードでカスタムコンポーネントを作成せざるを得ません(これは少し不透明で面倒な作業が多くなります)。 JSF 2.0以降、JSPはビュー技術として非推奨となり、Faceletsが採用されています。

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

備考 : JSPはTaglibsによる優れたテンプレート化能力を持っており、特に( タグファイル というバリアントがあります。 JSPテンプレートとJSFの組み合わせは、欠けているものです。

MVCであるため( モデル・ビュー・コントローラー ) フレームワークでは、JSF は FacesServlet を唯一のリクエスト・レスポンスとして コントローラ . これは、ユーザーの入力を収集し、検証/変換し、モデルオブジェクトに入れ、アクションを起動し、応答をレンダリングするなど、標準的で退屈なHTTPリクエスト/レスポンス作業をすべてあなたの手から引き離します。この方法では、基本的にJSPまたはFacelets (XHTML)ページが 表示 で、JavaBeanクラスは モデル . JSFコンポーネントは、ビューとモデルを結合するために使用され(ASP.NETのWebコントロールが行うようなもの)、また FacesServlet JSFコンポーネントツリー を使用してすべての作業を行います。

関連する質問