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版」