MVC u JSP-u (Architekstura)

โšก Pametni saลพetak

MVC u JSP-u dijeli brigu o aplikaciji na slojeve Model, View i Controller, gdje JSP renderira View, Servlet djeluje kao Controller, a JavaBeani enkapsuliraju Model za ฤiste, testirane i odrลพavave web aplikacije.

  • ๐Ÿงฑ Odvajanje koncerna: Model sadrลพi podatke i poslovnu logiku, View renderira korisniฤko suฤelje, a Controller usmjerava zahtjeve izmeฤ‘u njih.
  • ๐Ÿ“ Uloga JSP-a: JSP stranice prikazuju dinamiฤko oznaฤavanje za sloj View dok Servlet obraฤ‘uje zahtjeve na sloju Controller.
  • ๐Ÿ”€ Tijek zahtjeva: Preglednik ลกalje obrazac, Servlet provjerava unose, popunjava JavaBean, a zatim prosljeฤ‘uje kontrolu JSP pogledu za odgovor.
  • โœ… Odrลพivost pobjeฤ‘uje: MVC arhitektura u JSP-u olakลกava odrลพavanje, proลกirivanje, jediniฤno testiranje i centraliziranu navigaciju web aplikacijama.
  • ๐Ÿงช Radni primjer: Obrazac za prijavu ลกalje se na Mvc_servlet, koji pohranjuje e-poลกtu i lozinku u TestBeanu, a zatim prosljeฤ‘uje na mvc_success.jsp.
  • ๐Ÿค– Modernizacija umjetne inteligencije: AI asistenti sada pomaลพu u refaktoriranju naslijeฤ‘enog JSP MVC koda u Spring MVC, generirajuฤ‡i kontrolere, DTO-e i testove na zahtjev.

MVC u JSP-u (Architekstura)

ล to je MVC?

MVC je kratica za Model-View-Controller. To je obrazac dizajna softvera koji aplikaciju dijeli na tri meฤ‘usobno povezana sloja: poslovnu logiku, prezentaciju i podatke. U MVC-u:

  • M oznaฤava Model
  • V oznaฤava Pogled
  • C kratica za Kontroler

MVC je sustavan naฤin izgradnje aplikacija gdje tok poฤinje na sloju View. Zahtjev pokreฤ‡e korisnik, obraฤ‘uje se u sloju Controller i ลกalje se sloju Model za umetanje ili dohvaฤ‡anje podataka. Model zatim vraฤ‡a odgovor o uspjehu ili neuspjehu koji View prikazuje korisniku. Dijagram MVC arhitekture prikazan je u nastavku:

VMC Architektura
VMC Archidijagram strukture

Zaลกto koristiti MVC Architekstura u JSP-u?

Prije skokaping U uvid u to kako MVC funkcionira u JSP-u, korisno je razumjeti zaลกto programeri usvajaju ovaj obrazac. Mijeลกanje poslovne logike, poziva baze podataka i HTML-a unutar jedne JSP stranice brzo stvara neodrลพiv ลกpageti kod. MVC to rjeลกava tako ลกto svakom aspektu daje vlastiti sloj:

  • Code postaje lakลกe za ฤitanje jer svaka datoteka ima jednu odgovornost.
  • Timovi mogu paralelno raditi na Viewu, Controlleru i Modelu bez sukoba.
  • Jediniฤni testovi ciljaju izravno na Model, bez dodirivanja JSP renderiranja.
  • Razmijenitiping JSP prikaz za JSON odgovor ili neki drugi mehanizam predloลพaka je jednostavan.

Kako MVC funkcionira u JSP-u

U MVC aplikaciji temeljenoj na JSP-u, svaki sloj se mapira na odreฤ‘eni Java tehnologija. JSP datoteke prikazuju prikaz, Servlet djeluje kao kontroler i JavaBeanovi obuhvaฤ‡aju Model. Odjeljci u nastavku objaลกnjavaju odgovornosti svakog sloja.

