だから、ええ、これは私が理解したことです。
- サーブレットは、リクエストのパラメータが何を意味するのかを調べるための単なる仲介者です。これらのパラメータはファイルに与えられ
.java
ます。それは単なる仲介者です .java
ファイルはビジネスロジックを行うモデルです- ビューはプレゼンテーションを行うJSPです
私はそれを正しく理解しましたか?
だから、ええ、これは私が理解したことです。
.java
ます。それは単なる仲介者です.java
ファイルはビジネスロジックを行うモデルです私はそれを正しく理解しましたか?
Model View Controllerパターンは、Javaまたはサーブレットテクノロジーに固有のものではありません。Java以外のMVC実装は多数あり、Javaにはサーブレット以外の実装があります(Swingがその一例です)。
Javaでは、サーブレットベースのMVCを使用する場合、通常はMVCフレームワークが使用されます。ここには、アクションベースとコンポーネントベースの2つの主要なカテゴリがあります。違いは、アクションベースのフレームワークが登録された各URLを個別にリッスンするのに対し、コンポーネントベースのフレームワークはコンポーネントツリーを保持し、サーバー側の状態を維持することです。
アクションベースのフレームワークは、Spring MVC、Struts 1 + 2、Stripes、Playなどです。コンポーネントベースのフレームワークは、Wicket、JSF 1&2、Tapestryなどです。
あなたの図は真実に近づいていますが、いくつかの微妙な誤解があります。
まず、.javaファイルについて話すのは意味がありません。JavaソースファイルはデプロイされたWebアプリケーションとはまったく関係がなく、コンパイルされた.classファイルのみを使用し、JavaVMは多くの異なる言語でプログラムできるため、アプリケーションは.classファイルがJava、Scala、 Groovy、JRuby、Clojure、AspectJ、またはJavaクラスファイル仕様に準拠している限り、その他のもの。
第二に、JSPは長い間Javaサーブレット技術のデフォルトのビュー技術でしたが、それだけではありません。他のテクノロジーには、Facelets、Velocity、Freemarkerなどがあり、専用のビューテクノロジーがなくても、コントローラーからの要求に直接データを書き込むことを妨げるものは何もありません(ただし、これは通常はお勧めできません)。
基本的に、MVCの略は、ビジネスロジック(M)、ビューテクノロジ(V)、および物事を結び付けるコントローラー用の個別のコードが存在するシステムです。適切に編成されたMVCアーキテクチャでは、M部分が非常によくカプセル化されているため、同じビジネスロジックを他のチャネル(Webサービス、ライブラリへの直接アクセスなど)からも実行できます。また、実際のコントローラーロジックを編集することなく、外部からの構成によってビューテクノロジーを切り替えることができるはずです。
Spring MVCフレームワークのドキュメントを読むことをお勧めします。これは、私の知る限り、最も堅牢な(そして使いやすい)MVCフレームワークであり、ツールのサポートも優れています(InteliJIdeaまたはEclipseベースのSpringSourceToolSuite)。
MVCについて話しているときは、3つのレイヤーすべてを互いに分離する必要があります。Webアプリケーションの場合:
1:コントローラーは、ユーザーリクエストを処理し、適切なアクションをフィルタリングして実行し、生成された応答をクライアントに転送する責任があります。
2:モデルは、ビジネスロジック、Bean、およびPojoクラスで構成されます。これはロジックを処理し、何らかの操作を実行し、生成された結果をある種の永続オブジェクトまたはDTOにレンダリングする必要があります。
3:ビューは、GUIといくつかのプレゼンテーションロジックで構成され、バックエンドから分離する必要があります。最終的には、カプセル化された形式の結果、つまりクライアントが実際に必要としているものをクライアントに表示します。
MVCには、MVC1(Push-MVC)とMVC2(Pull-MVC)の2種類があります。
Pull-MVCとPush-MVCは、ビューレイヤーがデータを取得する方法、つまりモデルをレンダリングする方法をよく理解しています。Push-MVCの場合、data(Model)が構築され、リクエストやセッションなどのスコープ変数に配置することで、コントローラーによってビューレイヤーに渡されます。典型的な例は、SpringMVCとStruts1です。一方、Pull-MVCは、コントローラーで通常構築されるモデルデータを共通の場所、つまりアクションで保持し、ビューレイヤーによってレンダリングされます。Struts2はPull-MVCベースのアーキテクチャであり、すべてのデータがValue Stackに格納され、レンダリングのためにビューレイヤーによって取得されます。