Kezelés a gerincekkel Az első gallyalkalmazás létrehozása
Ez a tartalom a sorozat része: Graillazások kezelése
Vigyázz az új cikkekre ebben a sorozatban.
Bevezetem Grailnek egy másik ingyenes infrastruktúrát a webes alkalmazások fejlesztéséhez: Ruby on Rails. Amikor a Sails megjelent, sok fejlesztőt elvitt. A Railsbe ágyazott állványozási képességek lehetővé tették egy új projekt elindítását kevesebb idő alatt, mint korábban. Az "egyezmény a konfigurációról" elnevezésű ötlet, az alapul szolgáló Rails, lehetővé teszi egy alkalmazás számára, hogy ésszerű elnevezési sémák alapján "összegyűjtse" magát ahelyett, hogy nehézkes és hibásan konfigurálható XML fájlokat használna. Ruby metaprogramozási képességei lehetővé teszik az objektumok számára, hogy "mágikusan" örökölje a munkahelyi módszereket és mezőket, anélkül, hogy a forráskódot zavarják.
Az infrastruktúra-sínek megérdemelték és mégis megérdemlik a kapott jóváhagyást, de a Java fejlesztőket nehéz kérdéseket vetik fel. El kell hagynom a jól ismert Java platformot az új platform ígéretei miatt? És mi a helyzet a meglévő Java-kóddal, a meglévő vállalati kiszolgálókkal és a tapasztalt Java programozók munkatársaival?
Erről a cikksorról
Grails - a modern infrastruktúra fejlesztésére vonatkozó web-alapú alkalmazások, amely egyesíti a jól ismert Java-technológiákat, mint a tavaszi és Hibernate, a modern technikák, mint a „konvenció a konfiguráció”. Groovy-ra írt, a Grails zökkenőmentesen integrálható a meglévő Java-kóddal, rugalmasságot és dinamikát kínál a szkriptnyelvekhez. Grails tanulmányozása után a webes alkalmazások fejlesztésére vonatkozó véleményed visszavonhatatlanul megváltozik.
Itt jelenik meg a Grails. A Grails ugyanazt a fejlesztési képességet nyújtja, mint a Rails, ugyanakkor erős kapcsolatot tart fenn a bevált Java technológiákkal. De a Grails nem csak egy másik "klón" a Rails, hordozta a Java platform. A Grails megtanulta a Rails-ban tanult tanulságokat, és összekapcsolta őket a modern programozással. Ez inkább a Rails fejlesztése, mint egy új platformra való átállás.
Groovy funkciók
Ahogy a Rails mélyen ragaszkodik a Ruby programnyelvhez, a Grails nem létezhet Groovy képességei nélkül (lásd Resources). A Groovy egy dinamikus nyelv, amely a JVM-ben fut, és zökkenőmentesen illeszkedik a Java nyelvhez. Ha elolvasta a Praktikusan Groovy cikkek sokéves ciklusát a developerWorks webhelyen, akkor már ismeri ezt a nyelvet. Ha nem, akkor semmi komoly, a Grail tanulmányozása során sokat kell tanulnia Groovy-ról. Ez nem lehet nehéz, mivel a Groovy-t kifejezetten arra tervezték, hogy felhívja a Java fejlesztőket.
Például a Groovy lehetővé teszi, hogy jelentősen csökkentse az általában a Java kód kódját. Nem kell megadni a get és metódusokat a mezők eléréséhez, mert a Groovy automatikusan biztosítja azokat. Nem kell írni az Iterator i = list.iterator () típusú konstrukciókat az elemek listáján hurok végrehajtásához; A list.each konstrukció ugyanúgy tömörebb és grafikusabb. Egyszerűen fogalmazva, Groovy az, amit a Java nyelv nézne ki, ha a huszonegyedik században íródott.
Groovy soha nem vonzotta volna a Java programozóit, ha előnyeit kihasználva szükségessé vált az alkalmazások teljes körű átírása. Szerencsére Groovy átlátható módon integrálódik a meglévő kóddal. A Groovy nyelv nem helyettesíti a Java nyelvet, de javítja. Groovy gyorsan megtanulható egy nap alatt, mert Groovy kód Java kód. Ez a két nyelv konzisztensek, így is nevezhetjük dolgozó .java fájlt .groovy fájlt (például nevezze át a fájlt Person.java Person.groovy), és kap teljesen korrekt (és futtatható) Groovy fájlt, annak ellenére, hogy nem használ semmilyen szintaktikai a Groovy nyújtotta előnyöket.
Az ilyen mély kompatibilitás a Groovy és a Java nyelvek között azt jelenti, hogy a Grails nem kell "újra feltalálni a kereket", amikor a kulcsfontosságú belső technológiákról van szó. Ehelyett lehetővé teszi, hogy megismerd a jól ismert Java könyvtárakat a Groovy perspektívából. A JUnit teszt szkriptek, mint például a TestCase, egy Groovy héjban vannak elhelyezve, és GroovyTestCase típusú objektumként vannak ábrázolva. A Grails egy új perspektívát mutatott be az Ant build szkriptjein az Ant GANT változatán keresztül, kizárólag Groovy-ra. Grails helyek Hibernate „vékony” Groovy-homlokzat, az úgynevezett GORM (Grails Objektum relációs leképezés - Grails bővítése objektum-relációs leképezés). Ezek csupán három példa arra, hogy a Grails lehetővé teszi a Java-ban szerzett összes tapasztalat felhasználását, ugyanakkor a modern webfejlesztési technikák előnyeit is biztosítja.
De annak érdekében, hogy teljes mértékben értékeljük a Graileket, először is meg kell ismerni a gyakorlatot. Itt az ideje, hogy telepítsd a Graileket és hozd létre az első webes alkalmazást.
Graillok telepítése
Minden, ami a Grails alkalmazás futtatásához szükséges, egy ZIP-fájlban található. Minden függő könyvtár - Groovy, Spring és Hibernate és még sokan mások - már telepítve van és használatra kész. A Grails telepítéséhez a következőket kell tennie:
- Töltse le és vegye ki a grails.zip archívumot a Grails webhelyről (lásd: Források).
- Állítsa be a GRAILS_HOME környezeti változót.
- Adja hozzá a $ GRAILS_HOME / bin útvonalat a PATH környezeti változóhoz.
Természetesen szükséged lesz a JDK telepített verziójára. (Grails jó, de még mindig nem olyan jó). Grails 1.0 futtatható Java 1.4, 1.5 és 1.6 verzióban. Ha nem tudja, melyik verzió van telepítve, írja be a java -verziót a parancssorba. Szükség esetén töltsön le és telepítsen egy olyan JDK verziót, amely kompatibilis a Grailekkel (lásd: Források).
A telepítési lépések végrehajtása után a parancssorba be kell írnia a "grails -version" -t, hogy ellenőrizze a telepítés helyességét. Ha a következő üdvözlő üzenet jelenik meg, akkor minden rendben van beállítva:
Webkiszolgáló és adatbázis tartalmazza
Ingyenes termékek használata
A jelen cikkben szereplő alkalmazás a webkiszolgálót és az adatbázisot fogja használni, melyeket a Grails-ból díjmentesen szállítanak. A következő cikk lépésről lépésre útmutatást ad a Grails más kiszolgálókon történő indításához. Látogasson el a grails.org weboldalára, és nézze meg a kiváló online dokumentációt (lásd: Források).
Érdekes módon a Grails alkalmazásokhoz nincs szükség külön telepített webkiszolgálóra. A gerendák a beépített servlet konténerrel - Jetty. Érdemes beírni a graal run-app alkalmazást. és az alkalmazás a Jetty tárolóban (lásd Resources) elindul, anélkül, hogy át kellene mennie a szokásos telepítési lépéseken. A Grails alkalmazás futtatása egy meglévő vállalati alkalmazáskiszolgálón sem jelent problémát. Ha begépel a háborút. egy olyan szabványos fájl hozható létre, amely telepíthető a Tomcat, a JBoss, a Geronimo, a WebSphere® vagy bármely más servlet tárolóra, amely kompatibilis a Java EE 2.4-vel.
Továbbá nincs szükség külön telepített adatbázisra. Grails jön a HSQLDB adatbázis (lásd Resources), teljesen írt Java. A már használatra kész adatbázis elérhetősége jelentősen növeli a termelékenységet. Használjon másik adatbázisban például, MySQL, PostgreSQL, Oracle Database vagy DB2 is könnyen köszönhetően a Hibernate és GORM. Ha van egy JAR-fájl kapcsolatos JDBC-illesztőprogram és a beállítások normál kapcsolat, egyetlen változás, amit meg kell fizetni DataSource.groovy fájl változtatni az alkalmazás használni egy másik adatbázisba.
Az első Grails alkalmazás létrehozása
Sokat utaznom kell - legalább 40 utazás évente. Megállapítottam, hogy a naptárak sokat segítenek nekem mondani, mikor kell valahol, de nem azt mondják, hol van ez a hely. Az online kártyáknak ellentétes problémája van: nagyszerű munkát végeznek a "hol" kérdéssel, de nem a "mikor" kérdéssel. Ezért ebben a sorozatban és néhány további cikkben egy speciális Grails alkalmazás készül, amely segít megoldani a "hol" és a "mikor" kérdéseket az utazás tervezésekor.
Legyen óvatos, spoiler!
Először be kell írnia az üres könyvtárat, és be kell írnia a create-app trip-planner parancsot. Flash aktivitás után láthatja az útikönyvek könyvtárát. Mint a Maven, a Rails és az AppFuse, a Grails szabványos könyvtárstruktúrát hoz létre a felhasználó számára. Ha úgy tűnik számodra, hogy reménytelenül korlátozza önt, és lehetetlen az infrastruktúrával együttműködni, ha nem tudod létrehozni a saját könyvtárat pedánsan, akkor valószínűleg nem fog sok örömmel dolgozni a Grailekkel. Megállapodás. a "konfigurációs megállapodás" első összetevője lehetővé teszi, hogy bármely Grails alkalmazást el lehessen érteni, és azonnal megértse, mely elemek állnak rendelkezésre, és hol vannak tárolva.
Ezután menj az úttervező könyvtárba, és írd be a parancsot a create-domain-class Trip létrehozásához. Ha minden jól megy, nem lesz két fájlt: grails-app / domain / Trip.groovy és grails-app / test / integráció / TripTests.groovy. A tesztelést a következő cikkben tárgyaljuk. Addig is fókuszáljon a kezdő domainosztályra, amint az az 1. listán látható:
Listázás 1. A Grails által generált tartományi osztály
Bár nincs semmi, amit megvizsgálhatunk, a mezők hozzáadásával javítjuk ki a Trip osztályba. amint azt a 2. jegyzék mutatja:
Listázás 2. Utazási osztály hozzáadott mezőkkel
Mint említettük, nem kell aggódnod a get () és a set () metódusok létrehozásával, mivel a Groovy dinamikusan generál. A Trip osztály számos új és hasznos dinamikus módszert tartalmaz, amelyek nevei magukért beszélnek:
- A Trip.save () tárolja az adatokat a HSQLDB adatbázisban a Trip táblázatban.
- Az Trip.delete () eltávolítja az adatokat az Útmutató táblázatból.
- A Trip.list () az Trip objektumok listáját adja vissza.
- A Trip.get () egy Trip példányt visz vissza.
Mindezek és más módszerek az Ön rendelkezésére állnak. Ne feledje, hogy az Útvonal osztály nem növeli meg a szülőosztályt, és nem hajtja végre a "mágikus" felületet. A Groovy metaprogramozás képességeinek köszönhetően ezek a módszerek egyszerűen a megfelelő osztályok megfelelő helyén jelennek meg. (Az adatok adatbázisba történő mentéséhez kapcsolódó módszerek csak az osztályokat a grails-app / domain könyvtárban kapják meg).
Vezérlő és nézetek létrehozása
Egy domain domain létrehozása csak az első lépés. Minden modellhez jó vezérlő és többféle típus szükséges a kép elkészítéséhez. Feltételezzük, hogy az olvasó már ismeri az MVC (Model-View-Controller) sablont (lásd Resources). A parancssorba írja be a következőt: grails generate-all Trip. létrehozni a grails-app / vezérlőket / TripController.groovy osztályt és a megfelelő GSP-oldalak (Groovy Server Pages - Groovy szerver oldalak) a grails-app / views / Trip könyvtárban. Minden egyes listatípusra a vezérlőben végrehajtott művelethez tartozik egy megfelelő list.gsp fájl. Van egy create.gsp fájl a létrehozási művelethez. Itt a gyakorlatban láthatóvá válnak a "konfigurációs megállapodás" előnyei: nincs szükség XML fájlokra az elemek levelezésének megállapításához. Minden tartományosztálynak van egy párja a megfelelő névvel rendelkező vezérlő formájában. Kívánság szerint ez a névkonfiguráció kijátszható, de a legtöbb esetben elég csak követni a megállapodást, és az alkalmazás azonnal működni fog.
Tekintsük a file grails-app / controller / TripController.groovy fájlt a 3. listában:
Listázás 3. Az TripController osztály
Tehát hol van a HashMap-gyűjtemény gyűjteménye? Tekintsük a file grails-app / views / list.gsp fájlt a 4. listában:
Listing 4. A file list.gsp
A list.gsp fájl lényegében egy egyszerű HTML dokumentum, kis mennyiségű GroovyTagLibs (Groovy-tag könyvtár). Minden az előtag előtt g. egy Groovy tag. A 4. listában a címke
Annak érdekében, hogy megértsük, hogyan működnek a vezérlők, meg kell oldani a "három R" -ot: visszatérés, átirányítás és renderelés. Bizonyos típusú tevékenységek kihasználják az implicit kifejezés visszatérését. visszaadni az adatokat egy azonos nevű GSP-oldalra. Más műveletek átirányítást végeznek. Például egy indexműveletet hívunk meg, ha a felhasználó nem határozta meg a művelet típusát az URL-ben:
Ebben az esetben az TripController osztály átirányítja a listát. minden paraméter (vagy QueryString típusú objektum (lekérdezési karakterlánc)) átadása a HashMap típusú paramétgyűjteményben.
Végül a mentési művelet (lásd: 5. lista) nem rendelkezik megfelelő save.gsp oldalon. Átirányítja a felhasználót a bemutató műveleti oldalára. ha a rekord hiba nélkül mentésre került az adatbázisba. Ellenkező esetben megjelenik a create.gsp oldal, ahol láthatja a hibákat, és megpróbálja végrehajtani a műveletet.
Listázás 5. Mentési művelet
Azonban ahelyett, hogy megvitatták volna, hogyan működik a Grails, érdemes megnézni azt a cselekvésben.
Futtató alkalmazás
Írja be a parancsot a parancsfájl futtatásához. Miután beírta a Log4J üzenetet a konzolba, megjelenik egy üzenet a következő szöveggel:
Ha a már futó kiszolgáló már a 8080-as porton található, a rendszermag-dump megjelenik az üzenet hibájából:
Két lehetőség van arra, hogy egyszerűen megváltoztassa azt a portot, amelyen a Jetty fut. Ezt a változást szó szerint lebonyolíthatja a parancssorok - Dserver.port = 9090 run-app parancs beírásával. Ha ezt a változást állandóvá szeretné tenni, akkor meg kell találnia a sort a $ GRAILS_HOME /scripts/Init.groovy fájlban, amely a kiszolgálóporttal kezdődik. és változtassa meg az értékét:
Miután a Grails elindult a kiválasztott porton, beírhatja az URL-t a webböngészőbe. Egy üdvözlő oldal jelenik meg az összes vezérlő listájával, amint az az 1. ábrán látható:
1. ábra: Graal alkalmazások üdvözlőképernyője
Ezután kattintson az TripController linkre. és teljes CRUD alkalmazással (létrehozása, olvasása, frissítése, törlése - létrehozása, olvasása, frissítése, törlése) fog megjelenni, amelyekkel már dolgozhat.
Új utakat hoz létre a 2. ábrán látható oldalon:
2. ábra: Trip oldal létrehozása
A kirándulások szerkesztése a 3. ábrán látható oldalon történik:
3. ábra: Az utazási lista oldal
Szóval mennyi időbe telt az alkalmazás létrehozása és futtatása? És hány sornyi kódot vett ehhez? Erről a következő módon tájékozódhat:
- Nyomja meg a Ctrl-C gombot a Grails kikapcsolásához.
- Adja meg a grail statisztikát.
A képernyőn a következő adatok kerülnek kinyomtatásra:
Az alkalmazás teljes funkcionalitásának megvalósításához kevesebb, mint 100 sornyi kódot vett igénybe. Nem rossz, de a cikk vége előtt szeretnék bemutatni egy további lehetőséget a Grailek számára.
A vezérlő és a nézetek létrehozása nagyszerű feladat, és a fizikai fájlok jelenléte a lemezen azt mutatja, hogy az összes részlet hogyan kapcsolódik egymáshoz. Távolítsuk el azonban az TripController osztály tartalmát, és helyezzük el a következő tartalommal:
Ez a kód egyetlen sorában azt mondja a Grailsnek, hogy ugyanazt csinálják, mint a korábbi vezérlővel, egy kivétellel: minden lista műveletet generál. mentheti és szerkesztheti dinamikusan - közvetlenül a memóriában futás közben. A 66-os helyett három sornyi vonal ugyanazt az alkalmazási viselkedést eredményezi.
Ismét írja be a grail fut-app. Igen, minden bevitt adat elment, de nem ijesztő. Kapcsolja ki a Grails elemet a Ctrl-C billentyű lenyomásával, és írja be a parancssorba a prod fut alkalmazást. Az alkalmazás elindul az üzemmódban, ami azt jelenti, hogy az adatok a kiszolgáló újraindítása között kerülnek mentésre. Ismét megy át a TripController-en, és mentse el néhány bejegyzést. Az alkalmazás viselkedésében nincs sok különbség. Megérteni, hogy minden, amit a webböngészőben 15 sornyi kód ad meg, a Grails teljesítményéről és lehetőségeiről gondoskodik.
következtetés
Remélem élveztétek az első bevezetést a Grails-ban. Ebben a kis csomagban hatalmas lehetőségek vannak csomagolva, és csak kinyitottuk a kagylót. Az infrastruktúra telepítése alig volt több erőfeszítés, mint egyszerűen az archívum kicsomagolása. Az alkalmazás létrehozása nulláról néhány parancsra volt szükség. Remélem, hogy ez a felülvizsgálati túra felmelegítette az olvasó Graill érdeklődését. Remélem, hogy megalapozta ennek a példanek a további bővítését, és új érdekes irányokat mutatott rám.
Időközben ajánlom a Groovy és a Grails gyakorlását, és biztosíthatom Önöket, hogy a webfejlesztésről alkotott nézetei radikálisan megváltoznak.