MVC u JSP-u (Architekstura)
Što je MVC?
MVC je arhitektura koja odvaja poslovnu logiku, prezentaciju i podatke. U MVC-u,
- M označava model
- V označava pogled
- C je kratica za kontroler.
MVC je sustavan način korištenja aplikacije gdje tok počinje od sloja pogleda, gdje se zahtjev podiže i obrađuje u sloju kontrolera i šalje sloju modela za umetanje podataka i vraćanje poruke o uspjehu ili neuspjehu. MVC Archidijagram strukture predstavljen je u nastavku:
Sloj modela
- Ovo je podatkovni sloj koji se sastoji od poslovne logike sustava.
- Sastoji se od svih podataka aplikacije
- Također predstavlja stanje aplikacije.
- Sastoji se od klasa koje su povezane s baza podataka.
- Kontroler se povezuje s modelom i dohvaća podatke te ih šalje sloju prikaza.
- Model se također povezuje s bazom podataka i pohranjuje podatke u bazu koja je s njim povezana.
Prikaz sloja
- Ovo je prezentacijski sloj.
- Sastoji se od HTML-a, JSP-a itd. u sebi.
- Obično predstavlja korisničko sučelje aplikacije.
- Koristi se za prikaz podataka koji se dohvaćaju iz kontrolera koji zauzvrat dohvaća podatke iz klasa sloja 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 od sloja prikaza i obrađuje zahtjeve te vrši potrebnu provjeru valjanosti zahtjeva.
- Ovi se zahtjevi dalje šalju sloju modela za obradu podataka, a kada se zahtjev obradi, šalje se natrag kontroleru sa potrebnim informacijama i prikazuje ih u skladu s tim u pogledu.
Prednosti MVC-a Architektura
Prednosti MVC-a su:
- Jednostavan za održavanje
- Lako se produžava
- Jednostavan za testiranje
- Kontrola navigacije je centralizirana
Primjer dizajna JSP aplikacije s MVC-om Architektura
U ovom primjeru ćemo pokazati kako koristiti MVC arhitekturu u JSP-u.
- Uzimamo primjer obrasca s dvije varijable "e-mail" i "password" koji je naš sloj prikaza.
- Nakon što korisnik unese e-poštu i lozinku i klikne na pošalji, radnja se prosljeđuje 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 bean objektu koji djeluje kao sloj modela.
- Vrijednosti e-pošte i lozinke postavljaju se u bean i pohranjuju za daljnju svrhu.
- Iz beana, vrijednost se dohvaća i prikazuje u sloju prikaza.
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>
Objašnjenje koda:
Prikaz sloja:
Redak koda 10-15: Ovdje uzimamo obrazac koji ima dva polja kao parametar "email" i "password" i ovaj zahtjev treba proslijediti kontroleru Mvc_servlet.java, koji se prosljeđuje u akciji. Metoda kroz koju se prosljeđuje je POST metoda.
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); } }
Objašnjenje koda:
Sloj kontrolera
Redak koda 14:mvc_servlet proširuje HttpServlet.
Redak koda 26: Kako je korištena metoda POST stoga zahtjev dolazi u doPost metodu servleta koji obrađuje zahtjeve i sprema u bean objekt kao testobj.
Redak koda 34: Korištenjem objekta zahtjeva postavljamo atribut kao gurubean kojem je dodijeljena vrijednost testobj.
Redak koda 35: Ovdje koristimo objekt dispečera zahtjeva za prosljeđivanje poruke o uspjehu u 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"; }
Objašnjenje koda:
Sloj modela:
Redak koda 7-17: Sadrži dobivatelje i postavljače e-pošte i lozinke koji su članovi Test Bean klase
Redak koda 19-20: Definira e-poštu članova i lozinku vrste niza u klasi beana.
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>
Objašnjenje koda:
Redak koda 12: dobivamo atribut pomoću objekta zahtjeva koji je postavljen u doPost metodi servleta.
Redak koda 13: Ispisujemo poruku dobrodošlice i ID e-pošte koji su spremljeni u bean objektu
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 unesete e-mail i lozinku u obrazac, a zatim kliknite na Pošalji
Nakon što kliknete na Pošalji, izlaz je prikazan kao ispod
Izlaz:
Kada unesete e-poštu i zaporku na zaslonu i zatim kliknete na pošalji, detalji se spremaju u TestBean i iz TestBeana se dohvaćaju na sljedećem zaslonu kako bi dobili poruku o uspjehu.
rezime
U ovom smo članku naučili o arhitekturi MVC tj. Model View Controllera.
JSP igra ulogu prezentacije podataka i voditelja obrade. To je sučelje između modela i pogleda dok se model povezuje i s kontrolerom i s bazom podataka. Glavna poslovna logika prisutna je u sloju modela.