Ú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: 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. 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. 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. Podobne @InjectComponent anotácia nám umožňuje vložiť komponent definovaný v šablóne. 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. 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ť. Podobne @Parameter anotácia označuje, že pole je parametrom súčasti. 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: 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: 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: 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: 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. 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: 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}. 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: 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: © Vaša spoločnosť Teraz použijeme rozloženie na Domov stránka: 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: 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: 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: Teraz máme prístup k Prihlásiť sa stránka na localhost: 8080 / apache-tapiséria / prihlásenie: 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: 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: Poďme sa pozrieť na upozornenia v akcii, keď sa prihlásenie nepodarí: 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: 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 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: 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: Teraz, keď klikneme na tlačidlo Zavolať Ajax, zobrazí sa ikona drevorubač sa prihlási na úrovni INFO: 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.5. Anotácie
5.1. @Inject
5.2. @InjectPage
5.3. @InjectComponent
5.4. @Log
5.5. @Nehnuteľnosť
5.6. @Parameter
6. Strana
verejná trieda Domov {}
6.1. Šablóna
apache-gobelín Domov
6.2. Nehnuteľnosť
@ Vlastnosť private String appName = "apache-tapestry"; public Date getCurrentTime () {return new Date (); }
6.3. Lokalizácia
introMsg = Vitajte vo výučbe tapisérie Apache
6.4. Komponent rozloženia
public class Layout {@Property @Parameter (required = true, defaultPrefix = BindingConstants.LITERAL) private String title; }
$ {title}
$ {správa: introMsg}
$ {currentTime}
7. Formulár
verejná trieda Prihlásenie {// ... @InjectComponent private Prihlásenie do formulára; @ Vlastnosť súkromný reťazcový e-mail; @ Vlastné súkromné reťazcové heslo; }
prosím prihlás sa
8. Validácia
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
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"); }}
10. Ajax
verejná trieda Domov {// .... @Inject private AjaxResponseRenderer ajaxResponseRenderer; @Inject private Block ajaxBlock; @Log void onCallAjax () {ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}
Poskytnuté cez Ajax
11. Ťažba dreva
verejná trieda Domov {// ... @Inject private Logger logger; void onCallAjax () {logger.info ("volanie Ajaxu"); ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}
Stránky [INFO]. Domáce volanie Ajaxu
12. Záver