[解決済み】JSF、Servlet、JSPの違いは何ですか?
質問
いくつか質問があります。これらは:
- JSPとServletはどのような関係にあるのですか?
- JSPはServletの一種ですか?
- JSPとJSFはどのような関係にあるのですか?
- 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メソッド
など
GET
と
POST
. を設定することができます。
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コンポーネントツリー
を使用してすべての作業を行います。
関連する質問
関連
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] JSP/Servletを使用してサーバーにファイルをアップロードするにはどうすればよいですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド