【Webシステム開発講座#10】MVCモデルとは?実際のフォルダ構成とプログラム修正で理解しよう!

Webシステム開発講座へようこそ!
前回の記事でJDBCのインストールとDB接続処理を行いました。本記事では、取得したデータを 実際に活用する方法 を解説し、システム開発で代表的なMVCモデル についても学習していきます。

本記事で学べること

✅ MVCモデルの理解:MVCモデルについての基本的な理解。
✅ DB接続コマンド:DBからデータを取得し、システム内で活用する方法

この記事は次のような方におすすめです:

💡 Webシステム開発を勉強したい方

💡 初めてデータベースを操作する方

💡 JavaとMySQLの連携に興味がある方

事前準備:

この記事を進める前に、前回の記事で解説した「JDBCでWebシステムとMySQLを接続しよう」を確認してください。まだの方は、以下からご覧いただけます:

1. MVCモデルについて

MVC(Model-View-Controller)モデル(以下、MVC)は、ソフトウェア設計の基本的なデザインパターンの1つ であり、Webシステム開発で頻繁に使われる構造です。
アプリケーションを次の3つの役割に分けることで、コードの分離・整理がしやすくなり、保守性・拡張性の向上につながります。

MVCの構成要素

役割 説明
Model(モデル) データやビジネスロジックを管理する部分。DBとやり取りし、データの取得・更新を行う。
View(ビュー) ユーザーに表示される画面部分。HTMLやJSPなどで構成される。
Controller(コントローラー) ユーザーのリクエストを受け取り、適切な処理(Modelを呼び出し、結果をViewへ渡す)を行う。

レストランでたとえると。。。

  • Model(モデル): レストランのキッチン。料理(データ)を準備し、注文を処理。
  • View(ビュー): ダイニングエリア。料理を見やすく、分かりやすく提供。
  • Controller(コントローラー): ウェイター。注文を受けてキッチンに伝え、料理を提供。

MVCを使うメリット

  • 責務が分かれるので、コードが整理される:ビジネスロジック(Model)と表示処理(View)が分離し、コードの見通しが良くなる。
  • 保守性が向上する:例えば、画面デザイン(View)を変更するだけならModelやControllerを触る必要がない。
  • 再利用性が高まる:Modelを共通化すれば、異なるControllerやViewから使い回せる。

2. 実際のプロジェクトの構成

前回作成したログイン機能をMVCモデルに当てはめると、以下のような構成になります。

  • Controller(コントローラー):フォームから送信された ログイン情報を受け取り、Model側に処理を依頼し、ログイン成功・失敗の判断を行う
  • Model(モデル):JDBCを使用して データベースと接続し、ユーザー情報を取得・認証 する。
  • View(ビュー):ユーザーが ログイン情報を入力・送信 する画面を提供し、ログイン失敗時にはエラーメッセージを表示する。

このようにMVCに沿って構成することで、コードの見通しがよくなり、保守や拡張がしやすくなります。次章では、このMVCモデルに沿ったフォルダ構成を紹介していきます。

3. MVCモデルを実装する前に:Eclipse内のフォルダ整理

MVCモデルを実装する前に、まずはEclipseのプロジェクト構成を整理しましょう。
フォルダの役割ごとに「models」「controllers」「views」というパッケージを作成し、それぞれのファイルを移動して整理します。

フォルダの追加

Eclipse上では、新しいJavaパッケージとして modelscontrollersviews を作成し、それぞれにファイルを振り分けます。
パッケージの作成は、クラス追加時にパッケージ名として上記を入力することで可能です。

注意

Eclipseの「フォルダ追加」機能から直接作成すると、Eclipseの設定が壊れる場合があります。
安全のため、クラス追加 → パッケージ名入力 という手順で追加しましょう。
不安な場合は、新規プロジェクトとして作り直すのも一つの方法です。

📌 各フォルダの役割
  • controllers/ → サーブレットを配置(リクエストを処理)
  • models/ → データを扱うクラス(JavaBeans や DAO など)を配置
  • views/ → JSPファイルを配置(画面表示)

何故「model」ではなく「models」なのか?

フォルダ名が「model」でも「models」でも、プログラム動作には影響しません。
ですが、実際のプロジェクトではモデルやコントローラーが複数存在することが一般的です。

SpringやLaravel、Railsなどの有名なフレームワークでも、複数形(models, controllers, views)を使うのが主流です。
そのため、今回はそれに倣ってすべて複数形で統一します。

🔹単数形と複数形の選び方

  • 単数形(controller, model, view):概念として1つのまとまりと考える場合
  • 複数形(controllers, models, views):実際に複数のクラスやファイルが入るため整理しやすい

どちらを採用するかは、チームの方針や個人の好み に応じて決めるとよいでしょう。

4. 過去プログラムの修正

フォルダ構成を変更すると、パッケージ名やファイルパスが変わるため、
過去のプログラムはそのままでは確実に動かなくなります。
ここでは、Javaファイル・JSPファイルの記述を、新しい構成に合わせて修正していきます。

login.jspの修正

JSPファイルの <form>action 属性で、controllers フォルダ内のサーブレットを呼び出すように修正します。

<label><b> Ver.1.0.0 </b></label>
    <form action="${pageContext.request.contextPath}/controllers/LoginServlet" method="POST">
    <div class="form-group">
        <label for="username">ユーザー名</label>
        <input type="text" id="username" name="username">
    </div>
LoginServlet.javaの修正

サーブレット内の画面遷移処理も、views フォルダに配置したJSPを読み込むようにパスを変更します。

response.sendRedirect(request.getContextPath() + "/MenuServlet");

RequestDispatcher dispatcher = request.getRequestDispatcher("/views/menu.jsp");
dispatcher.forward(request, response);

menu.jspviews/ フォルダに移動しているため、
/views/menu.jsp と記述する必要があります。

5. 課題


今回の講義では、LoginServlet.javalogin.jsp のみ修正を行いました。
しかし、他のJSPファイルやサーブレットも フォルダ構成の変更に伴ってリンクやパスが変わっている ため、
すべてのファイルを新しい構成に合わせて修正 する必要があります。

以下の作業を行い、すべてのプログラムが正しく動作するかを確認してください。

  • 修正が必要なJSPファイルやサーブレットの洗い出し
  • action属性やRequestDispatcherなど、パスの記述を新しい構成に合わせて修正
  • Eclipse上でビルドエラーがないかを確認
  • 実際にブラウザで動作確認を実施

不具合が出た場合は、ファイルの配置場所と参照パス(contextPath や dispatcher のパス指定)を丁寧に見直すことがポイントです。


MVCデザインパターンについて説明しましたが、いかがでしたでしょうか。今回の記事で完全に理解できなくても作業していくうちに段々とわかっていくので、わからなくなると定期的に読み返して頂ければ幸いです
次回はこの構成をベースにデータベース接続を実装していきます!!

「記事の更新を待てない!」「すぐに動画で学びたい!」という方には、Udemyでの学習がおすすめです。
私自身も利用して、基礎から応用までしっかりと学べたので、非常に助かりました!ぜひ一度チェックしてみてください。
多彩な講座から自分に合った講座を探そう!

Udemyについての詳しい記事はこちらをご参照ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。