Bevezetés az Apache kárpitba

1. Áttekintés

Manapság a közösségi hálózatoktól kezdve a banki tevékenységig, az egészségügytől az állami szolgáltatásokig minden tevékenység online elérhető. Ezért nagyban támaszkodnak a webes alkalmazásokra.

Egy webalkalmazás lehetővé teszi a felhasználók számára, hogy egy vállalat által nyújtott online szolgáltatásokat igénybe vegyenek / élvezhessenek. Ugyanakkor interfészként működik a háttérszoftverhez.

Ebben a bemutatkozó bemutatóban az Apache Tapestry web keretrendszert vizsgáljuk meg, és létrehozunk egy egyszerű webalkalmazást az általa nyújtott alapvető funkciók felhasználásával.

2. Apache kárpit

Az Apache Tapestry egy skálázható webalkalmazások felépítésére szolgáló komponens-alapú keretrendszer.

Ebből következik a konvenciókonfiguráció paradigmában és annotációkat és elnevezési konvenciókat használ a konfigurációkhoz.

Az összes komponens egyszerű POJO. Ugyanakkor a semmiből vannak kifejlesztve, és nincsenek függőségük más könyvtáraktól.

Az Ajax támogatásával együtt a Tapestry nagyszerű kivétel-jelentési képességekkel is rendelkezik. Kiterjedt könyvtárat tartalmaz beépített közös alkatrészekből is.

A többi nagyszerű szolgáltatás mellett kiemelkedő a kód gyors újratöltése. Ezért ennek a szolgáltatásnak a használatával azonnal láthatjuk a változásokat a fejlesztői környezetben.

3. Beállítás

Az Apache kárpit egy egyszerű eszközkészletet igényel egy webalkalmazás létrehozásához:

  • Java 1.6 vagy újabb
  • Build eszköz (Maven vagy Gradle)
  • IDE (Eclipse vagy IntelliJ)
  • Alkalmazáskiszolgáló (Tomcat vagy Jetty)

Ebben az oktatóanyagban a Java 8, a Maven, az Eclipse és a Jetty Server kombinációját fogjuk használni.

A legújabb Apache Tapestry projekt beállításához a Maven archetípust használjuk, és követjük a hivatalos dokumentáció utasításait:

$ mvn archetípus: generál -DarchetypeCatalog = // tapestry.apache.org

Vagy ha van egy meglévő projektünk, egyszerűen hozzáadhatjuk a faliszőnyeg-Maven-függőséget a pom.xml:

 org.apache.tapestry gobelin mag 5.4.5 

Miután elkészültünk a beállítással, elindíthatjuk az alkalmazást apache-kárpit a következő Maven parancs segítségével:

$ mvn móló: futás

Alapértelmezés szerint az alkalmazás a következő címen lesz elérhető: localhost: 8080 / apache-tapestry:

4. A projekt felépítése

Fedezzük fel az Apache Tapestry által létrehozott projektelrendezést:

Láthatunk egy Maven-szerű projektszerkezetet, néhány konvención alapuló csomaggal együtt.

A Java osztályokba kerülnek src / main / java és a kategóriába sorolták alkatrészek, oldalakat, és szolgáltatások.

Hasonlóképpen, src / main / resources tartsa a sablonjainkat (hasonlóan a HTML fájlokhoz) - ezek rendelkeznek a .tml kiterjesztés.

Minden alá helyezett Java osztályhoz alkatrészek és oldalakat könyvtárakat, létre kell hozni egy azonos nevű sablonfájlt.

A src / main / webapp könyvtár olyan erőforrásokat tartalmaz, mint képek, stíluslapok és JavaScript fájlok. Ehhez hasonlóan a tesztfájlok is elhelyezésre kerülnek src / teszt.

Utolsó, src / site tartalmazza a dokumentációs fájlokat.

A jobb ötlet érdekében vessünk egy pillantást az Eclipse IDE programban megnyitott projektszerkezetre:

5. Kommentárok

Beszéljünk meg néhány praktikus kommentárról, amelyet az Apache Tapestry biztosít mindennapi használatra. A továbbiakban ezeket a megjegyzéseket fogjuk használni megvalósításunk során.

5.1. @ Injekció

A @ Injekció kommentár a org.apache.tapestry5.ioc.jegyzetek csomagot, és egyszerű módot kínál a függőségek injektálására a Java osztályokban.

Ez a megjegyzés meglehetősen hasznos eszköz, blokk, erőforrás és szolgáltatás injektálásához.

5.2. @InjectPage

Elérhető a org.apache.tapestry5.jegyzetek csomag, az @InjectPage az annotáció lehetővé teszi számunkra, hogy egy oldalt másik komponensbe injektáljunk. Ezenkívül az injekciós oldal mindig csak olvasható tulajdonság.

5.3. @InjectComponent

