MVC v JSP (Architecture)
Co je MVC?
MVC je architektura, která odděluje obchodní logiku, prezentaci a data. V MVC,
- M znamená Model
- V znamená View
- C znamená controller.
MVC je systematický způsob použití aplikace, kde tok začíná z pohledové vrstvy, kde je požadavek vyvolán a zpracován ve vrstvě řadiče a odeslán do modelové vrstvy, aby vložila data a získala zpět zprávu o úspěchu nebo selhání. MVC Architecture diagram je znázorněn níže:

Modelová vrstva
- Jedná se o datovou vrstvu, která se skládá z obchodní logiky systému.
- Skládá se ze všech dat aplikace
- Představuje také stav aplikace.
- Skládá se z tříd, které mají vazbu na databáze.
- Řadič se připojí k modelu a načte data a odešle je do vrstvy zobrazení.
- Model se také propojí s databází a ukládá data do databáze, která je k němu připojena.
Zobrazit vrstvu
- Toto je prezentační vrstva.
- Skládá se z HTML, JSP atd. do něj.
- Obvykle představuje uživatelské rozhraní aplikace.
- Používá se k zobrazení dat, která jsou načítána z řadiče, který zase získává data z tříd modelové vrstvy.
- Tato vrstva zobrazení zobrazuje data o uživatelském rozhraní aplikace.
Vrstva ovladače
- Funguje jako rozhraní mezi pohledem a modelem.
- Zachycuje všechny požadavky, které přicházejí z vrstvy zobrazení.
- Přijímá požadavky od vrstvy zobrazení a zpracovává požadavky a provádí potřebnou validaci požadavku.
- Tyto požadavky se dále zasílají do modelové vrstvy pro zpracování dat a jakmile je požadavek zpracován, odešle se zpět do kontroléru s požadovanými informacemi a podle toho se zobrazí v pohledu.
Výhody MVC Architecture
Výhody MVC jsou:
- Snadno se udržuje
- Snadno se prodlužuje
- Snadno testovatelné
- Ovládání navigace je centralizované
Příklad návrhu aplikace JSP s MVC Architecture
V tomto příkladu si ukážeme, jak používat architekturu MVC v JSP.
- Vezmeme si příklad formuláře se dvěma proměnnými „e-mail“ a „heslo“, což je naše pohledová vrstva.
- Jakmile uživatel zadá e-mail a heslo a klikne na odeslat, akce se předá na mvc_servlet, kam se předá e-mail a heslo.
- Tento mvc_servlet je vrstva řadiče. Zde v mvc_servlet je požadavek odeslán objektu bean, který funguje jako modelová vrstva.
- Hodnoty e-mailu a hesla jsou nastaveny do beanu a uloženy pro další účely.
- Z beanu je hodnota načtena a zobrazena ve vrstvě zobrazení.
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>
Vysvětlení kódu:
Zobrazit vrstvu:
Řádek 10–15 kódu: Zde bereme formulář, který má dvě pole jako parametr „email“ a „heslo“ a tento požadavek je třeba předat kontroléru Mvc_servlet.java, který je předán v akci. Metoda, kterou se předává, je metoda POST.
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); } }
Vysvětlení kódu:
Vrstva ovladače
14. řádek kódu:mvc_servlet rozšiřuje HttpServlet.
26. řádek kódu: Protože se používá metoda POST, požadavek přichází do metody doPost servletu, která zpracovává požadavky a ukládá do objektu bean jako testobj.
34. řádek kódu: Pomocí objektu požadavku nastavujeme atribut jako gurubean, kterému je přiřazena hodnota testobj.
35. řádek kódu: Zde používáme objekt dispečera požadavku k předání zprávy o úspěchu do 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"; }
Vysvětlení kódu:
Modelová vrstva:
Řádek 7–17 kódu: Obsahuje getters a setters e-mailu a hesla, které jsou členy třídy Test Bean
Řádek 19–20 kódu: Definuje e-mail a heslo členů typu string ve třídě bean.
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>
Vysvětlení kódu:
12. řádek kódu: atribut získáváme pomocí objektu request, který byl nastaven v metodě doPost servletu.
13. řádek kódu: Tiskneme uvítací zprávu a e-mailové ID, které byly uloženy v objektu bean
Výstup:
Když spustíte výše uvedený kód, získáte následující výstup:
Když kliknete na mvc_example.jsp, dostanete formulář s e-mailem a heslem s tlačítkem Odeslat.
Po zadání e-mailu a hesla do formuláře a poté klikněte na odeslat
Po kliknutí na odeslat se výstup zobrazí jako níže
Výstup:
Když na obrazovce zadáte e-mail a heslo a kliknete na odeslat, podrobnosti se uloží do TestBean az TestBean se načtou na další obrazovce, aby se zobrazila zpráva o úspěchu.
Shrnutí
V tomto článku jsme se dozvěděli o architektuře MVC, tj. Model View Controller.
JSP hraje roli prezentace údajů a správce. Jedná se o rozhraní mezi modelem a pohledem, zatímco model se připojuje k ovladači i databázi. Hlavní obchodní logika je přítomna ve vrstvě modelu.