MVC in JSP (ArchiStruktur)

⚡ Intelligente Zusammenfassung

Das MVC-Modell in JSP trennt die Anwendungsbelange in die Schichten Model, View und Controller, wobei JSP die View rendert, ein Servlet als Controller fungiert und JavaBeans kapseln das Modell für saubere, testbare und wartbare Webanwendungen.

  • 🧱 Trennung von Bedenken: Das Model enthält Daten und Geschäftslogik, die View rendert die Benutzeroberfläche und der Controller leitet Anfragen zwischen ihnen weiter.
  • 📐 JSP-Rolle: JSP-Seiten rendern dynamisches Markup für die View-Schicht, während ein Servlet die Anfrageverarbeitung auf der Controller-Schicht übernimmt.
  • 🔀 Anfrageablauf: Der Browser sendet ein Formular ab, das Servlet validiert die Eingaben und füllt eine Tabelle aus. JavaBean, dann wird die Steuerung zur Antwort an eine JSP-Ansicht weitergeleitet.
  • Wartungsfreundlichkeit setzt sich durch: Die MVC-Architektur in JSP vereinfacht die Wartung, Erweiterung, das Unit-Testing und die zentrale Navigation von Webanwendungen.
  • 🧪 Arbeitsbeispiel: Ein Anmeldeformular sendet eine Anfrage an Mvc_servlet, das E-Mail-Adresse und Passwort in TestBean speichert und diese dann an mvc_success.jsp weiterleitet.
  • 🤖 KI-Modernisierung: KI-Assistenten helfen jetzt bei der Umstrukturierung von älterem JSP-MVC-Code in Spring MVC und generieren Controller, DTOs und Tests bei Bedarf.

MVC in JSP (ArchiStruktur)

Was ist MVC?

MVC steht für Model-View-Controller. Es handelt sich um ein Software-Designmuster, das eine Anwendung in drei miteinander verbundene Schichten unterteilt: Geschäftslogik, Präsentation und Daten. Im MVC-Modell gilt Folgendes:

  • M steht für Model
  • V steht für View (Ansicht)
  • C steht für Controller

MVC ist ein systematischer Ansatz zum Erstellen von Anwendungen, bei dem der Datenfluss in der View-Schicht beginnt. Die Anfrage wird vom Benutzer gestellt, in der Controller-Schicht verarbeitet und an die Model-Schicht gesendet, um Daten einzufügen oder abzurufen. Das Model gibt dann eine Erfolgs- oder Fehlermeldung zurück, die die View dem Benutzer anzeigt. Das MVC-Architekturdiagramm ist unten dargestellt:

MVC Architektur
MVC ArchiStrukturdiagramm

Warum MVC verwenden? ArchiArchitektur in JSP?

Vor dem Sprungping Um zu verstehen, wie MVC in JSP funktioniert, ist es hilfreich zu wissen, warum Entwickler dieses Muster bevorzugen. Die Vermischung von Geschäftslogik, Datenbankabfragen und HTML innerhalb einer einzigen JSP-Seite führt schnell zu unübersichtlichem, schwer wartbarem Spaghetti-Code. MVC behebt dieses Problem, indem es jedem Bereich eine eigene Schicht zuweist.

  • Code wird leichter lesbar, da jede Datei nur eine einzige Aufgabe hat.
  • Teams können parallel an View, Controller und Model arbeiten, ohne dass es zu Konflikten kommt.
  • Die Unit-Tests zielen direkt auf das Modell ab, ohne die JSP-Darstellung zu beeinflussen.
  • Tauschping Eine JSP-Ansicht für eine JSON-Antwort oder eine andere Template-Engine ist unkompliziert.

Wie MVC in JSP funktioniert

In einer JSP-basierten MVC-Anwendung wird jede Schicht einer bestimmten Ebene zugeordnet. Java Technologie. JSP-Dateien rendern die Ansicht, ein Servlet fungiert als Controller, und JavaBeans kapseln das Modell. In den folgenden Abschnitten werden die Verantwortlichkeiten der einzelnen Schichten erläutert.

