Úvod do tapisérie Apache

1. Prehľad

V dnešnej dobe, od sociálnych sietí cez bankovníctvo, zdravotníctvo až po vládne služby, sú všetky aktivity dostupné online. Preto sa veľmi spoliehajú na webové aplikácie.

Webová aplikácia umožňuje používateľom využívať / využívať online služby poskytované spoločnosťou. Zároveň funguje ako rozhranie k backendovému softvéru.

V tomto úvodnom tutoriále preskúmame webový rámec Apache Tapestry a vytvoríme jednoduchú webovú aplikáciu pomocou základných funkcií, ktoré poskytuje.

2. Tapiséria Apache

Apache Tapestry je komponentový rámec pre tvorbu škálovateľných webových aplikácií.

Vyplýva to z konfigurácia konvencie paradigma a pre konfigurácie používa anotácie a konvencie pomenovania.

Všetky komponenty sú jednoduché POJO. Zároveň sú vyvinuté od nuly a nemajú závislosť od iných knižníc.

Spolu s podporou Ajaxu má Tapestry aj veľké možnosti hlásenia výnimiek. Poskytuje tiež rozsiahlu knižnicu vstavaných bežných komponentov.

Medzi ďalšie vynikajúce vlastnosti patrí napríklad horúce načítanie kódu. Preto pomocou tejto funkcie môžeme okamžite vidieť zmeny vo vývojovom prostredí.

3. Inštalácia

Tapeta Apache vyžaduje na vytvorenie webovej aplikácie jednoduchú sadu nástrojov:

  • Java 1.6 alebo novšia
  • Nástroj na zostavenie (Maven alebo Gradle)
  • IDE (Eclipse alebo IntelliJ)
  • Aplikačný server (Tomcat alebo Jetty)

V tomto výučbe použijeme kombináciu Java 8, Maven, Eclipse a Jetty Server.

Na nastavenie najnovšieho projektu Apache Tapestry použijeme archetyp Maven a budeme postupovať podľa pokynov uvedených v oficiálnej dokumentácii:

$ mvn archetyp: generate -DarchetypeCatalog = // tapestry.apache.org

Alebo, ak máme existujúci projekt, môžeme do modulu jednoducho pridať závislosť Maven od gobelínu pom.xml:

 org.apache.tapestry gobelínové jadro 5.4.5 

Keď sme pripravení na nastavenie, môžeme spustiť aplikáciu apache-gobelín nasledujúcim príkazom Maven:

$ mvn mólo: spustiť

Aplikácia bude predvolene prístupná na adrese localhost: 8080 / apache-gobelín:

4. Štruktúra projektu

Poďme preskúmať rozloženie projektu vytvorené Apache Tapestry:

Môžeme vidieť štruktúru projektu podobnú Mavenovi, spolu s niekoľkými balíčkami založenými na konvenciách.

Triedy Java sú umiestnené v src / main / java a kategorizované ako komponenty, strána služby.

Podobne, src / main / resources obsahujú naše šablóny (podobné súborom HTML) - tieto majú .tml predĺženie.

Pre každú triedu Java umiestnenú pod komponenty a strán adresárov, mal by sa vytvoriť súbor šablóny s rovnakým názvom.

The src / main / webapp adresár obsahuje zdroje, ako sú obrázky, tabuľky štýlov a súbory JavaScriptu. Podobne sú umiestnené testovacie súbory src / test.

Posledný, src / web bude obsahovať súbory dokumentácie.

Pre lepšiu predstavu sa pozrime na štruktúru projektu otvorenú v Eclipse IDE:

5. Anotácie

Poďme si predstaviť niekoľko užitočných anotácií, ktoré poskytuje Apache Tapestry pre každodenné použitie. V budúcnosti budeme tieto anotácie používať pri svojich implementáciách.

5.1. @Inject

The @Inject anotácia je k dispozícii v org.apache.tapestry5.ioc.annotations balíček a poskytuje jednoduchý spôsob vkladania závislostí do tried Java.

Táto anotácia je veľmi užitočná na vloženie majetku, bloku, zdroja a služby.

5.2. @InjectPage

K dispozícii v org.apache.tapestry5.annotations balíček, @InjectPage anotácia nám umožňuje vložiť stránku do iného komponentu. Vložená stránka je tiež vždy vlastnosťou iba na čítanie.

5.3. @InjectComponent

Podobne @InjectComponent anotácia nám umožňuje vložiť komponent definovaný v šablóne.

5.4. @Log

