JSPにおけるMVC(Archi構造)

MVCとは何ですか?

MVCはビジネスロジック、プレゼンテーション、データを分離するアーキテクチャです。MVCでは、

  • Mはモデルの略です
  • V はビューの略です
  • Cはコントローラーの略です。

MVC はアプリケーションを体系的に使用する方法で、フローがビュー層から始まり、リクエストがコントローラー層で発生して処理され、モデル層に送信されてデータが挿入され、成功または失敗のメッセージが返されます。 MVC Archi構造図を以下に示します。

MVC Archi構造
MVC Archi構造図

モデルレイヤー

  • システムのビジネスロジックを構成するデータ層です。
  • アプリケーションのすべてのデータで構成されます
  • これはアプリケーションの状態も表します。
  • との接続を持つクラスで構成されます。 データベース.
  • コントローラーはモデルに接続し、データを取得してビューレイヤーに送信します。
  • モデルはデータベースにも接続し、接続されているデータベースにデータを保存します。

レイヤーの表示

  • これはプレゼンテーション層です。
  • その中にHTMLやJSPなどを組み込んで構成されています。
  • 通常、アプリケーションの UI が表示されます。
  • これは、コントローラーからフェッチされたデータを表示するために使用され、コントローラーはモデル層クラスからデータをフェッチします。
  • このビューレイヤーはアプリケーションのUI上のデータを表示します。

コントローラ層

  • これは、ビューとモデルの間のインターフェイスとして機能します。
  • ビュー層から送信されるすべてのリクエストをインターセプトします。
  • ビュー層からリクエストを受信し、リクエストを処理して、リクエストに必要な検証を行います。
  • このリクエストは、データ処理のためにモデル レイヤーにさらに送信され、リクエストが処理されると、必要な情報とともにコントローラーに送り返され、それに応じてビューに表示されます。

MVC の利点 Archi構造

MVC の利点は次のとおりです。

  • 維持しやすい
  • 拡張が簡単
  • テストが簡単
  • ナビゲーション制御は一元化されています

MVCを使用したJSPアプリケーションの設計例 Archi構造

この例では、JSP で MVC アーキテクチャを使用する方法を示します。

  • ここでは、ビュー レイヤーである 2 つの変数「email」と「password」を持つフォームを例に説明します。
  • ユーザーが電子メールとパスワードを入力して送信をクリックすると、電子メールとパスワードが渡される mvc_servlet にアクションが渡されます。
  • この mvc_servlet はコントローラー層です。 ここの mvc_servlet では、モデル層として機能する Bean オブジェクトにリクエストが送信されます。
  • 電子メールとパスワードの値は Bean に設定され、今後の目的のために保存されます。
  • Bean から値がフェッチされ、ビュー層に表示されます。

Mvc_example.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>MVC Guru Example</title>
</head>
<body>
<form action="Mvc_servlet" method="POST">
Email: <input type="text" name="email">
<br />
Password: <input type="text" name="password" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

コードの説明:

レイヤーを表示:

コード行 10 ~ 15: ここでは、パラメータ「email」と「password」の 2 つのフィールドを持つフォームを取得しており、このリクエストはアクションに渡されるコントローラ Mvc_servlet.java に転送する必要があります。これが渡されるメソッドは POST メソッドです。

Mvc_servlet.java

package demotest;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Mvc_servlet
 */
public class Mvc_servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Mvc_servlet() {
        super();
        // TODO Auto-generated constructor stub
    }


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String email=request.getParameter("email");  
        String password=request.getParameter("password");
        
        TestBean testobj = new TestBean();
        testobj.setEmail(email);
        testobj.setPassword(password);
        request.setAttribute("gurubean",testobj);
        RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp");  
        rd.forward(request, response); 
	}

}

コードの説明:

コントローラー層

コード行 14:mvc_servlet は HttpServlet を拡張しています。

コード行 26: 使用されるメソッドは POST であるため、リクエストはサーブレットの doPost メソッドに入り、リクエストを処理して bean オブジェクトに testobj として保存されます。

コード行 34: request オブジェクトを使用して、属性を gurubean として設定し、testobj の値を割り当てます。

コード行 35: ここでは、リクエスト ディスパッチャー オブジェクトを使用して成功メッセージを mvc_success.jsp に渡します。

テストビーン.java

package demotest;

import java.io.Serializable;

public class TestBean implements Serializable{
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	private String email="null";
	private String password="null";


}

コードの説明:

モデルレイヤー:

コード行 7 ~ 17: テストBeanクラスのメンバーであるメールとパスワードのゲッターとセッターが含まれています。

コード行 19 ~ 20: Bean クラスで文字列型のメンバーの電子メールとパスワードを定義します。

Mvc_success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page import="demotest.TestBean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Success</title>
</head>
<body>
<%  
TestBean testguru=(TestBean)request.getAttribute("gurubean");  
out.print("Welcome, "+testguru.getEmail());  
%>
</body>
</html>

コードの説明:

コード行 12: サーブレットの doPost メソッドに設定されたリクエストオブジェクトを使用して属性を取得しています。

コード行 13: Beanオブジェクトに保存されているウェルカムメッセージとメールIDを出力しています。

出力:

上記のコードを実行すると、次の出力が得られます。

mvc_example.jsp をクリックすると、送信ボタン付きの電子メールとパスワードのフォームが表示されます。

フォームにメールアドレスとパスワードを入力し、「送信」をクリックします

JSPアプリケーションの設計

送信をクリックすると、出力は以下のように表示されます

JSPアプリケーションの設計

出力:

画面に電子メールとパスワードを入力して送信をクリックすると、詳細が TestBean に保存され、次の画面で TestBean から取得されて成功メッセージが表示されます。

まとめ

この記事では、MVC (モデル ビュー コントローラー アーキテクチャ) について学習しました。

JSP データの提示とコントローラーの役割を果たします。 これはモデルとビューの間のインターフェイスであり、モデルはコントローラーとデータベースの両方に接続します。 主要なビジネス ロジックはモデル層に存在します。