JSP modell 2 architektúra

A Java webalkalmazások tervezésében két széles körben használt tervezési modell a modell 1 és a modell 2.[1] A JSP összetett programtervezési minta, ami elkülöníti a megjelenítést a tartalom létrehozásától és manipulálásától, emiatt kapcsolatba hozható a modell-nézet-vezérlő programtervezési mintával. Ugyan maga a modell nem határozza meg az MVC modelljét, számos publikáció ajánl formalizált réteget, ami az MVC-ből a modell kódot tartalmazza.

A modell 2 egyszerűsített diagramja

A modell 2-ben a kliens kérései a vezérlőhöz érkeznek. Ez felelős a tartalom elkészítéséért, rendszerint POJO vagy JavaBean formában. Eldönti, hogy melyik nézetnek küldi tovább, ami elkészíti a megjelenítést, és meg is jeleníti. Ez a modell közepes és nagy alkalmazásokhoz is ajánlott.

Félreértések szerkesztés

Egy gyakori félreértés, hogy a modell 2-höz szükség lenne formalizált MVC mintára. A Java BluePrints azonban arra figyelmeztet, hogy ez az elképzelés téves:[2]

A J2EE Web-tier technológia irodalma gyakran minden magyarázat nélkül használja modell 1 és a modell 2 kifejezéseket. Ezek a JSP specifikáció vázlataiból származnak, amelyek két alapvető mintát írnak le a JSP oldalak számára. Ezek a kifejezések eltűntek a specifikációból, de megmaradtak a nyelvhasználatban. A modell 1 és a modell 2 egyszerűen a vezérlő hiányára vagy meglétére utal, ami átveszi a kéréseket a klienstől, és választ a nézetek között.

Továbbá az MVC2 elnevezés ahhoz a félreértéshez vezetett, hogy ez az MVC továbbfejlesztése. Valójában ez az "MVC Model 2" rövidítése.[3]

Az MVC2 analógiájára megalkották az MVC1-et is, ami azonban hibásnak tekinthető, mert az nem az MVC architektúrán alapul.

Története szerkesztés

1998-ban a Sun Microsystems megjelentette a JavaServer Pages előzetes specifikációját, 0.92 verziószámmal.[4] Ebben a Sun két módot adott meg a JSP használatára. Az első modell a modell 1 volt, ezt ismertette előbb. Ez egy egyszerűbb modell volt, amiben a JSP lapok különálló egységek voltak. A logikát maguk a lapok tartalmazták, és linkekkel lehetett lépkedni közöttük. Ez megfelel a sablon technológia használatának. Ezt a modellt alkalmazta a kortárs ColdFusion és Active Server Pages.

A modell 2 kombinálta a szervlet technológiát a JSP-vel. A servlet-et feldolgozza a kérést, a tartalmat egy kérés attributumba teszi renderelésre, ezt tipikusan JavaBean reprezentálja. Ekkor hív egy JSP-t, hogy renderelje a tartalmat a megkívánt formába. Abban különbözik az előző modelltől, hogy a logikát kiszervezi egy szervletbe, és a JSP-ben csak a renderelés marad.

1999 decemberében a JavaWorld publikálta Govind Seshadri cikkét, Understanding JavaServer Pages Model 2 architecture címmel.[5] Azt javasolta, hogy a modell 2-t architekturális mintának tekintsék, továbbá ezt ajánlotta, mint MVC architektúrát a web alapú programokhoz.[6] Ezek mérföldkövet jelentettek a modell 2 életében.

Govind szerint a szervlet a vezérlő, és a JSP a nézet, de hogy mi a modell, arra nem adott egyenes választ. Csak annyit írt, hogy bármely adatszerkezet betöltheti ezt a szerepet. A példában ez egy Vector volt, amit a program kliens sessionben tárolt.

2000 márciusában jelent meg az Apache Struts. Ez formalizálta a vezérlő és a nézet elkülönítését, és az állította, hogy a modell 2 mintát implementálta.[6] A modell kérdését ez is nyitva hagyta, feltételezve, hogy ezt a programozók majd alkalmas megoldással töltik ki. Erre példaként az adatbázis interakciókat jelölte, mint JDBC és EJB. Újabban a Hibernate, iBatis, és Object Relational Bridge nyújtanak modernebb lehetőséget a modell használatához.[7]

A Struts kiadása óta több versengő keretrendszer is megjelent, amelyek a modell 2 és a MVC használatát deklarálták és segítették, ezért ezek sok fejlesztőnél összefonódtak, és emiatt kezdték el használni az MVC2, majd az MVC1 elnevezést használni.

Jegyzetek szerkesztés

Fordítás szerkesztés

Ez a szócikk részben vagy egészben a JSP model 2 architecture című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.