MVC i JSP (Architecture)
Vad är MVC?
MVC är en arkitektur som separerar affärslogik, presentation och data. I MVC,
- M står för Model
- V står för View
- C står för controller.
MVC är ett systematiskt sätt att använda applikationen där flödet startar från vylagret, där förfrågan höjs och bearbetas i kontrolllager och skickas till modelllager för att infoga data och få tillbaka meddelandet om framgång eller misslyckande. MVC ArchiTecture diagram representeras nedan:
![MVC Architecture](https://www.guru99.com/images/jsp/022916_0452_JSPMVC1.png)
Modelllager
- Detta är dataskiktet som består av systemets affärslogik.
- Den består av all data i applikationen
- Den representerar också applikationens tillstånd.
- Den består av klasser som har koppling till databas.
- Styrenheten ansluter till modell och hämtar data och skickar till vylagret.
- Modellen ansluter även till databasen och lagrar data i en databas som är kopplad till den.
Visa lager
- Detta är ett presentationslager.
- Den består av HTML, JSP, etc. in i den.
- Den presenterar normalt applikationens användargränssnitt.
- Den används för att visa data som hämtas från styrenheten som i sin tur hämtar data från modelllagerklasser.
- Det här vyskiktet visar data om applikationens användargränssnitt.
Kontrolllager
- Det fungerar som ett gränssnitt mellan View och Model.
- Den fångar upp alla förfrågningar som kommer från vylagret.
- Den tar emot förfrågningarna från vylagret och bearbetar förfrågningarna och gör den nödvändiga valideringen för begäran.
- Dessa förfrågningar skickas vidare till modellskiktet för databearbetning, och när begäran har behandlats, skickas den tillbaka till styrenheten med nödvändig information och visas i enlighet med detta av vyn.
Fördelar med MVC Architecture
Fördelarna med MVC är:
- Lätt att underhålla
- Lätt att förlänga
- Lätt att testa
- Navigationskontrollen är centraliserad
Exempel på JSP Application Design med MVC Architecture
I det här exemplet kommer vi att visa hur man använder MVC-arkitektur i JSP.
- Vi tar exemplet med ett formulär med två variabler "e-post" och "lösenord" som är vårt vylager.
- När användaren anger e-post och lösenord och klickar på skicka skickas åtgärden i mvc_servlet där e-post och lösenord skickas.
- Denna mvc_servlet är kontrolllager. Här i mvc_servlet skickas begäran till bönobjektet som fungerar som modelllager.
- Värdena för e-post och lösenord ställs in i bönan och lagras för ytterligare ändamål.
- Från bönan hämtas värdet och visas i vylagret.
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>
Förklaring av koden:
Visa lager:
Kodrad 10-15: Här tar vi ett formulär som har två fält som parameter "e-post" och "lösenord" och denna begäran måste vidarebefordras till en kontroller Mvc_servlet.java, som skickas i aktion. Metoden genom vilken den skickas är POST-metoden.
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); } }
Förklaring av koden:
Kontrolllager
Kodrad 14:mvc_servlet utökar HttpServlet.
Kodrad 26: Eftersom metoden som används är POST kommer begäran in i en doPost-metod för servleten som bearbetar förfrågningarna och sparar i bönobjektet som testobj.
Kodrad 34: Genom att använda request object ställer vi in attributet som gurubean som tilldelas värdet av testobj.
Kodrad 35: Här använder vi request dispatcher object för att skicka framgångsmeddelandet till mvc_success.jsp
TestBean.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"; }
Förklaring av koden:
Modelllager:
Kodrad 7-17: Den innehåller getters och sättare av e-post och lösenord som är medlemmar i Test Bean-klassen
Kodrad 19-20: Den definierar medlemmarnas e-postadress och lösenord av strängtyp i bönklassen.
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>
Förklaring av koden:
Kodrad 12: vi får attributet med request-objektet som har ställts in i doPost-metoden för servleten.
Kodrad 13: Vi skriver ut välkomstmeddelandet och e-post-ID som har sparats i bönobjektet
Produktion:
När du kör ovanstående kod får du följande utdata:
När du klickar på mvc_example.jsp får du upp formuläret med e-post och lösenord med skicka-knappen.
När du har angett e-postadress och lösenord till formuläret och klicka sedan på skicka
Efter att ha klickat på skicka visas resultatet enligt nedan
Produktion:
När du anger e-post och lösenord på skärmen och klickar på skicka sedan, sparas detaljerna i TestBean och från TestBean hämtas de på nästa skärm för att få framgångsmeddelandet.
Sammanfattning
I den här artikeln har vi lärt oss om MVC, dvs Model View Controller-arkitekturen.
JSP spelar rollen som presentation av data och registeransvarig. Det är ett gränssnitt mellan modell och vy medan modellen ansluter både till styrenheten och databasen. Huvudsaklig affärslogik finns i modellskiktet.