MVC JSP-s (Architektuur)
⚡ Nutikas kokkuvõte
JSP-s MVC jagab rakendusega seotud probleemid mudeli, vaate ja kontrolleri kihtideks, kus JSP renderdab vaate, Servlet toimib kontrollerina ja JavaBeanid kapseldavad mudeli puhaste, testitavate ja hooldatavate veebirakenduste jaoks.
Mis on MVC?
MVC on lühend sõnadest Model-View-Controller. See on tarkvara disainimuster, mis jagab rakenduse kolmeks omavahel ühendatud kihiks: äriloogika, esitlus ja andmed. MVC-s:
- M tähistab mudelit
- V tähistab vaadet
- C tähistab kontrollerit
MVC on süstemaatiline viis rakenduste loomiseks, kus voog algab vaatekihilt. Kasutaja esitab päringu, see töödeldakse kontrollerikihis ja saadetakse mudelikihile andmete sisestamiseks või toomiseks. Seejärel tagastab mudel edu või ebaõnnestumise vastuse, mille vaade kasutajale kuvab. MVC arhitektuuri diagramm on esitatud allpool:

Miks kasutada MVC-d? ArchiJSP-s olev struktuur?
Enne hüpetping Kui süveneda MVC JSP-s toimimisse, on kasulik mõista, miks arendajad seda mustrit kasutavad. Äriloogika, andmebaasikõnede ja HTML-i segamine ühel JSP-lehel tekitab kiiresti hooldamatu spagettikoodi. MVC lahendab selle, andes igale probleemile oma kihi:
- Code muutub lihtsamini loetavaks, kuna igal failil on üks vastutusala.
- Meeskonnad saavad vaate, kontrolleri ja mudeli kallal paralleelselt töötada ilma konfliktideta.
- Ühiktestid on suunatud otse mudelile, ilma JSP renderdamist puudutamata.
- Vahetamaping JSON-vastuse või mõne muu mallimootori JSP-vaate loomine on lihtne.
Kuidas MVC JSP-s töötab
JSP-põhises MVC-rakenduses seob iga kiht kindla kihi. Java tehnoloogia. JSP-failid renderdavad vaadet, Servlet toimib kontrollerina ja JavaMudelit kapseldavad komponendid (beanid). Allolevates osades selgitatakse iga kihi kohustusi.
Mudelikiht
- See on andmekiht, mis sisaldab süsteemi äriloogikat.
- See koosneb kõigist rakenduse andmetest.
- See näitab ka rakenduse olekut.
- See on ehitatud JavaOad või POJO-d, mis ühenduvad andmebaas.
- Kontroller suhtleb mudeliga andmete toomiseks ja edastab need vaatekihile.
- Mudel loob ühenduse andmebaasiga ja salvestab sinna andmed.
Vaata kihti
- See on rakenduse esitluskiht.
- See koosneb HTML-ist, JSP-st, CSS-ist ja JavaSkript.
- Tavaliselt kuvab see rakenduse kasutajaliidese.
- See kuvab kontrollerilt hangitud andmeid, mis omakorda hangivad andmeid mudeli kihi klassidest.
- Vaatekiht renderdab andmeid rakenduse kasutajaliideses ilma äriloogikat sisaldamata.
Kontrolleri kiht
- See toimib vaate ja mudeli vahelise liidesena.
- See pealtkuulab kõik päringud, mis tulevad vaatekihilt.
- See võtab vastu vaatekihilt päringuid, töötleb neid ja teostab päringu valideerimise.
- Päring edastatakse andmetöötluseks mudelikihile. Kui päring on töödeldud, saadab mudel tulemuse koos vajaliku teabega tagasi kontrollerile, mille seejärel vaade kuvab.
MVC eelised Architektuur
MVC eelised on järgmised:
- Lihtne hooldada
- Lihtne pikendada
- Lihtne testida
- Navigatsiooni juhtimine on tsentraliseeritud
- Kihtide vaheline lahtine sidumine muudab refaktoreerimise turvalisemaks
- Mitme meeskonnaliikme paralleelne arendus on võimalik
Näide JSP-rakenduse kujundamisest MVC-ga Architektuur
Selles näites näitame, kuidas kasutada MVC arhitektuuri JSP-rakenduses.
- Võtame näiteks vormi, millel on kaks muutujat, „e-post” ja „parool”, mis esindavad meie vaatekihti.
- Kui kasutaja sisestab e-posti aadressi ja parooli ning klõpsab nuppu „Esita“, edastatakse toiming Mvc_servletile, kus edastatakse e-posti aadress ja parool.
- Mvc_servlet on kontrolleri kiht. Siin Mvc_servletis saadetakse päring oa-objektile, mis toimib mudeli kihina.
- E-posti aadressi ja parooli väärtused määratakse oasse ja salvestatakse edaspidiseks kasutamiseks.
- Beanist hangitakse väärtus ja see kuvatakse vaatekihis.
Mvc_example.jsp (Vaade)
<%@ 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>
Koodi selgitus:
Vaata kihti:
Code Rida 10-15: Siin võtame vormi, millel on parameetritena kaks välja, „email” ja „password”, ning see päring tuleb edastada kontrollerile Mvc_servlet.java, mis edastatakse atribuudis action. HTTP-meetod, mille kaudu see edastatakse, on POST.
Mvc_servlet.java (kontroller)
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); } }
Koodi selgitus:
Kontrolleri kiht:
Code Rida 14: Mvc_servlet laiendab HttpServleti.
Code Rida 26: Kuna kasutatav meetod on POST, siseneb päring Servleti doPost meetodisse, mis töötleb päringu ja salvestab selle bean-objekti nimega testobj.
Code Rida 34: Päringuobjekti abil määrame atribuudi „gurubean”, millele omistatakse testobj väärtus.
Code Rida 35: Siin kasutame RequestDispatcher objekti, et edastada eduteade failile mvc_success.jsp.
TestBean.java (mudel)
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"; }
Koodi selgitus:
Mudelikiht:
Code Rida 7-17: See sisaldab e-posti aadressi ja parooli hankijaid ja määrajaid, mis on TestBean klassi liikmed.
Code Rida 19-20: See määratleb ubade klassi liikmete e-posti aadressi ja parooli, mille tüüp on String.
Mvc_success.jsp (tulemuste vaade)
<%@ 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>
Koodi selgitus:
Code Rida 12: Atribuudi hankimiseks kasutame Servleti doPost meetodis määratud päringuobjekti.
Code Rida 13: Prindime tervitussõnumi ja e-posti aadressi, mis on salvestatud oa-objekti.
Väljund
Kui käivitate ülaltoodud koodi, saate järgmise väljundi:
Kui avate faili mvc_example.jsp, kuvatakse vorm e-posti aadressi ja parooli väljadega ning nupuga „Esita”.
Kui olete vormile sisestanud e-posti aadressi ja parooli ning klõpsanud nuppu „Esita”:
Pärast nupule „Esita” klõpsamist kuvatakse väljund järgmiselt:
Kui sisestate ekraanile e-posti aadressi ja parooli ning klõpsate nuppu „Esita“, salvestatakse andmed TestBeani. TestBeanist laaditakse need järgmisel ekraanile, et kuvada eduteade. JSP mängib andmete esitamise ja vaate pakkumise rolli, samal ajal kui Servlet toimib kontrollerina ja JavaBean toimib mudelina. Peamine äriloogika asub mudeli kihis.



