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:

VMC Architektura
VMC Archidijagram strukture

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

Dizajn JSP aplikacije

Nakon što kliknete na Pošalji, izlaz je prikazan kao ispod

Dizajn JSP aplikacije

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.