JSFはコンポーネントベースのMVCを実装し、Spring MVCはリクエストベースのMVCを実装していると聞きました。これら2つのタイプの正確な技術的な違いは何ですか?.
リクエスト(アクション)ベースのMVCでは、単一のフロントコントローラーサーブレットがリクエストURL /パラメーターに基づいてアクションモデルに委任します。アクションモデルのHttpServletRequest
オブジェクトとHttpServletResponse
オブジェクトを直接操作します。ビジネスアクションを呼び出す前に、リクエストパラメータを収集、変換、検証し、必要に応じてモデル値を更新するコードを自分で作成する必要があります。
コンポーネントベースのMVCでは、単一のフロントコントローラーがリクエストパラメーターを収集、変換、検証し、モデル値自体を更新するため、ビジネスアクションについて自分で心配するだけで済みます。コントローラーが値を収集/変換/検証/更新する方法は、ビューという単一の場所で定義されます。 「プレーンな」HTMLではそれができないため、目標を達成するには特定のマークアップ言語が必要です。 JSF 2.0の場合、それはXML(XHTML)ベースです。 XMLを使用してUIコンポーネントを定義します。UIコンポーネントには、コントローラーがモデル値を収集/変換/検証/更新し、必要なHTML表現を生成/レンダリングする方法に関する情報が含まれています。
この時点で長所と短所は明らかです。要求ベースのMVCフレームワークを使用すると、目標を達成するために自分でより多くの(ボイラープレート)コードを記述する必要があります。ただし、プロセスとHTML/CSS/JS出力をより細かく制御できます。コンポーネントベースのMVCフレームワークを使用すると、自分で多くのコードを記述する必要はありません。ただし、プロセスとHTML/CSS/JS出力の制御が細かくなりません。したがって、標準の説明や実装が提供するものとは異なる方法でbitを実行したい場合は、多くの時間を浪費しますコンポーネントベースのMVCフレームワークで、そのインとアウトに精通していない場合。
Manfred Riem(JSF 2.xチームメンバーおよびex Java EE 8 MVC 1.0仕様リード)は、概要を説明しました Devoxx 14でのMVC 1.0(JSR 371)に関するスピーチ :