フレサーモン難民

備忘録など ほぼ自分向けのまとめ

MVCモデル

MVCモデルとは

アプリケーション開発の考え方。アプリケーションを

モデル:計算処理など、アプリケーションの主たる処理やデータの格納など
ビュー:ユーザーに対しての画面の表示
コントローラ:ユーザーからの要求を受け取り、処理の実行をモデルに依頼し、その結果の表示をビューに依頼する

の3つの要素に分けて開発すること。

サーブレットJSPでのWebアプリ開発にこのMVCモデルを当てはめると

サーブレット:コントローラ。ユーザーからのリクエストを受け取る。
JSPファイル:ビュー。レスポンスをユーザーへ返す。
一般的なJavaのクラス:モデル。処理を担う。

となる。”一般的なJavaのクラス”とは『Webアプリケーションに関するクラスやインタフェース(例えばHttpServletRequestなど)を含んでいない』クラスのこと。

・6月18日追記(個人的メモ):
コントローラで担う処理は、「POSTメソッドにてリクエストからパラメータを取得する」「インスタンスをスコープに保存する」「処理をビューへフォワードする」などといったものであり、インスタンスへのデータ格納のような処理はコントローラでは行わない。データ格納など計算処理はモデルにて行う。

フォワード:処理の転送

MVCモデルでの開発においては、サーブレットクラス(コントローラ)がJSPファイル(ビュー)に処理結果の出力を依頼する必要がある。そのような場合、フォワードを使うと処理をサーブレットクラスからJSPファイルに移すことができる。

フォワードのやり方

フォワードはRequestDispatcherインスタンスのforward()メソッドで行う。

RequestDispatcher dispatcher = 
       request.getRequestDispacher("フォワード先");
dispatcher.forward(request, response);

* javax.servlet.RequestDispatcher をimportしないといけない
JSPファイルへのブラウザ(ユーザー)からの直接リクエストを禁ずる

ビューの役割をもつJSPファイルはユーザーから直接リクエストできないようにしないといけない。なぜならMVCモデルでは、ビューであるJSPファイルを表示させるのはコントローラであるサーブレットクラスであり、ユーザー自身ではないから。また直接JSPファイルをブラウザから表示するとエラーや不具合が発生することがあるらしい。

JSPファイルを直接リクエストできなくするには、WebContent/WEB-INFのフォルダの下に"jsp"というフォルダを作り、ここにJSPファイルを配置する。



参照:「スッキリわかるサーブレット&JSP入門 第2版」