Sloj modela

  • Ovo je podatkovni sloj koji sadrลพi poslovnu logiku sustava.
  • Sastoji se od svih podataka aplikacije.
  • Takoฤ‘er predstavlja stanje aplikacije.
  • Izgraฤ‘en je od JavaBeanovi ili POJO-i koji se povezuju s baza podataka.
  • Kontroler komunicira s modelom kako bi dohvatio podatke i proslijedio ih sloju View.
  • Model se povezuje s bazom podataka i u nju pohranjuje podatke.

Prikaz sloja

  • Ovo je prezentacijski sloj aplikacije.
  • Sastoji se od HTML-a, JSP-a, CSS-a i JavaSkripta.
  • Obiฤno prikazuje korisniฤko suฤelje aplikacije.
  • Prikazuje podatke koji se dohvaฤ‡aju iz Kontrolera, koji zauzvrat dohvaฤ‡a podatke iz klasa slojeva modela.
  • Sloj View prikazuje podatke na korisniฤkom suฤelju aplikacije bez da sadrลพi poslovnu logiku.

Sloj kontrolera

  • Djeluje kao suฤelje izmeฤ‘u pogleda i modela.
  • Presreฤ‡e sve zahtjeve koji dolaze iz sloja View.
  • Prima zahtjeve iz sloja View, obraฤ‘uje ih i provodi validaciju zahtjeva.
  • Zahtjev se prosljeฤ‘uje sloju Modela na obradu podataka. Nakon ลกto je zahtjev obraฤ‘en, Model ลกalje rezultat natrag Kontroleru s potrebnim informacijama, koje View zatim prikazuje.

Prednosti MVC-a Architektura

Prednosti MVC-a su:

  • Jednostavan za odrลพavanje
  • Lako se produลพava
  • Jednostavan za testiranje
  • Kontrola navigacije je centralizirana
  • Labava povezanost izmeฤ‘u slojeva ฤini refaktoriranje sigurnijim
  • Moguฤ‡ je paralelni razvoj od strane viลกe ฤlanova tima

Primjer dizajna JSP aplikacije s MVC-om Architektura

U ovom primjeru ฤ‡emo pokazati kako koristiti MVC arhitekturu u JSP aplikaciji.

  • Uzimamo primjer obrasca s dvije varijable, โ€že-poลกtaโ€œ i โ€žlozinkaโ€œ, koje predstavljaju naลก sloj Prikaz.
  • Nakon ลกto korisnik unese e-poลกtu i lozinku te klikne Poลกalji, akcija se prosljeฤ‘uje Mvc_servletu gdje se prosljeฤ‘uju e-poลกta i lozinka.
  • Mvc_servlet je kontrolni sloj. Ovdje u Mvc_servletu, zahtjev se ลกalje objektu beana koji djeluje kao sloj modela.
  • Vrijednosti e-poลกte i lozinke postavljaju se u bean i pohranjuju za daljnju upotrebu.
  • Iz beana se vrijednost dohvaฤ‡a i prikazuje u sloju View.

Mvc_example.jsp (Prikaz)

<%@ 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:

Code Redak 10-15: Ovdje uzimamo obrazac koji ima dva polja kao parametre, โ€že-poลกtaโ€œ i โ€žlozinkaโ€œ, a ovaj zahtjev treba proslijediti kontroleru, Mvc_servlet.java, koji se prosljeฤ‘uje u atributu akcije. HTTP metoda kroz koju se prosljeฤ‘uje je POST.

Mvc_servlet.java (Kontroler)

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:

Code Redak 14: Mvc_servlet proลกiruje HttpServlet.

Code Redak 26: Buduฤ‡i da se koristi POST metoda, zahtjev ulazi u doPost metodu Servleta, koja obraฤ‘uje zahtjev i sprema ga u bean objekt kao testobj.

Code Redak 34: Koristeฤ‡i objekt zahtjeva, postavljamo atribut โ€žgurubeanโ€œ kojem je dodijeljena vrijednost testobj.

Code Redak 35: Ovdje koristimo objekt RequestDispatcher za prosljeฤ‘ivanje poruke o uspjehu na mvc_success.jsp.

