Što je MVC?
MVC je arhitektura koja razdvaja poslovnu logiku, prezentaciju i podatke. U MVC-u,
- M označava Model
- V znači Pogled
- C označava kontroler.
MVC je sistematičan način korištenja aplikacije gdje protok započinje iz sloja prikaza, gdje se zahtjev podiže i obrađuje u sloju kontrolera i šalje na sloj modela radi umetanja podataka i vraćanja poruke o uspjehu ili neuspjehu.
Sloj modela:
- Ovo je podatkovni sloj koji se sastoji od poslovne logike sustava.
- Sastoji se od svih podataka aplikacije
- Također predstavlja stanje prijave.
- Sastoji se od klasa koje imaju vezu s bazom podataka.
- Kontroler se povezuje s modelom i dohvaća podatke i šalje sloju prikaza.
- Model se također povezuje s bazom podataka i pohranjuje podatke u bazu podataka koja je s njom povezana.
Prikaži sloj:
- Ovo je prezentacijski sloj.
- Sastoji se od HTML-a, JSP-a itd.
- Obično predstavlja korisničko sučelje aplikacije.
- Koristi se za prikaz podataka koji se preuzimaju iz kontrolera koji zauzvrat dohvaća podatke iz klasa slojeva modela.
- Ovaj sloj prikaza prikazuje podatke o korisničkom sučelju aplikacije.
Sloj kontrolera:
- Djeluje kao sučelje između pogleda i modela.
- Presreće sve zahtjeve koji dolaze iz sloja prikaza.
- Prima zahtjeve iz sloja pogleda i obrađuje zahtjeve te vrši potrebnu provjeru valjanosti zahtjeva.
- Ovaj se zahtjev dalje šalje na sloj modela za obradu podataka, a nakon što se zahtjev obradi, šalje se natrag upravljaču s potrebnim informacijama i prikazan u skladu s tim u prikazu.
Dijagram je predstavljen u nastavku:
Prednosti MVC-a su:
- Jednostavno za održavanje
- Lako se produžuje
- Jednostavno za testiranje
- Kontrola navigacije centralizirana je
Primjer MVC arhitekture
U ovom ćemo primjeru pokazati kako se koristi MVC arhitektura u JSP-u.
- Uzimamo primjer obrasca s dvije varijable "e-pošta" i "lozinka", što je naš sloj prikaza.
- Jednom kada korisnik unese e-poštu i lozinku i klikne na Pošalji, radnja se prenosi u mvc_servlet gdje se prosljeđuju e-pošta i lozinka.
- Ovaj mvc_servlet je sloj kontrolera. Ovdje u mvc_servlet zahtjev se šalje objektu graha koji djeluje kao sloj modela.
- Vrijednosti e-pošte i lozinke postavljaju se u grah i pohranjuju za daljnju svrhu.
- Iz graha se vrijednost dohvaća i prikazuje u sloju prikaza.
Mvc_primjer.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Primjer MVC gurua
Objašnjenje koda:
Prikaži sloj:
Redak koda 10-15: Ovdje uzimamo obrazac koji ima dva polja kao parametar "e-pošta" i "lozinka" i ovaj zahtjev treba proslijediti kontroloru Mvc_servlet.java, koji se prosljeđuje. Metoda kroz koju se je POST metoda.
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;/ *** Klasa implementacije servleta Mvc_servlet* /javna klasa Mvc_servlet proširuje HttpServlet {privatni statički konačni long serialVersionUID = 1L;/ *** @see HttpServlet # HttpServlet ()* /javni Mvc_servlet () {super();// TODO Automatski generirani klizač konstruktora}zaštićena void doPost (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {// TODO Automatski generirani kvar metodeNiz e-pošte = request.getParameter ("e-pošta");Niz lozinke = request.getParameter ("lozinka");TestBean testobj = novi TestBean ();testobj.setEmail (email);testobj.setPassword (lozinka);request.setAttribute ("gurubean", testobj);RequestDispatcher rd = request.getRequestDispatcher ("mvc_success.jsp");rd.naprijed (zahtjev, odgovor);}}
Objašnjenje koda:
Sloj kontrolera
Redak 14: mvc_servlet proširuje HttpServlet.
Redak koda 26: Kako se koristi metoda POST, stoga zahtjev dolazi u doPost metodu servleta koja obrađuje zahtjeve i sprema se u objekt graha kao testobj.
Linijska oznaka 34: Koristeći objekt zahtjeva postavljamo atribut kao gurubean kojem se dodjeljuje vrijednost testobj.
Redak koda 35: Ovdje koristimo objekt dispečera zahtjeva za prosljeđivanje poruke o uspjehu na mvc_success.jsp
TestBean.java
demotest paketa;import java.io.Serializable;javna klasa TestBean implementira Serializable {javni String getEmail () {vratiti e-mail;}javna void setEmail (niz e-pošte) {this.email = email;}javni niz getPassword () {vratiti lozinku;}public void setPassword (lozinka niza) {this.password = lozinka;}privatni niz e-pošte = "null";privatni niz lozinke = "null";}
Objašnjenje koda:
Sloj modela:
Kodni redak 7-17: Sadrži dostavljače i postavljače e-pošte i lozinke koji su članovi klase Test Bean
Redak koda 19-20: Definira e-poštu i lozinku članova niza u klasi bean.
Mvc_success.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "demotest.TestBean"%>Guruov uspjeh <%TestBean testguru = (TestBean) request.getAttribute ("gurubean");out.print ("Dobrodošli", + testguru.getEmail ());%>
Objašnjenje koda:
Redak koda 12: atribut dobivamo pomoću objekta zahtjeva koji je postavljen u doPost metodi servleta.
Redak 13: Ispisujemo poruku dobrodošlice i ID e-pošte koji su spremljeni u objektu graha
Izlaz:
Kada izvršite gornji kod, dobit ćete sljedeći izlaz:
Kada kliknete na mvc_example.jsp, dobit ćete obrazac s e-poštom i lozinkom s gumbom za slanje.
Nakon što u obrazac unesete e-poštu i lozinku, a zatim kliknite na Pošalji
Nakon klika na pošalji izlaz prikazan je kao ispod
Izlaz:
Kada na ekran unesete e-poštu i lozinku i kliknete na Pošalji, detalji se spremaju u TestBean, a iz TestBeana dohvaćaju se na sljedećem zaslonu kako bi se dobila poruka o uspjehu.
Sažetak:
U ovom smo članku saznali o arhitekturi MVC tj. Model View Controller.
JSP igra ulogu prezentacije podataka i kontrolera. To je sučelje između modela i prikaza, dok se model povezuje s kontrolerom, kao i s bazom podataka. Glavna poslovna logika prisutna je u sloju modela.