Javaを使ったWebアプリケーションの学習をして出てくる概念が、「MVCモデル」です。
これは、「Javaプログラムを、役割ごとに部品化しましょう」という考え方です。
それでは、詳しく説明していきます!
MVCモデルとは?
MVCモデルとは、Webサーバ内のプログラムを、M(Model)、V(View)、C(Controller)の役割に分ける設計手法です。
M,V,Cは、それぞれどのような役割を果たすのでしょうか。
これら独立したM,V,Cが連携することで、Webアプリケーションが成り立ちます。
では、なぜわざわざ独立させる必要があるのでしょうか。次に、MVCモデルを採用するメリットについて説明します。
MVCモデルのメリット
MVCモデルを採用せずにWebアプリケーションを作るとどうなるでしょうか。
Webアプリケーションのプログラムには、
・クライアント(Webブラウザ)からリクエストを受け取る。
・リクエストに対応するデータを、データベースから取得する。
・データをhtmlファイルに変換して、クライアントへ返す。
etc...
などの処理があります。これらの処理が、何回も行われるわけです。
MVCモデルで処理のプログラムを部品化せず、1つのプログラム内に記述しようとすると、同じような処理を何度も記述しなければなりません。これには、以下のような欠点があります。
・例えば、データベースの構造が変更されたときに、データベースアクセスの処理を全て書き換えなければならない。(保守性が悪い)
・他のアプリケーションでもこのプログラムを使いたいときに、必要ないものが含まれていることがある。
(再利用性が悪い)
つまり、MVCモデルに則って設計すると次のようなメリットが得られるのです。
● 保守性の向上
データベースの構造に変更があった際、M(Model)のみを変更すればよい。
● 再利用性の向上
M,V,Cに分離させることで、他のシステムからも必要な機能(M or V or C)を呼び出すことができる。
WebアプリケーションのMVCモデル構成
Webアプリケーションは、大きく分けてクライアントであるWebブラウザと、サーバであるWebサーバと、データベースに分かれます。
そのWebアプリケーションを、MVCモデルで書いたものが次の図です。
C(Controller)とV(View)が担当します。
プレゼンテーション層は、クライアントとサーバとのやり取りを制御します。クライアントとあるWebブラウザからのリクエストを受け付けて、適切な業務処理を呼び出します。業務処理の結果に応じた画面を、Webブラウザに返します。
M(Model)が担当します。
業務に必要な処理を実行します。
M(Model)が担当します。
データベースへアクセスします。