(Javaでの)MVCモデル メモ
(Java での)MVCモデル メモ
環境
MVCモデルの考え方
MVCモデルとは
「3つの役割」でアプリケーションを設計する設計思想。
-
M Model モデル
-
V View ビュー
-
C Controller コントローラ
MVCモデルで Webアプリケーションが作られているパターンが多い。
MVCモデルの概要
-
ユーザがリクエスト
-
コントローラ(C)が 、リクエストを受け取り、 モデル(M)で処理するよう指示する。、
また、ビュー(V)に表示するするよう指示する。
-
モデル(M)でデータを処理する。
-
ビュー(V)が、 モデル(M)から処理した表示したいデータを参照して、 レスポンスを返す。
ざっくりまとめると以下のようなる。
-
Model:処理
-
View:見た目
-
Controlle:窓口
MVCモデルのメリット
-
システムの構成がわかりやすくなる。
-
システムの保守がしやすくなる。
システムの構成がわかりやすくなっているので、 、どこを直せばいいかわかりやすくなる。
-
Webデザイナー、プログラムの役割分担が明確になる。
JSPではJavaのプログラムをかけるが、書きすぎると 境界がわかりづらくなる。MVCモデルで設計することで多少解消できる。
MVCモデルの簡単な歴史
もともとはSmalltalkというプログラム言語の設計に用いる考え方だった。 MVC1やSmalltalk MVC とも呼ばれる。
特徴:
モデルで処理される結果がリアルタイムに反映される。
モデルを起点に動作していた。
従来のMVCの問題・課題
実際のWebアプリケーションでは、 HTTPで動作しているので、 モデル起点でなくリクエスト起点で処理を開始した方が良い課題があった。
MVC2の登場
Smalltalk以外の言語でも動作し、また、 Webアプリケーション用に役割が見直されたものが、 MVC2(またはMVCモデル2)と呼ばれいている。
現在、一般的に「MVCモデル」といわれるのは、これにあたる。
参考:http://www.s-arcana.co.jp/tech/2011/07/mvc-mvc2.html
MVCの役割
C コントローラ
リクエストの受付窓口兼みんなの司令塔。 リクエストを受付け、モデル及びビューに指示を出す。
Model モデル
ビューに表示するデータの番人。 基本的にDBから取得したデータを預かっておく、
モデルがDBにアクセスし処理する。 DBそのものがモデルではない。
View ビュー
画面表示の仕上げ担当。 モデルの情報を参照して結果を表示する。
MVCモデルでWebアプリケーションを作ったサンプル
サンプルの構成
-
最初にリクエストがあったら、 Controllerが受け取ってViewに指示して、 「ID入力画面」をレスポンスとして返す。
-
ユーザーがIDを入力したリクエストがあったら、 Controllerが受け取って、ModelにID照会を指示する。
-
該当IDであれば、ControllerがViewに指示して、 「正常処理の画面」をレスポンスとしてユーザーへ返す。
該当IDでなければ、Viewに指示して、 「失敗処理の画面」をレスポンスとして返す。
-
Controller
-
ControllerServlet.java
-
-
View
-
ID入力画面:
request.jsp
- 正常処理の画面:
userResponse.jsp
- 失敗処理の画面:
userError.jsp
-
-
Model
-
UserBean.java
-
-
ModelとControllerの橋渡し:
IdProcessing.java
コード
実行結果
まず、/View/userRequest.jsp
にアクセス。
正しいIDを入力した場合。
違うIDを入力した場合。
もし、「cannot be resolved to a type」というエラーが出た場合
主な理由2つ。
参考:cannot be resolved to a typeへの対処法
Webアプリケーションの例外処理
以下の様なTomcat(サーバー)側のエラーが出る場合がある。
サーバーの種類など様々な情報が表示され、 特定されてしまうので危険。
例外が発生した場合、 エラーページに移動させるように処理を組み混んでおくよう意識する。
- 例:
-
IDが一致しない場合
-
サーバー処理でエラーが発生した場合
まとめ
-
MVCモデルは、「モデル」、「ビュー」、「コントローラ」 の役割分担でWebアプリケーションを設計する思想
-
MVCモデルの思想に基づいて、 プログラムの構成を確認。
-
MVCモデルは、 設計思想であり、基本を守って無理に当てはめる必要はない。
参考リンク
関連リンク