Modellebene

  • Dies ist die Datenschicht, die die Geschäftslogik des Systems enthält.
  • Es umfasst alle Daten der Anwendung.
  • Es stellt auch den Status der Anwendung dar.
  • Es besteht aus JavaBohnen oder POJOs, die sich mit dem/der/den Datenbank.
  • Der Controller kommuniziert mit dem Model, um Daten abzurufen und leitet diese an die View-Schicht weiter.
  • Das Modell stellt eine Verbindung zur Datenbank her und speichert Daten darin.

Ebene anzeigen

  • Dies ist die Präsentationsschicht der Anwendung.
  • Es besteht aus HTML, JSP, CSS und JavaSkript.
  • Normalerweise wird die Benutzeroberfläche der Anwendung angezeigt.
  • Es zeigt die Daten an, die vom Controller abgerufen werden, welcher wiederum Daten aus den Klassen der Modellschicht abruft.
  • Die View-Schicht rendert Daten auf der Benutzeroberfläche der Anwendung, ohne Geschäftslogik zu enthalten.

Controller-Ebene

  • Es fungiert als Schnittstelle zwischen Ansicht und Modell.
  • Es fängt alle Anfragen ab, die von der View-Schicht kommen.
  • Es empfängt die Anfragen von der View-Schicht, verarbeitet sie und führt eine Validierung der Anfrage durch.
  • Die Anfrage wird zur Datenverarbeitung an die Modellschicht weitergeleitet. Nach der Verarbeitung sendet das Modell das Ergebnis mit den benötigten Informationen zurück an den Controller, der es anschließend in der Ansicht anzeigt.

Vorteile von MVC Architektur

Die Vorteile von MVC sind:

  • Pflegeleicht
  • Einfach zu erweitern
  • Einfach zu testen
  • Die Navigationssteuerung ist zentralisiert
  • Eine lose Kopplung zwischen den Schichten macht Refactoring sicherer.
  • Eine parallele Entwicklung durch mehrere Teammitglieder ist möglich.

Beispiel für JSP-Anwendungsdesign mit MVC Architektur

In diesem Beispiel zeigen wir, wie man die MVC-Architektur in einer JSP-Anwendung verwendet.

  • Wir nehmen das Beispiel eines Formulars mit zwei Variablen, „email“ und „password“, die unsere View-Ebene darstellen.
  • Sobald der Benutzer E-Mail-Adresse und Passwort eingegeben und auf „Absenden“ geklickt hat, wird die Aktion an Mvc_servlet weitergeleitet, wo dann E-Mail-Adresse und Passwort übergeben werden.
  • Mvc_servlet ist die Controller-Schicht. Hier in Mvc_servlet wird die Anfrage an das Bean-Objekt gesendet, das als Modellschicht fungiert.
  • Die Werte für E-Mail-Adresse und Passwort werden in der Bean gespeichert und zur späteren Verwendung abgelegt.
  • Aus der Bean wird der Wert abgerufen und in der View-Schicht angezeigt.

Mvc_example.jsp (Ansicht)

<%@ 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>

Erklärung des Codes:

Ebene anzeigen:

Code Zeile 10-15: Hier verwenden wir ein Formular mit den beiden Parameterfeldern „E-Mail“ und „Passwort“. Diese Anfrage wird an den Controller Mvc_servlet.java weitergeleitet, der im Attribut „action“ übergeben wird. Die verwendete HTTP-Methode ist POST.

Mvc_servlet.java (Controller)

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);
	}

}

Erklärung des Codes:

Controller-Schicht:

Code Linie 14: Mvc_servlet erweitert HttpServlet.

Code Linie 26: Da die verwendete Methode POST ist, gelangt die Anfrage in die doPost-Methode des Servlets, welche die Anfrage verarbeitet und sie im Bean-Objekt als testobj speichert.

Code Linie 34: Mithilfe des Anfrageobjekts setzen wir das Attribut „gurubean“, dem der Wert von testobj zugewiesen wird.

Code Linie 35: Hier verwenden wir das RequestDispatcher-Objekt, um die Erfolgsmeldung an mvc_success.jsp weiterzuleiten.

TestBean.java (Modell)

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";


}

Erklärung des Codes:

Modellebene:

