MVC in JSP (Archistructuur)
⚡ Slimme samenvatting
MVC in JSP scheidt de verschillende aspecten van een applicatie in de lagen Model, View en Controller. JSP rendert de View, een Servlet fungeert als Controller en JavaBeans encapsuleren het Model voor schone, testbare en onderhoudbare webapplicaties.

Wat is MVC?
MVC staat voor Model-View-Controller. Het is een softwareontwerppatroon dat een applicatie opdeelt in drie onderling verbonden lagen: bedrijfslogica, presentatie en data. In MVC:
- M staat voor Model
- V staat voor View
- C staat voor Controller
MVC is een systematische manier om applicaties te bouwen waarbij de flow begint in de View-laag. De gebruiker doet een verzoek, dit wordt verwerkt in de Controller-laag en vervolgens naar de Model-laag gestuurd om gegevens in te voegen of op te halen. Het Model retourneert dan een succes- of foutreactie die de View aan de gebruiker toont. Het MVC-architectuurdiagram is hieronder weergegeven:

Waarom MVC gebruiken? Archistructuur in JSP?
Voordat je springtping Om te begrijpen hoe MVC werkt in JSP, is het handig om te weten waarom ontwikkelaars dit patroon gebruiken. Het combineren van bedrijfslogica, databaseaanroepen en HTML in één enkele JSP-pagina leidt al snel tot onbeheersbare spaghetti-code. MVC lost dit op door elk onderdeel een eigen laag te geven:
- Code Het wordt gemakkelijker te lezen omdat elk bestand één enkele functie heeft.
- Teams kunnen parallel aan de View, Controller en Model werken zonder conflicten.
- Unit tests richten zich direct op het Model, zonder de JSP-rendering aan te raken.
- Ruilenping Een JSP-weergave voor een JSON-antwoord of een andere sjabloonengine is eenvoudig.
Hoe MVC werkt in JSP
In een op JSP gebaseerde MVC-applicatie komt elke laag overeen met een specifiek element. Java technologie. JSP-bestanden renderen de weergave, een Servlet fungeert als controller, en JavaBeans omsluiten het model. De onderstaande secties leggen de verantwoordelijkheden van elke laag uit.
Modellaag
- Dit is de datalaag die de bedrijfslogica van het systeem bevat.
- Het bevat alle gegevens van de applicatie.
- Het vertegenwoordigt ook de status van de applicatie.
- Het is gebouwd van JavaBeans of POJO's die verbinding maken met de databank.
- De controller communiceert met het model om gegevens op te halen en stuurt deze door naar de weergavelaag.
- Het model maakt verbinding met de database en slaat gegevens daarin op.
Laag bekijken
- Dit is de presentatielaag van de applicatie.
- Het bestaat uit HTML, JSP, CSS en JavaScript.
- Het toont normaal gesproken de gebruikersinterface van de applicatie.
- Het toont de gegevens die worden opgehaald uit de Controller, die op zijn beurt gegevens ophaalt uit de klassen van de Model-laag.
- De View-laag geeft gegevens weer op de gebruikersinterface van de applicatie, zonder bedrijfslogica te bevatten.
Controllerlaag
- Het fungeert als een interface tussen View en Model.
- Het onderschept alle verzoeken die afkomstig zijn van de weergavelaag.
- Het ontvangt de verzoeken van de View-laag, verwerkt ze en voert een validatie uit op het verzoek.
- Het verzoek wordt doorgestuurd naar de Model-laag voor gegevensverwerking. Zodra het verzoek is verwerkt, stuurt het Model het resultaat met de benodigde informatie terug naar de Controller, die het vervolgens weergeeft.
Voordelen van MVC Architectuur
De voordelen van MVC zijn:
- Gemakkelijk te onderhouden
- Makkelijk te verlengen
- Makkelijk te testen
- De navigatiecontrole is gecentraliseerd
- Losse koppeling tussen lagen maakt refactoring veiliger.
- Parallelle ontwikkeling door meerdere teamleden is mogelijk.
Voorbeeld van JSP-applicatieontwerp met MVC Architectuur
In dit voorbeeld laten we zien hoe je de MVC-architectuur in een JSP-applicatie kunt gebruiken.
- We nemen als voorbeeld een formulier met twee variabelen, "e-mail" en "wachtwoord", die onze weergavelaag vertegenwoordigen.
- Zodra de gebruiker het e-mailadres en wachtwoord invoert en op 'Verzenden' klikt, wordt de actie doorgegeven aan Mvc_servlet, waar het e-mailadres en wachtwoord worden doorgegeven.
- Mvc_servlet is de controllerlaag. In Mvc_servlet wordt het verzoek naar het bean-object gestuurd, dat fungeert als de modellaag.
- De e-mail- en wachtwoordwaarden worden in de bean ingesteld en opgeslagen voor later gebruik.
- De waarde wordt uit de bean opgehaald en in de View-laag weergegeven.
Mvc_example.jsp (Weergave)
<%@ 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>
Uitleg van de code:
Bekijk laag:
Code Lijn 10-15: Hier nemen we een formulier met twee parameters, "e-mail" en "wachtwoord", en dit verzoek moet worden doorgestuurd naar een controller, Mvc_servlet.java, die is doorgegeven in het action-attribuut. De HTTP-methode waarmee het wordt verzonden is 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); } }
Uitleg van de code:
Controllerlaag:
Code Regel 14: Mvc_servlet is een uitbreiding van HttpServlet.
Code Regel 26: Omdat de gebruikte methode POST is, komt het verzoek terecht in de doPost-methode van de Servlet, die het verzoek verwerkt en opslaat in het bean-object als testobj.
Code Regel 34: Met behulp van het request-object stellen we het attribuut "gurubean" in, waaraan de waarde testobj wordt toegekend.
Code Regel 35: Hier gebruiken we het RequestDispatcher-object om het succesbericht door te sturen naar mvc_success.jsp.
TestBean.java (Model)
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"; }
Uitleg van de code:
Modellaag:
Code Lijn 7-17: Het bevat de getters en setters voor e-mail en wachtwoord, die leden zijn van de TestBean-klasse.
Code Lijn 19-20: Het definieert het e-mailadres en wachtwoord van de leden als String-type in de bean-klasse.
Mvc_success.jsp (Resultaatweergave)
<%@ 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>
Uitleg van de code:
Code Regel 12: We halen het attribuut op met behulp van het request-object dat is ingesteld in de doPost-methode van de Servlet.
Code Regel 13: We printen het welkomstbericht en het e-mailadres dat in het bean-object is opgeslagen.
uitgang
Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:
Wanneer je mvc_example.jsp opent, krijg je een formulier te zien met velden voor e-mail en wachtwoord en een verzendknop.
Nadat je je e-mailadres en wachtwoord in het formulier hebt ingevoerd en op Verzenden hebt geklikt:
Na het klikken op 'Verzenden' wordt de uitvoer als volgt weergegeven:
Wanneer u uw e-mailadres en wachtwoord op het scherm invoert en op 'Verzenden' klikt, worden de gegevens opgeslagen in TestBean. Vanuit TestBean worden ze op het volgende scherm opgehaald om het succesbericht weer te geven. JSP speelt de rol van het presenteren van de data en het leveren van de weergave, terwijl de Servlet fungeert als de controller en de JavaBean fungeert als het model. De belangrijkste bedrijfslogica bevindt zich in de model-laag.


