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-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]- ↑ JavaServer Pages - Specification 0.92. JavaServer Pages Access Model. October 7, 1998
- ↑ Java BluePrints 4.4.1: Structuring the Web Tier
- ↑ Struts, an open-source MVC implementation
- ↑ JSP 0.92 Specification
- ↑ 'Understanding JavaServer Pages Model 2 architecture by Govind Seshadri (JavaWorld). [2013. november 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. augusztus 8.)
- ↑ a b How Struts Implements Model 2 (The Origins of Model 1/Model 2)
- ↑ Struts 1.x Homepage. [2010. szeptember 23-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. október 5.)
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.