1
2

MVCモデルについて

Posted at

MVCモデルについて

WEBアプリについて独学や講義を受けるとMVCモデルについて学ぶと思います。
MVCモデルについてはそれぞれの役割についてまとめます。

  • M(Model):アプリケーションのビジネスロジックを担当。データの更新等を行う
  • V(View):ユーザに表示するビュー。モデルで取得したデータを利用してレンダリングする
  • C(Controller):ユーザの入力を処理し、入力データに基づきモデルを操作し、結果をビューに返却する

MVCモデルについては以下のようなイメージになるかと思います。
MVCモデルイメージ

MVCモデルの動作について

ユーザにはViewを返却することになりますが、コーディングとしていると、コントローラーで返却することになるため、モデルイメージと若干のギャップがあるかと感じると思いますので、具体的にどのような動作になるのか説明したいと思います。

  • ユーザがボタン押下でControllerはリクエストを受領
  • ControllerはModelにアクセスしてデータ取得を行い、Controllerに処理返却
  • ContorllerはModelから取得したデータをViewにバインドし、WEBにHTMLを返却

実際にコーティングを行うと、ViewがクライアントにHTMLを返却するわけではなく、ControllerがView(HTMLテンプレート)に記載されているバインドする変数を準備し、View(HTMLテンプレート)とバインドする変数を返却するフローとなります。

コードイメージについて記載します。
※以下コードについては処理イメージとなります。

View
<!DOCTYPE html>
<html>
<head>
    <title>Form Submission Result</title>
</head>
<body>
    <h1>Submission Result</h1>
    <p>Name: <%= request.getAttribute("name") %></p>
    <p>Email: <%= request.getAttribute("email") %></p>
</body>
</html>
Controller
public class SubmitFormServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        User user = UserDaoImpl.getUserDao();

        request.setAttribute("name", user.name);
        request.setAttribute("email", user.email);
        
        // 結果を表示するJSPにフォワード
        RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
        dispatcher.forward(request, response);
    }
}
Model
public class UserDaoImpl Implemetns UserDao {
    @Override 
    public getUser( int index ) {
        // User情報を取得する
        // User user = get・・・
        return user
    }
}

まとめ

MVCの開発について説明をしました。
コードを見てわかるように、ControllerがModelの取得し、取得結果をViewにバインドすることでHTMLを返却します。
Contollerはリクエストを受け取り、何かしらの処理を行い、Viewにバインドし返却することで、HTMLが表示されます。

記事が参考になれば幸いです。

1
2
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
1
2