TestBean.java (Model)

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:

Code Redak 7-17: Sadrลพi funkcije za dohvaฤ‡anje i postavljanje e-poลกte i lozinke koje su ฤlanovi klase TestBean.

Code Redak 19-20: Definira e-poลกtu i lozinku ฤlanova tipa String u klasi beana.

Mvc_success.jsp (Prikaz rezultata)

<%@ 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:

Code Redak 12: Atribut dohvaฤ‡amo pomoฤ‡u objekta zahtjeva koji je postavljen u metodi doPost Servleta.

Code Redak 13: Ispisujemo poruku dobrodoลกlice i adresu e-poลกte koja je spremljena u bean objektu.

Izlaz

Kada izvrลกite gornji kod, dobit ฤ‡ete sljedeฤ‡i izlaz:

Kada otvorite mvc_example.jsp, dobit ฤ‡ete obrazac s poljima za e-poลกtu i lozinku te gumbom Poลกalji.

Nakon ลกto u obrazac unesete e-poลกtu i lozinku i kliknete Poลกalji:

Dizajn JSP aplikacije

Nakon klika na Poลกalji, izlaz je prikazan kao u nastavku:

Dizajn JSP aplikacije

Kada unesete e-poลกtu i lozinku na ekranu i kliknete Poลกalji, podaci se spremaju u TestBean. Iz TestBeana se dohvaฤ‡aju na sljedeฤ‡em ekranu kako bi se prikazala poruka o uspjehu. JSP igra ulogu predstavljanja podataka i pruลพanja prikaza (View), dok Servlet djeluje kao kontroler i JavaBean sluลพi kao Model. Glavna poslovna logika sadrลพana je u sloju Modela.

Pitanja i odgovori

MVC u JSP-u je dizajnerski obrazac koji web aplikaciju dijeli na tri sloja: Model (podaci i poslovna logika), View (JSP stranice koje prikazuju korisniฤko suฤelje) i Controller (Servlet koji obraฤ‘uje zahtjeve i usmjerava odgovore).

JSP prvenstveno pripada sloju View jer korisniku prikazuje dinamiฤki HTML. U JSP Model 2 obrascu, Servlet obraฤ‘uje ulogu Controllera i JavaBeani obavljaju ulogu modela, keeping JSP osloboฤ‘en poslovne logike.

Model 1 smjeลกta poslovnu logiku, pristup podacima i prezentaciju izravno unutar JSP stranica. Model 2 slijedi MVC: Servlet djeluje kao Kontroler, JavaBeanovi tvore Model, a JSP datoteke prikazuju Prikaz. Model 2 je preporuฤeni pristup.

MVC poboljลกava odrลพavanje, testiranje i produktivnost tima. Svaki sloj se razvija neovisno, poslovna logika ostaje izvan JSP datoteka, navigacija je centralizirana u Servletu, a jediniฤni testovi pokrivaju Model bez pokretanja web kontejnera.

Preglednik ลกalje obrazac Servletu. Servlet provjerava ulaze, stvara ili aลพurira JavaBean i pohranjuje ga kao atribut zahtjeva. Zatim prosljeฤ‘uje kontrolu JSP stranici koja ฤita bean i prikazuje odgovor.

AI asistenti za kodiranje analiziraju naslijeฤ‘ene Servlete i JSP datoteke, npr.tracugraditi poslovnu logiku u ฤiste usluge, generirati Spring MVC kontrolere i DTO-ove te proizvesti JUnit testovi. To ubrzava migraciju s JSP Modela 2 na moderne okvire uz manje ruฤnog prepisivanja.

AI alati za scaffolding Spring MVC kontroleri, generiranje mape zahtjevapings, predlaลพu anotacije za validaciju, piลกu Thymeleaf predloลกke i izraฤ‘uju integracijske testove. Takoฤ‘er otkrivaju sigurnosne probleme poput nedostajuฤ‡e CSRF zaลกtite ili nesigurnog rukovanja ulazom u metodama kontrolera.

Saลพmite ovu objavu uz: