7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-04-30

注意事項

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

概要

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

MVCモデル2

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

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

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

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

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

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

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

  • 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の規約に従う.
mvc-db.png

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?