A jsp1 alternatívái

Azóta az autók hosszú utat tettek a fejlesztésükhöz. Amellett, hogy a szédítő különböző karosszériát, mi volt még a lehetőséget, hogy válasszon a modell radiopriemni- ka / CD-lejátszó, hogy kötelezze a létesítmény elektromos üveg - felvonók és zárak az ajtókon, valamint szövet vagy bőr kárpitozással. És időnkben bárki vásárolhat bármilyen színű autót, beleértve a feketét is.

Eddig a JSP technológiát alkalmaztuk egy alkalmazás megtekintéséhez. De ellentétben a Henry Ford fekete festékével, a JSP nem az egyetlen bemutató technológia a kiválasztáshoz. Két másik népszerű sablon mechanizmus a Velocity és a FreeMarker. Lássuk, hogyan kell ezeket a mechanizmusokat használni a tavaszi MVC keretrendszerrel együtt.

Velocity sablonok használata

A Velocity egy könnyen használható sablon nyelv a Java alkalmazások számára. A sebesség sablonok nem tartalmaznak Java kódot. amely megkönnyíti a fejlesztők, de a nem fejlesztők megértését is. Idézet a felhasználói kézikönyvről Velocity:

"A Velocity elválasztja a Java-kódot a weboldalakról, így a webhelyet hosszú ideig megőrizheti, és életképes alternatívát nyújtva a JavaServer Pages-technológiához."

A JSP után a Velocity valószínűleg a Java alapú webes alkalmazások legnépszerűbb sablonnyelve. Ezért eléggé valószínű, hogy a Velocity-t a prezentációs szint megvalósításának technológiájaként olyan tavaszi alkalmazással kívánja kifejleszteni, amely a Velocity. Szerencsére a Spring a Velocity-t a Spring MVC prezentációs szintű sablonok nyelveként támogatja.

Lássuk, hogyan kell használni a Velocity-t a tavaszi MVC-vel, végrehajtva a Velocity alapú RoadRantz alkalmazás nézeteit.

A reprezentáció meghatározása sebességgel

Tegyük fel, hogy teljesítmény-végrehajtási technológiaként úgy döntött, hogy a JSP helyett a Velocity-t használja. Az otthoni JSP oldal végrehajtásának egyik példája már bemutatásra került. Most nézze meg a Velocity - home.vm (8.15-ben bemutatott), amely a kezdőlap megjelenítéséhez használható.

Lista 8.15. Velocity alapú honlap létrehozása

Add hozzá rant

Regisztrálj új autót

#foreach ($ rant in $ rants)

A Velocity és a JSP sablonok nem sok különbséggel rendelkeznek. De van egy dolog, ami azonnal elkapja a szemet: a sabloncímkék hiánya. Ez azért van, mert a Velocity mechanizmus nem támaszkodik a címkék használatára, mint a JSP. Ehelyett a saját nyelvét használja, amelyet a Velocity Template Language (VTL) néven ismert, amely áramlásszabályozási utasításokat és egyéb irányelveket tartalmaz.

Az home.vm fájlban a #foreach irányelv arra szolgál, hogy egy ciklust rendezzen az elemek listáján, és megjeleníti a következő elem tulajdonságait minden iterációban.

E különbség ellenére a Velocity nyelvi kifejezések sok szempontból hasonlítanak a JSP nyelvére. Valójában a JSP egyszerűen követte a Velocity sarkát, a $ jelöléssel<> a saját nyelvének kifejezésében.

Most, miután létrehozta a sablont, be kell állítania Spring-et, hogy a Velocity sablonokat nézetként használja a Spring MVC alapú alkalmazásban.

Sebesség-mechanizmus beállítása

Először is be kell állítania a Velocity mechanizmust. Ehhez adja meg a VelocityConfigurer összetevőt a tavaszi konfigurációs fájlban, az alábbiak szerint:

A VelocityConfigurer komponens felelős a Velocity mechanizmus beállításáért tavasszal. A resourceLoaderPath tulajdonság határozza meg a sablonok keresési helyét. Azt javaslom, hogy sablonokat helyezzenek el a WEB-INF könyvtár belsejében található könyvtárba, így a sablonok nem érhetők el közvetlenül.

A Velocity ismerete már tudta, hogy a Velocity viselkedési beállítások meghatározhatók a velocity.properties fájlban. Ugyanakkor a VelocityConfigurer ugyanazon beállításokat is megadhatja a velocityProperties tulajdonságban. Például tekintse meg a következő közleményt a VelocityConfigurer összetevőről:

A Velocity nézetek engedélyezése

Az utolsó dolog, amit a Velocity prezentációs sablonok használata előtt meg kell tenni, a nézetbíró beállítása. Nevezd meg különösen a VelocityViewResolver összetevőt a kontextus konfigurációs fájlban, az alábbiak szerint:

A Velocity VelocityViewResolver komponense szinte ugyanaz, mint a InternalResourceViewResolver a JSP számára. A InternalResourceViewResolverhez hasonlóan az előtag és az utótag tulajdonságai is szerepelnek, amelyek a nézet logikai ábrázolásával együtt a sablon elérési útját képezik. Ebben az esetben elegendő csak az utótag tulajdonságának beállítása, megadva a .vm kiterjesztést. Előtag nem szükséges, mert a sablonkönyvtár elérési útja már meghatározásra került a VelocityConfigurer összetevő resourceLoaderPath tulajdonságában.