The @Log anotácia je k dispozícii v org.apache.tapestry5.annotations balíka a je užitočné povoliť protokolovanie na úrovni DEBUG ľubovoľnou metódou. Zaznamenáva vstup a výstup metódy spolu s hodnotami parametrov.

5.5. @Nehnuteľnosť

K dispozícii v org.apache.tapestry5.annotations balíček, @Nehnuteľnosť anotácia označuje pole ako vlastnosť. Zároveň automaticky vytvára getry a settery pre nehnuteľnosť.

5.6. @Parameter

Podobne @Parameter anotácia označuje, že pole je parametrom súčasti.

6. Strana

Sme teda pripravení preskúmať základné vlastnosti rámca. Vytvorme nový Domov stránke v našej aplikácii.

Najskôr definujeme triedu Java Domov v strán adresár v src / main / java:

verejná trieda Domov {}

6.1. Šablóna

Potom vytvoríme zodpovedajúci Home.tml šablóna v strán adresár pod src / main / resources.

Súbor s príponou .tml (Tapestry Markup Language) je podobný súboru HTML / XHTML s označením XML poskytnutému Apache Tapestry.

Napríklad sa pozrime na Home.tml šablóna:

  apache-gobelín Domov 

Voila! Jednoduchým reštartovaním servera Jetty môžeme získať prístup k serveru Domov stránka na localhost: 8080 / apache-gobelín / domov:

6.2. Nehnuteľnosť

Poďme preskúmať, ako vykresliť nehnuteľnosť na serveri Domov stránke.

Za týmto účelom pridáme vlastnosť a metódu getter do súboru Domov trieda:

@ Vlastnosť private String appName = "apache-tapestry"; public Date getCurrentTime () {return new Date (); }

Na vykreslenie appName majetok na Domov stránku, môžeme jednoducho použiť $ {appName}.

Podobne môžeme písať $ {currentTime} pre prístup k getCurrentTime metóda zo stránky.

6.3. Lokalizácia

Apache Tapestry poskytuje integrovanú podporu lokalizácie. Podľa konvencie súbor vlastností názvu stránky uchováva zoznam všetkých miestnych správ, ktoré sa majú na stránke vykresliť.

Napríklad vytvoríme a dom.vlastnosti súbor v strán adresár pre Domov stránka s miestnou správou:

introMsg = Vitajte vo výučbe tapisérie Apache

Vlastnosti správy sa líšia od vlastností Java.

Z rovnakého dôvodu je názov kľúča s správa predpona sa používa na vykreslenie vlastnosti správy - napríklad $ {správa: introMsg}.

6.4. Komponent rozloženia

Definujme základnú zložku rozloženia vytvorením Rozloženie.java trieda. Uchovávame súbor v priečinku komponenty adresár v src / main / java:

public class Layout {@Property @Parameter (required = true, defaultPrefix = BindingConstants.LITERAL) private String title; }

Tu je titul vlastnosť je označená ako povinná a predvolená predpona väzby je nastavená ako literálna String.

Potom napíšeme zodpovedajúci súbor šablóny Layout.tml v komponenty adresár v src / main / resources:

  $ {title} 

© Vaša spoločnosť

Teraz použijeme rozloženie na Domov stránka:

$ {správa: introMsg}

$ {currentTime}

Pamätajte, že menný priestor sa používa na identifikáciu prvkov (t: typ a t: telo) poskytuje Apache Tapestry. Obor názvov zároveň poskytuje komponenty a atribúty.

Tu je t: typ nastaví rozloženie na Domov stránke. A t: telo element vloží obsah stránky.

Poďme sa pozrieť na Domov stránka s rozložením:

7. Formulár

Vytvorme a Prihlásiť sa stránka s formulárom, ktorá umožňuje používateľom prihlásiť sa.

Ako sme už preskúmali, najskôr vytvoríme triedu Java Prihlásiť sa:

verejná trieda Prihlásenie {// ... @InjectComponent private Prihlásenie do formulára; @ Vlastnosť súkromný reťazcový e-mail; @ Vlastné súkromné ​​reťazcové heslo; }

Tu sme definovali dve vlastnosti - e-mail a heslo. Tiež sme injekčne podali a Formulár zložka pre prihlásenie.

Potom vytvoríme zodpovedajúcu šablónu login.tml:

prosím prihlás sa

Teraz máme prístup k Prihlásiť sa stránka na localhost: 8080 / apache-tapiséria / prihlásenie:

8. Validácia

Apache Tapestry poskytuje niekoľko vstavaných metód na overovanie formulárov. Poskytuje tiež spôsoby riešenia úspechu alebo neúspechu odoslania formulára.

Vstavaná metóda sa riadi konvenciou udalosti a názvu komponentu. Napríklad metóda onValidationFromLogin potvrdí Prihlásiť sa zložka.

Rovnako aj metódy ako onSuccessFromLogin a onFailureFromLogin sú pre udalosti úspechu a neúspechu.

Pridajme teda tieto zabudované metódy do Prihlásiť sa trieda:

verejná trieda Prihlásenie {// ... void onValidateFromLogin () {if (email == null) System.out.println ("Email je null); if (heslo == null) System.out.println (" Heslo je null) ); } Objekt onSuccessFromLogin () {System.out.println ("Vitajte! Prihlásenie úspešné"); vrátiť Home.class; } void onFailureFromLogin () {System.out.println ("Skúste to znova so správnymi povereniami"); }}

9. Výstrahy

Bez náležitých upozornení je overenie formulára neúplné. Nehovoriac o tom, že rámec má vstavanú podporu aj pre výstražné správy.

Za týmto účelom najskôr vložíme inštanciu súboru AlertManager v Prihlásiť sa triedy na správu varovaní. Potom vymeňte println príkazy v existujúcich metódach s výstražnými správami:

verejná trieda Prihlásenie {// ... @Inject private AlertManager alertManager; void onValidateFromLogin () {if (email == null || heslo == null) {alertManager.error ("E-mail / heslo je null"); login.recordError ("Overenie zlyhalo"); // zlyhanie odoslania vo formulári}} Objekt onSuccessFromLogin () {alertManager.success ("Vitajte! Prihlásenie úspešné"); vrátiť Home.class; } void onFailureFromLogin () {alertManager.error ("Skúste to znova so správnymi povereniami"); }}

Poďme sa pozrieť na upozornenia v akcii, keď sa prihlásenie nepodarí:

10. Ajax

Doteraz sme skúmali vytvorenie jednoduchého Domov stránku s formulárom. Zároveň sme videli overenia a podporu pre výstražné správy.

Ďalej preskúmajme zabudovanú podporu Apache Tapestry pre Ajax.

Najskôr vložíme inštanciu súboru AjaxResponseRenderer a Blokovať zložka v Domov trieda. Potom vytvoríme metódu onCallAjax na spracovanie hovoru Ajax:

verejná trieda Domov {// .... @Inject private AjaxResponseRenderer ajaxResponseRenderer; @Inject private Block ajaxBlock; @Log void onCallAjax () {ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}

Musíme tiež urobiť niekoľko zmien v našom Home.tml.

Najskôr pridáme eventLink vyvolať onCallAjax metóda. Potom pridáme a zóna prvok s id ajaxZone na vykreslenie odpovede Ajaxu.

Nakoniec musíme mať blokovú súčasť, ktorá sa vstrekne do súboru Domov triedy a vykreslené ako odpoveď Ajaxu:

Zavolajte Ajaxovi


Poskytnuté cez Ajax

Aktuálny čas je: $ {currentTime}

Poďme sa pozrieť na aktualizované Domov stránka:

Potom môžeme kliknúť na tlačidlo Zavolať Ajax a zobraziť ikonu ajaxResponseRenderer v akcii:

11. Ťažba dreva

Ak chcete povoliť zabudovanú funkciu protokolovania, inštancia Logger je potrebné podať injekciu. Potom ho môžeme použiť na prihlásenie na ľubovoľnej úrovni, ako je TRACE, DEBUG a INFO.

Urobme teda požadované zmeny v Domov trieda:

verejná trieda Domov {// ... @Inject private Logger logger; void onCallAjax () {logger.info ("volanie Ajaxu"); ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}

Teraz, keď klikneme na tlačidlo Zavolať Ajax, zobrazí sa ikona drevorubač sa prihlási na úrovni INFO:

Stránky [INFO]. Domáce volanie Ajaxu 

12. Záver

V tomto článku sme preskúmali webový rámec Apache Tapestry.

Na začiatok sme vytvorili rýchlu webovú aplikáciu a pridali sme Domov stránka so základnými funkciami tapisérie Apache, napríklad komponenty, strána šablóny.

Potom sme preskúmali niekoľko užitočných anotácií poskytnutých serverom Apache Tapestry na konfiguráciu vkladania vlastností a komponentov / stránok.

Na záver sme preskúmali zabudovanú podporu Ajaxu a protokolovania, ktorú poskytuje framework.

Ako obvykle sú všetky implementácie kódu dostupné na GitHub.