Hasonlóképpen a @InjectComponent az annotáció lehetővé teszi számunkra, hogy a sablonban definiált összetevőt injektáljuk.

5.4. @Log

A @Log kommentár a org.apache.tapestry5.jegyzetek csomagot, és hasznos bármilyen módszer esetén engedélyezni a DEBUG szintű naplózást. Naplózza a módszer be- és kilépését, valamint a paraméterértékeket.

5.5. @Ingatlan

Elérhető a org.apache.tapestry5.jegyzetek csomag, az @Ingatlan annotáció egy mezőt tulajdonságként jelöl meg. Ezzel egyidejűleg automatikusan létrehozza az ingatlant és a rendezőt az ingatlanhoz.

5.6. @Paraméter

Hasonlóképpen a @Paraméter annotáció azt jelzi, hogy a mező egy összetevő paraméter.

6. oldal

Tehát mindannyian készen állunk a keretrendszer alapvető jellemzőinek feltárására. Hozzunk létre egy újat itthon oldal az alkalmazásunkban.

Először meghatározunk egy Java osztályt itthon ban,-ben oldalakat könyvtárba src / main / java:

nyilvános osztály kezdőlapja {}

6.1. Sablon

Ezután létrehozunk egy megfelelőt Home.tml sablon a oldalakat könyvtár alatt src / main / resources.

Egy kiterjesztésű fájl .tml (Tapestry Markup Language) hasonló az Apache Tapestry által biztosított XML jelöléssel ellátott HTML / XHTML fájlhoz.

Például nézzük meg a Home.tml sablon:

  apache-kárpit Otthon 

Voálá! Egyszerűen a Jetty szerver újraindításával elérhetjük a itthon oldal a localhost: 8080 / apache-gobelin / home:

6.2. Ingatlan

Fedezzük fel, hogyan lehet egy tulajdonságot megjeleníteni a itthon oldalt.

Ehhez hozzáadunk egy tulajdonságot és egy getter metódust a itthon osztály:

@Property privát karakterlánc appName = "apache-kárpit"; public Date getCurrentTime () {return new Date (); }

A App név ingatlan a itthon oldalon egyszerűen használhatjuk $ {appName}.

Hasonlóképpen írhatunk is $ {currentTime} a getCurrentTime módszer az oldalról.

6.3. Lokalizálás

Az Apache Tapestry integrált lokalizációs támogatást nyújt. Az egyezménynek megfelelően az oldalnév tulajdonságfájl megőrzi az oldalon megjelenítendő összes helyi üzenet listáját.

Például létrehozunk egy otthon.tulajdonságok fájl a oldalakat könyvtár a itthon oldal helyi üzenettel:

introMsg = Üdvözöljük az Apache kárpit bemutatójában

Az üzenet tulajdonságai eltérnek a Java tulajdonságaitól.

Ugyanezen okból a kulcs nevét a üzenet előtag az üzenet tulajdonságának renderelésére szolgál - például $ {message: introMsg}.

6.4. Layout Component

Definiáljunk egy alapelrendezés összetevőt a Layout.java osztály. A fájlt a alkatrészek könyvtárba src / main / java:

public class Layout {@Property @Parameter (kötelező = true, defaultPrefix = BindingConstants.LITERAL) privát karakterlánc cím; }

Itt a cím tulajdonság meg van jelölve kötelezőnek, és a kötés alapértelmezett előtagja literál Húr.

Ezután írunk egy megfelelő sablonfájlt Layout.tml ban,-ben alkatrészek könyvtárba src / main / resources:

  $ {title} 

© az Ön vállalata

Most használjuk a elrendezés a itthon oldal:

$ {message: introMsg}

$ {currentTime}

Megjegyzés: a névtér az elemek (t: típus és t: test) az Apache kárpit. Ugyanakkor a névtér összetevőket és attribútumokat is tartalmaz.

Itt a t: típus beállítja a elrendezés a itthon oldalt. És a t: test elem beszúrja az oldal tartalmát.

Vessünk egy pillantást a itthon oldal az elrendezéssel:

7. Forma

Hozzunk létre egy Belépés oldal egy űrlappal, hogy a felhasználók bejelentkezhessenek.

Amint már feltártuk, először létrehozunk egy Java osztályt Belépés:

nyilvános osztály Bejelentkezés {// ... @InjectComponent privát űrlap bejelentkezés; @Property privát karakterlánc e-mail; @Property private String jelszó; }

Itt két tulajdonságot definiáltunk - email és Jelszó. Továbbá beadtuk a Forma komponens a bejelentkezéshez.

Ezután hozzunk létre egy megfelelő sablont login.tml:

kérem jelentkezzen be

Most elérhetjük a Belépés oldal a localhost: 8080 / apache-tapestry / login:

8. Érvényesítés

Az Apache Tapestry néhány beépített módszert biztosít az űrlap érvényesítéséhez. Ezenkívül lehetőséget nyújt az űrlapbeküldés sikerének vagy sikertelenségének kezelésére.

A beépített módszer követi az esemény és az összetevő nevének konvencióját. Például a módszer onValidationFromLogin érvényesíteni fogja a Belépés összetevő.

Hasonlóképpen, az olyan módszerek, mint onSuccessFromLogin és onFailureFromLogin a siker és a kudarc eseményei.

Tehát adjuk hozzá ezeket a beépített módszereket a Belépés osztály:

public class Bejelentkezés {// ... void onValidateFromLogin () {if (email == null) System.out.println ("Az e-mail null); if (password == null) System.out.println (" A jelszó null ); } Object onSuccessFromLogin () {System.out.println ("Üdvözöljük! Sikeres bejelentkezés sikeres"); hazatérés.osztály; } void onFailureFromLogin () {System.out.println ("Kérjük, próbálja meg újra helyes hitelesítő adatokkal"); }}

9. Riasztások

Az űrlap érvényesítése hiányos megfelelő figyelmeztetések nélkül. Nem beszélve arról, hogy a keretrendszer beépített támogatást nyújt a riasztási üzenetekhez is.

Ehhez először beadjuk a AlertManager ban,-ben Belépés osztály kezeli a riasztásokat. Ezután cserélje ki a println utasítások a meglévő módszerekben a riasztási üzenetekkel:

nyilvános osztály Bejelentkezés {// ... @Inject private AlertManager alertManager; void onValidateFromLogin () {if (email == null || password == null) {alertManager.error ("Az e-mail / jelszó null"); login.recordError ("Az érvényesítés nem sikerült"); // beküldési hiba az űrlapon}} Object onSuccessFromLogin () {alertManager.success ("Üdvözöljük! Sikeres bejelentkezés sikeres"); hazatérés.osztály; } void onFailureFromLogin () {alertManager.error ("Kérjük, próbálkozzon újra helyes hitelesítő adatokkal"); }}

Lássuk a riasztásokat, amikor a bejelentkezés sikertelen:

10. Ajax

Eddig feltártuk egy egyszerű létrehozását itthon oldal egy űrlappal. Ugyanakkor láttuk a riasztási üzenetek érvényesítését és támogatását.

Ezután vizsgáljuk meg az Apache Tapestry Ajax beépített támogatását.

Először beadjuk a AjaxResponseRenderer és Blokk komponens a itthon osztály. Ezután létrehozunk egy módszert onCallAjax az Ajax hívás feldolgozásához:

nyilvános osztály Kezdőlap {// .... @ Injektáljon privát AjaxResponseRenderer ajaxResponseRenderer; @ Injektáljon privát blokkot ajaxBlock; @Log void onCallAjax () {ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}

Emellett néhány változtatást is el kell végeznünk Home.tml.

Először hozzáadjuk a eventLink hogy felhívja a onCallAjax módszer. Ezután hozzáadunk egy zóna elem azonosítóval ajaxZone hogy megadják az Ajax választ.

Végül rendelkeznünk kell egy blokk-összetevővel, amelyet a rendszerbe injektálunk itthon osztályú és Ajax válaszként nyújtott:

Hívd az Ajaxot


Az Ajaxon keresztül nyújtott

A jelenlegi idő: $ {currentTime}

Vessünk egy pillantást a frissítettre itthon oldal:

Ezután rákattinthatunk az Ajax hívása gombra, és láthatjuk a ajaxResponseRenderer működés közben:

11. Naplózás

A beépített naplózási szolgáltatás engedélyezéséhez a Logger beadása szükséges. Ezután bármilyen szinten naplózhatunk, például TRACE, DEBUG és INFO.

Tehát végezzük el a szükséges módosításokat a itthon osztály:

nyilvános osztály Kezdőlap {// ... @ Inject private Logger logger; void onCallAjax () {logger.info ("Ajax hívás"); ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}

Most, amikor az Ajax hívása gombra kattintunk, a naplózó INFO szinten fog bejelentkezni:

[INFO] oldalak.Home Ajax hívás 

12. Következtetés

Ebben a cikkben az Apache Tapestry internetes keretrendszert vizsgáltuk.

Először is létrehoztunk egy gyorsindító webalkalmazást, és hozzáadtuk a itthon oldal az Apache Tapestry alapvető szolgáltatásait használva, mint pl alkatrészek, oldalakat, és sablonok.

Ezután megvizsgáltunk néhány hasznos megjegyzést, amelyeket az Apache Tapestry adott egy tulajdonság és az összetevő / oldal injekció konfigurálásához.

Végül megvizsgáltuk a keretrendszer által biztosított beépített Ajax és naplózási támogatást.

Szokás szerint az összes kód implementáció elérhető a GitHubon.