Code Zeile 7-17: Es enthält die Getter und Setter für E-Mail und Passwort, die Mitglieder der Klasse TestBean sind.

Code Zeile 19-20: Es definiert die E-Mail-Adresse und das Passwort der Mitglieder vom Typ String in der Bean-Klasse.

Mvc_success.jsp (Ergebnisansicht)

<%@ 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>

Erklärung des Codes:

Code Linie 12: Wir rufen das Attribut mithilfe des Anfrageobjekts ab, das in der doPost-Methode des Servlets festgelegt wurde.

Code Linie 13: Wir geben die Willkommensnachricht und die im Bean-Objekt gespeicherte E-Mail-Adresse aus.

Ausgang

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:

Wenn Sie mvc_example.jsp öffnen, erhalten Sie das Formular mit Feldern für E-Mail-Adresse und Passwort sowie der Schaltfläche „Absenden“.

Sobald Sie Ihre E-Mail-Adresse und Ihr Passwort in das Formular eingegeben und auf „Absenden“ geklickt haben:

JSP-Anwendungsdesign

Nach dem Klicken auf „Absenden“ wird die Ausgabe wie folgt angezeigt:

JSP-Anwendungsdesign

Wenn Sie E-Mail-Adresse und Passwort auf dem Bildschirm eingeben und auf „Absenden“ klicken, werden die Daten in TestBean gespeichert. Aus TestBean werden sie im nächsten Bildschirm abgerufen, um die Erfolgsmeldung anzuzeigen. JSP spielt die Rolle der Datenpräsentation und der Bereitstellung der Ansicht, während das Servlet als Controller und JavaBean dient als Modell. Die eigentliche Geschäftslogik ist in der Modellschicht enthalten.

Häufig gestellte Fragen

MVC in JSP ist ein Entwurfsmuster, das eine Webanwendung in drei Schichten aufteilt: Modell (Daten und Geschäftslogik), Ansicht (JSP-Seiten, die die Benutzeroberfläche darstellen) und Controller (ein Servlet, das Anfragen verarbeitet und Antworten weiterleitet).

JSP gehört primär zur View-Schicht, da es dynamisches HTML für den Benutzer rendert. Im JSP-Modell-2-Muster übernimmt ein Servlet die Controller-Rolle und JavaBohnen übernehmen die Modellrolle, keeping JSP ohne Geschäftslogik.

Modell 1 platziert Geschäftslogik, Datenzugriff und Präsentation direkt in JSP-Seiten. Modell 2 folgt dem MVC-Muster: Ein Servlet fungiert als Controller, JavaBeans bilden das Modell, und JSP-Dateien rendern die Ansicht. Modell 2 ist der empfohlene Ansatz.

MVC verbessert Wartbarkeit, Testbarkeit und Teamproduktivität. Jede Schicht entwickelt sich unabhängig, Geschäftslogik bleibt aus JSP-Dateien heraus, die Navigation ist im Servlet zentralisiert, und Unit-Tests decken das Modell ab, ohne einen Webcontainer zu starten.

Der Browser sendet ein Formular an ein Servlet. Das Servlet validiert die Eingaben und erstellt oder aktualisiert eine Datei. JavaDie Bean wird gespeichert und anschließend als Anfrageattribut übergeben. Danach wird die Steuerung an eine JSP-Seite weitergeleitet, die die Bean liest und die Antwort rendert.

KI-Programmierassistenten analysieren ältere Servlets und JSP-Dateien, z. B.tract eingebettete Geschäftslogik in saubere Dienste, Generierung von Spring MVC-Controllern und DTOs und Produktion JUnit Tests. Dies beschleunigt die Migration von JSP Model 2 zu modernen Frameworks und reduziert den manuellen Aufwand für die Überarbeitung.

KI-Tools erstellen Gerüste für Spring MVC-Controller und generieren eine Anforderungskarte.pingSie schlagen Validierungsannotationen vor, schreiben Thymeleaf-Vorlagen und erstellen Integrationstests. Außerdem erkennen sie Sicherheitsprobleme wie fehlenden CSRF-Schutz oder unsichere Eingabeverarbeitung in Controller-Methoden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: