Čo je to MVC?
MVC je architektúra, ktorá oddeľuje obchodnú logiku, prezentáciu a údaje. V MVC
- M znamená Model
- V znamená View
- C znamená ovládač.
MVC je systematický spôsob použitia aplikácie, kde tok začína z vrstvy zobrazenia, kde sa požiadavka vyvolá a spracuje vo vrstve radiča a odošle sa do vrstvy modelu na vloženie údajov a získanie správy o úspechu alebo zlyhaní.
Vrstva modelu:
- Toto je dátová vrstva, ktorá pozostáva z obchodnej logiky systému.
- Skladá sa zo všetkých údajov aplikácie
- Predstavuje tiež stav aplikácie.
- Skladá sa z tried, ktoré majú pripojenie k databáze.
- Kontrolér sa spojí s modelom a načíta dáta a odošle ich do zobrazovacej vrstvy.
- Model sa tiež spojí s databázou a uloží údaje do databázy, ktorá je k nej pripojená.
Zobraziť vrstvu:
- Toto je prezentačná vrstva.
- Skladá sa z HTML, JSP atď.
- Normálne predstavuje používateľské rozhranie aplikácie.
- Používa sa na zobrazenie údajov načítaných z radiča, ktoré zase načítajú údaje z tried modelových vrstiev.
- Táto vrstva zobrazenia zobrazuje údaje o používateľskom rozhraní aplikácie.
Vrstva radiča:
- Funguje ako rozhranie medzi zobrazením a modelom.
- Zachytáva všetky požiadavky, ktoré prichádzajú z vrstvy zobrazenia.
- Prijíma požiadavky z vrstvy zobrazenia a spracuje ich a vykoná potrebné overenie požiadavky.
- Tieto požiadavky sa ďalej odosielajú do modelovej vrstvy na spracovanie údajov a po spracovaní žiadosti sa odošlú späť do kontrolóra s požadovanými informáciami a zodpovedajúcim spôsobom sa zobrazia v zobrazení.
Schéma je znázornená nižšie:
Výhody MVC sú:
- Ľahko sa udržuje
- Ľahko sa rozširuje
- Ľahko testovateľné
- Ovládanie navigácie je centralizované
Ukážka architektúry MVC
V tomto príklade si ukážeme, ako používať architektúru MVC v JSP.
- Berieme si príklad formulára s dvoma premennými „email“ a „heslo“, čo je naša vrstva zobrazenia.
- Akonáhle používateľ zadá e-mail a heslo a klikne na tlačidlo odoslať, potom sa akcia odošle do mvc_servlet, kde sa odošle e-mail a heslo.
- Tento mvc_servlet je riadiaca vrstva. Tu v mvc_servlet sa požiadavka odošle do objektu bean, ktorý funguje ako modelová vrstva.
- Hodnoty e-mailu a hesla sa nastavia do fazule a uložia sa na ďalšie účely.
- Z fazule sa hodnota načíta a zobrazí vo vrstve zobrazenia.
Mvc_example.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Príklad MVC Guru
Vysvetlenie kódu:
Zobraziť vrstvu:
Riadok kódu 10-15: Tu používame formulár, ktorý má dve polia ako parameter „e-mail“ a „heslo“, a túto požiadavku je potrebné postúpiť kontrolóru Mvc_servlet.java, ktorý sa odovzdáva v akcii. Metóda, cez ktorú sa používa je odovzdaný je metóda POST.
Mvc_servlet.java
balíček 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;/ *** Trieda implementácie servletu Mvc_servlet* /verejná trieda Mvc_servlet rozširuje HttpServlet {súkromná statická konečná dlhá serialVersionUID = 1L;/ *** @ pozri HttpServlet # HttpServlet ()* /public Mvc_servlet () {Super();// TODO Automaticky generovaný útržok konštruktora}protected void doPost (požiadavka HttpServletRequest, odpoveď HttpServletResponse) vyvolá ServletException, IOException {// TODO Automaticky generovaný pahýl metódyReťazec email = request.getParameter ("email");Reťazec heslo = request.getParameter ("heslo");TestBean testobj = nový TestBean ();testobj.setEmail (e-mail);testobj.setPassword (heslo);request.setAttribute ("gurubean", testobj);RequestDispatcher rd = request.getRequestDispatcher ("mvc_success.jsp");rd.predať (požiadavka, odpoveď);}}
Vysvetlenie kódu:
Ovládacia vrstva
Riadok kódu 14: mvc_servlet rozširuje HttpServlet.
Riadok kódu 26: Pretože použitá metóda je POST, požiadavka preto prichádza do metódy doPost servletu, ktorá spracuje požiadavky a uloží ich do objektu bean ako testobj.
Riadok kódu 34: Pomocou objektu požiadavky nastavujeme atribút ako gurubean, ktorému je priradená hodnota testobj.
Riadok kódu 35: Tu používame objekt dispečera požiadaviek na odovzdanie správy o úspechu mvc_success.jsp
TestBean.java
balíček demotest;import java.io.Serializovateľný;verejná trieda TestBean implementuje Serializable {verejný reťazec getEmail () {spätný e-mail;}public void setEmail (reťazcový e-mail) {this.email = e-mail;}public String getPassword () {návratové heslo;}public void setPassword (heslo reťazca) {this.password = heslo;}private String email = "null";private String password = "null";}
Vysvetlenie kódu:
Vrstva modelu:
Riadok kódu 7-17: Obsahuje získavajúcich a nastavujúcich e-mail a heslo, ktorí sú členmi triedy Test Bean
Riadok kódu 19-20: Definuje e-mail a heslo člena typu reťazca v triede fazule.
Mvc_success.jsp
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "demotest.TestBean"%>Úspech guru <%TestBean testguru = (TestBean) request.getAttribute ("gurubean");out.print ("Vitajte" + testguru.getEmail ());%>
Vysvetlenie kódu:
Riadok kódu 12: atribút dostávame pomocou objektu request, ktorý bol nastavený v metóde doPost servletu.
Riadok kódu 13: Tlačíme uvítaciu správu a ID e-mailu, ktoré boli uložené v objekte fazule
Výkon:
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
Po kliknutí na mvc_example.jsp získate formulár s e-mailom a heslom pomocou tlačidla odoslať.
Po zadaní e-mailu a hesla do formulára a následnom kliknutí na odoslanie
Po kliknutí na odoslanie sa výstup zobrazí nižšie
Výkon:
Keď na obrazovke zadáte e-mail a heslo a kliknete na tlačidlo Odoslať, podrobnosti sa uložia do TestBeanu a z TestBeanu sa načítajú na ďalšej obrazovke, aby sa zobrazila správa o úspechu.
Zhrnutie:
V tomto článku sme sa dozvedeli o architektúre MVC tj Model View Controller.
JSP zohráva úlohu prezentácie údajov a správcu. Jedná sa o rozhranie medzi modelom a zobrazením, zatiaľ čo sa model pripája k radiču aj k databáze. Hlavná obchodná logika je prítomná vo vrstve modelu.