Kaj je MVC?
MVC je arhitektura, ki ločuje poslovno logiko, predstavitev in podatke. V MVC,
- M pomeni Model
- V pomeni Pogled
- C pomeni krmilnik.
MVC je sistematičen način uporabe aplikacije, pri kateri se tok začne iz sloja pogleda, kjer se zahteva dvigne in obdela v plasti krmilnika in pošlje na plast modela, da vstavi podatke in dobi nazaj sporočilo o uspehu ali neuspehu.
Model Layer:
- To je podatkovna plast, ki jo sestavlja poslovna logika sistema.
- Sestavljen je iz vseh podatkov aplikacije
- Predstavlja tudi stanje prijave.
- Sestavljen je iz razredov, ki so povezani s podatkovno bazo.
- Krmilnik se poveže z modelom in pridobi podatke ter jih pošlje v plast pogleda.
- Model se poveže tudi z bazo podatkov in podatke shrani v bazo podatkov, ki je z njo povezana.
Pogled sloja:
- To je predstavitveni sloj.
- Vanj je vključen HTML, JSP itd.
- Običajno predstavlja uporabniški vmesnik aplikacije.
- Uporablja se za prikaz podatkov, ki jih pridobi krmilnik, ta pa podatke iz razredov slojev modela.
- Ta plast pogleda prikazuje podatke o uporabniškem vmesniku aplikacije.
Plast krmilnika:
- Deluje kot vmesnik med pogledom in modelom.
- Prestreže vse zahteve, ki prihajajo iz sloja pogleda.
- Sprejema zahteve iz sloja pogleda in jih obdela in opravi potrebno potrditev zahteve.
- Te zahteve se nato pošljejo v modelni sloj za obdelavo podatkov in ko je zahteva obdelana, pošlje nazaj krmilniku z zahtevanimi informacijami in jih ustrezno prikaže pogled.
Diagram je predstavljen spodaj:
Prednosti MVC so:
- Enostavno vzdrževanje
- Enostavno podaljšanje
- Enostaven za preizkus
- Nadzor navigacije je centraliziran
Primer arhitekture MVC
V tem primeru bomo pokazali, kako uporabljati arhitekturo MVC v JSP.
- Vzemimo primer obrazca z dvema spremenljivkama "email" in "password", ki je naša plast pogleda.
- Ko uporabnik vnese e-pošto in geslo ter klikne na predloži, se dejanje prenese v mvc_servlet, kjer sta posredovana e-pošta in geslo.
- Ta mvc_servlet je plast krmilnika. Tukaj v mvc_servlet se zahteva pošlje objektu zrna, ki deluje kot modelna plast.
- Vrednosti e-pošte in gesla se nastavijo v zrno in shranijo za nadaljnji namen.
- Iz zrna je vrednost pridobljena in prikazana v sloju pogleda.
Mvc_example.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Primer guruja MVC
Pojasnilo kode:
Pogled sloja:
Kodijska vrstica 10-15: Tu imamo obliko, ki ima dva polja kot parameter "e-pošta" in "geslo" in to zahtevo je treba poslati krmilniku Mvc_servlet.java, ki se posreduje v akciji. Metoda, prek katere je posredovana je metoda POST.
Mvc_servlet.java
demotest paketa;import java.io.IOException;uvoz javax.servlet.RequestDispatcher;uvoz javax.servlet.ServletException;uvoz javax.servlet.http.HttpServlet;uvoz javax.servlet.http.HttpServletRequest;uvoz javax.servlet.http.HttpServletResponse;/ *** Razred izvajanja strežniškega programčka Mvc_servlet* /javni razred Mvc_servlet razširja HttpServlet {zasebni statični final long serialVersionUID = 1L;/ *** @ glej HttpServlet # HttpServlet ()* /javni Mvc_servlet () {super ();// TODO Samodejno ustvarjen stub konstruktorja}zaščitena void doPost (zahteva HttpServletRequest, odgovor HttpServletResponse) vrže ServletException, IOException {// TODO Samodejno ustvarjena škrbina metodeString email = request.getParameter ("email");Niz gesla = request.getParameter ("geslo");TestBean testobj = novo TestBean ();testobj.setEmail (e-pošta);testobj.setPassword (geslo);request.setAttribute ("gurubean", testobj);RequestDispatcher rd = request.getRequestDispatcher ("mvc_success.jsp");rd.naprej (zahteva, odgovor);}}
Pojasnilo kode:
Krmilna plast
Vrstica kode 14: mvc_servlet razširja HttpServlet.
Vrstica kode 26: Ker je uporabljena metoda POST, zato zahteva pride v doPost metodo strežniškega programčka, ki obdela zahteve in shrani v objekt fižola kot testobj.
34. vrstica kode: Z uporabo predmeta zahteve nastavimo atribut kot gurubean, ki mu je dodeljena vrednost testobj.
Kodijska vrstica 35: Tu uporabljamo objekt dispečerja zahtev za posredovanje sporočila o uspehu na mvc_success.jsp
TestBean.java
demotest paketa;import java.io.Serializable;javni razred TestBean izvaja Serializable {javni niz getEmail () {vrni e-pošto;}public void setEmail (niz e-pošte) {this.email = email;}javni niz getPassword () {vrni geslo;}public void setPassword (niz gesla) {this.password = geslo;}zasebni niz e-pošte = "null";geslo zasebnega niza = "null";}
Pojasnilo kode:
Model Layer:
Vrstica kode 7-17: Vsebuje pridobivalce in nastavitelje e-pošte in gesla, ki so člani razreda Test Bean
Vrstica kode 19-20: Določa e-poštno sporočilo in geslo članov vrste nizov v razredu fižola.
Mvc_success.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "demotest.TestBean"%>Gurujev uspeh <%TestBean testguru = (TestBean) request.getAttribute ("gurubean");out.print ("Dobrodošli," + testguru.getEmail ());%>
Pojasnilo kode:
Vrstica kode 12: atribut dobimo z uporabo predmeta zahteve, ki je bil nastavljen v metodi doPost strežniškega programčka.
Vrstica kode 13: Tiskamo pozdravno sporočilo in e-poštni ID, ki sta bila shranjena v objektu zrna
Izhod:
Ko zaženete zgornjo kodo, dobite naslednji izhod:
Ko kliknete na mvc_example.jsp, dobite obrazec z e-pošto in geslom z gumbom za oddajo.
Ko v obrazec vnesete e-pošto in geslo in nato kliknete na predloži
Po kliku na oddajo se izpis prikaže kot spodaj
Izhod:
Ko na zaslon vnesete e-pošto in geslo in nato kliknete na »Pošlji«, se podrobnosti shranijo v TestBean, iz TestBean pa na naslednji zaslon, da dobite sporočilo o uspehu.
Povzetek:
V tem članku smo spoznali arhitekturo MVC, tj. Model View Controller.
JSP igra vlogo predstavitve podatkov in krmilnika. Je vmesnik med modelom in pogledom, medtem ko se model poveže tako s krmilnikom kot z bazo podatkov. Glavna poslovna logika je prisotna v sloju modela.