Megjegyzés. Itt a komponens id attribútuma a value viewResolver értékre van állítva. Ez a körülmény fontos szerepet játszik abban az esetben, ha a DispatcherServlet servlet nem úgy van konfigurálva, hogy az összes nézet arbitorjait megkeresse. Ha több alkalmazást kell használnia az alkalmazásban, valószínűleg meg kell változtatnia az id attribútum értékét valami alkalmasabbnak (és egyedülállónak), mint például a velocityViewResolver.

Most az alkalmazás készen áll a nézetek megtekintésére a Velocity sablonok alapján. Ehhez egyszerűen vissza kell állítania a ModelAndView objektumot, amely a nézetet a logikai nevéhez viszonyítja. A HomeController esetében egyáltalán nem kell semmit csinálnia, mert már visszaad egy ModelAndView objektumot:

térjen vissza az új ModelAndView ("home", "rants", recentRants);

A nézetnek logikus neve van. Amikor a nézet neve meg van adva, a .vm kiterjesztés hozzáadódik az otthonhoz a sablonfájl home.vm nevének megadásához. A Velocity-ViewResolver összetevő megtalálja ezt a mintát a WEB-INF / sebesség / útvonalon.

Ami a rants modell objektumát illeti, a sablonban Velocity tulajdonságként fog megjelenni. A 8.15-ös listában ez az objektum olyan gyűjteményt jelent, ahol a #foreach irányelv iterációt végez.

Dátumok és számok formázása

Annak ellenére, hogy az alkalmazás már készen áll a Velocity nézet megjelenítésére, még mindig vannak megoldatlan problémák. Ha megvizsgálja home.vm sablon (Listing 8,15), lehet jegyezni, hogy az in home.vm formázás nélkül a dátumokat, így kívánatos lenne, hogy bizonyos paramétereket, és így obe- zsugorított megfelelő dátumformázási.

A VTL nyelv nem támogatja a formázási dátumokat. A Velocity azonban eszközökkel rendelkezik a dátumok és számok formázására. Ahhoz, hogy azokat elérhetővé tegye, meg kell adnia a VelocityViewResolver választottbírónak azon attribútumok nevét, amelyeken keresztül ezeket az eszközöket exportálni fogják. Az attribútumnevek meghatározása a VelocityViewResolver összetevő dátumteleválasztó és numberToolAttribute tulajdonságai révén történik:

Megadja, hogy a dátumformázó eszköz a sablonban $ dateToolként lesz elérhető. Vagyis a dátum formázásához elegendő átvinni funkcióját a szerszám formátumára. Például:

Az első paraméter a sablonszöveg. Ez ugyanazt a szintaxist használja, mint a java .text.SimpleDateFormat. Ezenkívül meg lehet adni az egyik szabványos java .text.DateFormat sablont úgy, hogy az egyik értéket sablonszövegként adja át: FULL, LONG, MEDIUM, SHORT vagy DEFAULT. A teljes dátummegjelenítési formátumnak megfelelő FULL értéket itt használtuk.

Amint már említettük, a $ numberTool attribútum egy eszköz a számok formázására a Velocity sablonban. Az eszközről és a dátumformázó eszközről további információt a Velocity dokumentációban talál.

Exportálás kérés és munkamenet-attribútumok

A legtöbb adat jelenik meg a keblét shab- Velocity, képes átjutni a térkép objektum ábrázolása, Ko tory ModelAndView át objektum, de néha lehet szükség kijelző attribútum érték servlet tárgyak, mint például a kérelem vagy a munkamenet. Ha például egy felhasználó bejelentkezik az alkalmazásba, akkor a servlet munkamenet-objektuma tartalmazhat információkat a felhasználóról.

Nagyon kellemetlen lenne, ha arra kényszerültünk volna, hogy egy lekérdezésből vagy munkamenetből származó attribútumokat másoljanak modelladatokra az egyes vezérlőkön. Szerencsére a VelocityViewResolver automatikusan átmásolhatja a modellek attribútumait. Az exposeRequestAttributes tulajdonságai és a exposeSessionAttributes tulajdonságai értesítik a VelocityViewResolver összetevőt arról, hogy a kérés és a munkamenet-attribútumok másolásra van szükség az adatmodellhez. Például:

8.2. Táblázat. A tavaszi MVC biztosítja a Velocity makró definíciók gyűjteményét az űrlapmezők társításához egy objektumhoz

#springFormTextarea ("rant.rantText" "sorok = '5' cols = '50 '")

A szervezet az ország belépett a neve és nyilvántartási HO általuk használt makrók #springFormInput, társítja a mezőket a tulajdonságok és rant.vehicle.state rant.vehicle.plateNumber volt. Ez azt jelenti, hogy amikor az űrlap beérkezik, az értékek a vezérlőobjektum járművén tulajdonságának (rant) állapotának és táblaszámának tulajdonságai. Mindkét esetben nem szükséges további attribútumokat definiálni a HTML-jelölésben. így egy üres karakterlánc átadódik a második paraméterben. Az eredmény a következő HTML-jelölés a következő mezőkkel:

állam:

Plate #:

Ezután követi a beviteli területet