MVC JSP-ben (Architectúra)

⚡ Okos összefoglaló

A JSP-ben található MVC az alkalmazási feladatokat modell, nézet és vezérlő rétegekre osztja, ahol a JSP megjeleníti a nézetet, egy szervlet vezérlőként működik, és JavaA beanek (beans) magukban foglalják a modellt a tiszta, tesztelhető és karbantartható webalkalmazások érdekében.

  • 🧱 A gondok szétválasztása: A Model tárolja az adatokat és az üzleti logikát, a View rendereli a felhasználói felületet, a Controller pedig a kéréseket irányítja közöttük.
  • 📐 JSP szerepkör: A JSP oldalak dinamikus jelölőkódot jelenítenek meg a Nézet réteg számára, míg egy Servlet kezeli a kérések feldolgozását a Vezérlő rétegen.
  • 🔀 Kérelemfolyamat: A böngésző elküld egy űrlapot, a Servlet validálja a bemeneteket, kitölti azokat. JavaBean, majd továbbítja a vezérlést egy JSP nézetnek válaszadásra.
  • A karbantarthatóság előnyei: A JSP MVC architektúrája megkönnyíti a webalkalmazások karbantartását, bővítését, egységtesztelését és központi navigációját.
  • 🧪 Működő példa: Egy bejelentkezési űrlap az Mvc_servletbe kerül, amely az e-mail címet és a jelszót a TestBeanben tárolja, majd továbbítja az mvc_success.jsp fájlba.
  • 🤖 Mesterséges intelligencia modernizációja: A mesterséges intelligencia asszisztensek mostantól segítenek a régi JSP MVC kód Spring MVC-vé való refaktorálásában, igény szerint vezérlőket, DTO-kat és teszteket generálva.

MVC JSP-ben (Architectúra)

Mi az MVC?

Az MVC a Model-View-Controller rövidítése. Ez egy olyan szoftvertervezési minta, amely egy alkalmazást három egymással összefüggő rétegre oszt: üzleti logika, megjelenítés és adatok. Az MVC-ben:

  • M a Modell rövidítése
  • V a View (Kilátás) rövidítése
  • C a Controller rövidítése

Az MVC egy szisztematikus módja az alkalmazások fejlesztésének, ahol a folyamat a View rétegen kezdődik. A kérést a felhasználó küldi el, a Controller réteg dolgozza fel, majd a Model rétegnek küldi el adatok beszúrása vagy lekérése céljából. A Model ezután egy sikerről vagy sikertelenségről tájékoztató választ ad vissza, amelyet a View megjelenít a felhasználó számára. Az MVC architektúradiagramja az alábbiakban látható:

MVC Architectúra
MVC Architecture diagram

Miért érdemes MVC-t használni? ArchiJSP-ben lévő szerkezet?

Ugrás előttping Ha belegondolunk, hogyan működik az MVC JSP-ben, akkor megérthetjük, miért alkalmazzák a fejlesztők ezt a mintát. Az üzleti logika, az adatbázishívások és a HTML keverése egyetlen JSP oldalon belül gyorsan karbantarthatatlan „spagetti” kódot eredményez. Az MVC ezt úgy oldja meg, hogy minden egyes problémának külön réteget ad:

  • Code könnyebben olvashatóvá válik, mivel minden fájlnak egyetlen felelőssége van.
  • A csapatok párhuzamosan dolgozhatnak a Nézet, a Vezérlő és a Modell elemeken ütközések nélkül.
  • Az egységtesztek közvetlenül a modellt célozzák meg, a JSP renderelés érintése nélkül.
  • Csereping Egy JSON válaszhoz vagy egy másik sablonmotorhoz tartozó JSP nézet létrehozása egyszerű.

Hogyan működik az MVC JSP-ben?

Egy JSP-alapú MVC alkalmazásban minden réteg egy adott réteghez tartozik. Java technológia. A JSP fájlok megjelenítik a nézetet, egy szervlet vezérlőként működik, és JavaA modellt a Bean-ek foglalják magukban. Az alábbi szakaszok ismertetik az egyes rétegek feladatait.

