MVC i JSP (Architecture)
Hva er MVC?
MVC er en arkitektur som skiller forretningslogikk, presentasjon og data. I MVC,
- M står for Model
- V står for View
- C står for kontroller.
MVC er en systematisk måte å bruke applikasjonen der flyten starter fra visningslaget, hvor forespørselen heves og behandles i kontrollerlaget og sendes til modelllaget for å sette inn data og få tilbake melding om suksess eller fiasko. MVC ArchiTecture diagram er representert nedenfor:

Modelllag
- Dette er datalaget som består av forretningslogikken til systemet.
- Den består av alle dataene til applikasjonen
- Den representerer også tilstanden til søknaden.
- Den består av klasser som har tilknytning til database.
- Kontrolleren kobler til modell og henter dataene og sender til visningslaget.
- Modellen kobles også til databasen og lagrer dataene i en database som er koblet til den.
Vis lag
- Dette er et presentasjonslag.
- Den består av HTML, JSP, etc. inn i den.
- Den presenterer vanligvis brukergrensesnittet til applikasjonen.
- Den brukes til å vise dataene som hentes fra kontrolleren som igjen henter data fra modelllagklasser.
- Dette visningslaget viser dataene på brukergrensesnittet til applikasjonen.
Kontrollerlag
- Den fungerer som et grensesnitt mellom View og Model.
- Den fanger opp alle forespørslene som kommer fra visningslaget.
- Den mottar forespørslene fra visningslaget og behandler forespørslene og utfører den nødvendige valideringen for forespørselen.
- Denne forespørselen sendes videre til modelllaget for databehandling, og når forespørselen er behandlet, sender den tilbake til kontrolleren med nødvendig informasjon og vises deretter av visningen.
Fordeler med MVC Architecture
Fordelene med MVC er:
- Lett å vedlikeholde
- Enkel å forlenge
- Lett å teste
- Navigasjonskontrollen er sentralisert
Eksempel på JSP-applikasjonsdesign med MVC Architecture
I dette eksemplet skal vi vise hvordan du bruker MVC-arkitektur i JSP.
- Vi tar eksemplet med et skjema med to variabler "e-post" og "passord", som er visningslaget vårt.
- Når brukeren skriver inn e-post og passord og klikker på send, sendes handlingen i mvc_servlet der e-post og passord sendes.
- Denne mvc_servlet er kontrollerlag. Her i mvc_servlet sendes forespørselen til bønneobjektet som fungerer som modelllag.
- E-post- og passordverdiene settes inn i bønnen og lagres for videre formål.
- Fra bønnen hentes verdien og vises i visningslaget.
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>
Forklaring av koden:
Vis lag:
Kodelinje 10-15: Her tar vi et skjema som har to felt som parameter "e-post" og "passord", og denne forespørselen må videresendes til en kontroller Mvc_servlet.java, som sendes i aksjon. Metoden den sendes gjennom er 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); } }
Forklaring av koden:
Kontrollerlag
Kodelinje 14:mvc_servlet utvider HttpServlet.
Kodelinje 26: Siden metoden som brukes er POST, kommer forespørselen inn i en doPost-metode for servleten som behandler forespørslene og lagrer i bønneobjektet som testobj.
Kodelinje 34: Ved å bruke request-objektet setter vi attributtet som gurubean som tildeles verdien av testobj.
Kodelinje 35: Her bruker vi request dispatcher-objektet for å sende suksessmeldingen til 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"; }
Forklaring av koden:
Modelllag:
Kodelinje 7-17: Den inneholder får og setter av e-post og passord som er medlemmer av Test Bean-klassen
Kodelinje 19-20: Den definerer medlemmenes e-post og passord for strengtype i bønneklassen.
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>
Forklaring av koden:
Kodelinje 12: vi får attributtet ved å bruke request-objektet som er satt i doPost-metoden til servleten.
Kodelinje 13: Vi skriver ut velkomstmeldingen og e-post-IDen som er lagret i bønneobjektet
Utgang:
Når du kjører koden ovenfor, får du følgende utgang:
Når du klikker på mvc_example.jsp får du opp skjemaet med e-post og passord med send-knappen.
Når du har skrevet inn e-post og passord til skjemaet og deretter klikker du på send
Etter å ha klikket på send inn vises resultatet som nedenfor
Utgang:
Når du skriver inn e-post og passord på skjermen og klikker på send deretter, lagres detaljene i TestBean og fra TestBean hentes de på neste skjerm for å få suksessmeldingen.
Sammendrag
I denne artikkelen har vi lært om MVC, dvs. Model View Controller-arkitekturen.
JSP spiller rollen som presentasjon av dataene og kontrolløren. Det er et grensesnitt mellom modell og visning mens modellen kobles både til kontrolleren så vel som databasen. Hovedforretningslogikken er til stede i modelllaget.