(実装例なし)新人研修で辛い思いをしている僕たちへ送る,JavaによるMVCモデル2を適用したwebアプリの構成


注意事項

  • 初心者向けです
    • というか私が初心者です
  • 実装は載せていません
    • 概念的なものです
  • アプリを作るに際して「今自分がどこを作っているのか?」という疑問を解決するため書きました
  • クラスの関係性については諸事情により改善できませんごめんなさい

概要

  • MVCモデル2の紹介
  • Servlet+JSP+Java Beansを用いた実装を想定した,webアプリの構成の解説

MVCモデル2

現在ではMVCモデルと呼ばれることが多い.デザインパターンの一種で,UIを持つアプリケーションを実装する際に用いることができる.MVCはModel View Controllerの略で,データの保持やビジネスロジックをModel,表示をView,それらを繋ぐ役をControllerが担っている.

MVCモデル2を適用したwebアプリ

今回はServletとJSPを用いるため,ControllerとViewはそれぞれServletとJSPに対応する.

また,ServletとJSP間のデータの受け渡しはBeanを介して行う.BeanはデータクラスでありModelに含まれる.今後,アプリの目的のためにデータの操作を行うクラスはBusinessLogicと表す.

webアプリであるためユーザが存在する.また,ユーザはwebブラウザを介してアプリにアクセスする.ユーザからのリクエストはServletが受け,入力によって適切な処理をModelに命じる.Servletは,リクエストに対するレスポンスを返せる状態になったことを確認して,JSPに制御を渡す.JSPは渡されたデータをHTMLに整形する.

ここで「適切な処理」とは,ユーザからの入力の妥当性確認も含まれる.ServletはFormBeanに妥当性確認を依頼し,ユーザからの入力が適切であれば,目的の操作(図のビジネスロジック部分)を行う.

例えば,足し算アプリを作る場合は以下の手順で進む

  • ServletはユーザからGETリクエストを受ける
  • ユーザは,数値ボックス2つと送信ボタンがついたHTMLをServletから受け取る
  • 数値ボックス2つはそれぞれ,ユーザから数字を入力される…はず
  • ServletはユーザからPOSTリクエストを受ける
  • FormBeanは,Servletからユーザのリクエストを受け取り,妥当性(空でないことなど)をチェックする
    • 妥当でない場合,エラーメッセージを表示するHTMLが,JSPによって生成される
  • 妥当である場合,2つの数字を足す機能がServletから呼ばれ,送信用のBeanが返される
  • 2つの数字の和はBeanとしてServletからJSPに送られる
  • JSPで和を表示するHTMLが生成される

上記はDBを使わない例だったが,DBを使う場合はDAOを使用する.DAOはData Access Objectの略で,アプリからDBへの操作をラップする.DAOによりDBから抽出されたデータはDTO(Data Transfer Object)に格納されて渡される.DTOはデータ型であり,Java Beansの規約に従う.