Modellréteg

  • Ez az adatréteg tartalmazza a rendszer üzleti logikáját.
  • Az alkalmazás összes adatát tartalmazza.
  • Az alkalmazás állapotát is jelzi.
  • Ebből épült JavaBeanek vagy POJO-k, amelyek kapcsolódnak a adatbázis.
  • A vezérlő kommunikál a modellel az adatok lekérése és továbbítása érdekében a nézet rétegnek.
  • A modell csatlakozik az adatbázishoz, és tárolja benne az adatokat.

Réteg megtekintése

  • Ez az alkalmazás megjelenítési rétege.
  • HTML-ből, JSP-ből, CSS-ből és ... áll. JavaForgatókönyv.
  • Általában az alkalmazás felhasználói felületét jeleníti meg.
  • Megjeleníti a vezérlőtől lekért adatokat, amely viszont a modell rétegosztályaiból kéri le az adatokat.
  • A Nézet réteg az alkalmazás felhasználói felületén jeleníti meg az adatokat üzleti logika nélkül.

Vezérlőréteg

  • Interfészként működik a View és a Model között.
  • Elfogja az összes kérést, ami a Nézet rétegből érkezik.
  • Fogadja a kéréseket a Nézet rétegtől, feldolgozza azokat, és validálja a kéréseket.
  • A kérés továbbításra kerül a modell rétegbe adatfeldolgozás céljából. A kérés feldolgozása után a modell visszaküldi az eredményt a vezérlőnek a szükséges információkkal, amelyeket aztán a nézet megjelenít.

Az MVC előnyei Architectúra

Az MVC előnyei:

  • Könnyen karbantartható
  • Könnyen bővíthető
  • Könnyen tesztelhető
  • A navigációs vezérlés központosított
  • A rétegek közötti laza csatolás biztonságosabbá teszi a refaktorálást
  • Több csapattag párhuzamos fejlesztése lehetséges

Példa JSP-alkalmazástervezésre MVC-vel Architectúra

Ebben a példában bemutatjuk, hogyan használhatjuk az MVC architektúrát egy JSP alkalmazásban.

  • Példaként egy két változóval rendelkező űrlapot vesszük, az „email”-t és a „jelszó”-t, amelyek a Nézet rétegünket képviselik.
  • Miután a felhasználó megadja az e-mail címét és jelszavát, majd a Küldés gombra kattint, a művelet átadódik az Mvc_servletnek, ahol az e-mail cím és a jelszó kerül átadásra.
  • Az Mvc_servlet a vezérlő réteg. Itt az Mvc_servletben a kérés a bean objektumhoz kerül, amely a modell rétegként működik.
  • Az e-mail cím és a jelszó értékei beállítódnak a beanben, és későbbi felhasználás céljából tárolódnak.
  • A beanből kiolvassák az értéket, és megjelenítik a Nézet rétegen.

Mvc_example.jsp (Megtekintés)

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

A kód magyarázata:

Réteg megtekintése:

Code 10-15. sor: Itt egy olyan űrlapot veszünk, amelynek két paramétere van: „email” és „password”, és ezt a kérést továbbítani kell egy vezérlőnek, az Mvc_servlet.java fájlnak, amelyet az action attribútumban adunk át. A HTTP metódus, amelyen keresztül átadásra kerül, a POST.

Mvc_servlet.java (Vezérlő)

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);
	}

}

A kód magyarázata:

Vezérlő réteg:

Code 14 vonal: Az Mvc_servlet kiterjeszti a HttpServlet-et.

Code 26 vonal: Mivel a használt metódus a POST, a kérés a Servlet doPost metódusába kerül, amely feldolgozza a kérést, és testobj néven elmenti a bean objektumba.

Code 34 vonal: A request objektum használatával beállítjuk a „gurubean” attribútumot, amelyhez a testobj értéket rendeljük.

Code 35 vonal: Itt a RequestDispatcher objektumot használjuk a sikerüzenet mvc_success.jsp fájlba történő továbbításához.

TestBean.java (Modell)

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";


}

A kód magyarázata:

Modell réteg:

Code 7-17. sor: Tartalmazza az email és password lekérő és beállító függvényeit, amelyek a TestBean osztály tagjai.

Code 19-20. sor: Ez határozza meg a bean osztály tagjainak String típusú e-mail címét és jelszavát.

Mvc_success.jsp (Eredmény nézet)

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

A kód magyarázata:

Code 12 vonal: Az attribútumot a Servlet doPost metódusában beállított kérésobjektum segítségével kérjük le.

Code 13 vonal: Kinyomtatjuk az üdvözlő üzenetet és az e-mail azonosítót, amelyek a bean objektumban lettek mentve.

teljesítmény

Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:

Amikor megnyitod az mvc_example.jsp fájlt, megjelenik egy űrlap email és jelszó mezőkkel, valamint a Küldés gombbal.

Miután beírta az e-mail címét és jelszavát az űrlapba, majd a Küldés gombra kattintott:

JSP alkalmazástervezés

A Küldés gombra kattintás után a kimenet az alábbiak szerint jelenik meg:

JSP alkalmazástervezés

Amikor megadja az e-mail címét és jelszavát a képernyőn, majd a Küldés gombra kattint, az adatok mentésre kerülnek a TestBeanben. A TestBeanből a következő képernyőn lekéri őket a sikeres műveletről szóló üzenet megjelenítéséhez. JSP az adatok megjelenítését és a nézet biztosítását játssza, míg a Servlet vezérlőként, míg a JavaA Bean szolgál modellként. A fő üzleti logika a modell rétegben található.

GYIK

A JSP-ben használt MVC egy olyan tervezési minta, amely egy webalkalmazást három rétegre oszt: Modell (adatok és üzleti logika), Nézet (JSP oldalak, amelyek felhasználói felületet jelenítenek meg) és Vezérlő (egy szervlet, amely feldolgozza a kéréseket és irányítja a válaszokat).

A JSP elsősorban a Nézet réteghez tartozik, mivel dinamikus HTML-t jelenít meg a felhasználó számára. A JSP 2. modell mintájában egy Servlet kezeli a Vezérlő szerepkört és JavaA Bean-ek kezelik a Model szerepet, keeping Üzleti logikától mentes JSP.

Az 1. modell az üzleti logikát, az adathozzáférést és a megjelenítést közvetlenül a JSP oldalakon belül helyezi el. A 2. modell az MVC-t követi: egy szervlet vezérlőként működik, JavaA Beanek alkotják a Model-t, a JSP fájlok pedig a View-t renderelik. A Model 2 az ajánlott megközelítés.

Az MVC javítja a karbantarthatóságot, a tesztelhetőséget és a csapat termelékenységét. Minden réteg függetlenül fejlődik, az üzleti logika JSP fájlokon kívül marad, a navigáció a Servletben központosított, és az egységtesztek lefedik a modellt anélkül, hogy webes konténert kellene elindítani.

A böngésző elküld egy űrlapot egy szervletnek. A szervlet validálja a bemeneteket, létrehoz vagy frissít egy JavaBean-t, és kérésattribútumként tárolja. Ezután továbbítja a vezérlést egy JSP oldalnak, amely beolvassa a beant és megjeleníti a választ.

A mesterséges intelligenciával működő kódolóasszisztensek elemzik a régi Servlet-eket és JSP-fájlokat, pl.tracbeágyazott üzleti logikát a tiszta szolgáltatásokba, Spring MVC vezérlőket és DTO-kat generál, és előállít JUnit tesztek. Ez felgyorsítja a JSP Model 2-ről a modern keretrendszerekre való átállást, kevesebb manuális átírással.

AI eszközök állványozzák a Spring MVC vezérlőket, kéréstérképet generálnakpings, validációs annotációkat javasolnak, Thymeleaf sablonokat írnak és integrációs teszteket hoznak létre. Emellett biztonsági problémákat is észlelnek, például hiányzó CSRF-védelmet vagy nem biztonságos bemeneti kezelést a vezérlőmetódusokban.

Foglald össze ezt a bejegyzést a következőképpen: