Lucrul cu grails Crearea primei aplicații grail

Acest conținut face parte din seria: Lucrul cu Grails

Aveți grijă de articole noi din această serie.

Voi începe introducerea în Grails cu o altă infrastructură gratuită pentru dezvoltarea aplicațiilor Web: Ruby on Rails. Când a apărut Rails, a dus pe mulți dezvoltatori. Schemele de schelă, încorporate în Rails, au permis lansarea unui nou proiect în mai puțin timp decât înainte. Ideea de „configurare a acordurilor“ (convenția asupra configurației), care stau la baza Rails, permite o cerere de a „colecta“ ei înșiși cel mai mult, pe baza schema de numire rezonabilă, mai degrabă decât greoaie și predispuse la erori de configurare XML-fișiere. Oportunitati Ruby metaprogramare permite obiecte „magic“ a moșteni metodele și domeniile care au nevoie în timpul funcționării, fără a dezorganiza codul sursă.







Infrastructura Rails merită și merită totuși aprobarea pe care a primit-o, dar pune dezvoltatorii Java înaintea întrebărilor dificile. Ar trebui să renunț la platforma Java binecunoscută din cauza promisiunilor noii platforme? Și cum rămâne codul Java existent, serverele enterprise existente și personalul programatorilor Java cu experiență?

Despre această serie de articole

Grails este o infrastructură modernă pentru dezvoltarea de aplicații web care combină bine-cunoscute tehnologii Java, cum ar fi Spring și Hibernate, cu tehnici moderne, cum ar fi "acordul de configurare". Scris pe Groovy, Grails se integrează perfect cu codul Java existent, adăugând flexibilitate și dinamică limbajelor de scripting. După ce studiați Grails, opiniile dvs. privind dezvoltarea aplicațiilor Web se vor schimba irevocabil.

Aici vine pe scenă Grails. Grails oferă aceleași capacități de dezvoltare ca Rails, menținând în același timp o legătură puternică cu tehnologiile Java dovedite. Dar Grails nu este doar o altă "clonă" a lui Rails, portată pe platforma Java. Grails a învățat lecțiile învățate în Rails și le-a combinat cu tendințele moderne în programarea Java. Aceasta este mai mult dezvoltarea Rails decât doar un transfer către o nouă platformă.

Caracteristici groove

Așa cum Rails este profund atașat limbajului de programare Ruby, Grails nu poate exista fără capabilitățile lui Groovy (a se vedea Resursele). Groovy este un limbaj dinamic care rulează în JVM și se integrează perfect cu limbajul Java. Dacă ați citit ciclul de mai mulți ani al articolelor Groovy practic de pe site-ul web developerWorks, sunteți deja familiarizat cu capabilitățile acestei limbi. Dacă nu, atunci nimic serios, în procesul de a studia Graile va trebui să învețe multe despre Groovy. Acest lucru nu ar trebui să fie dificil, deoarece Groovy a fost conceput special pentru a apela la dezvoltatorii Java.

De exemplu, Groovy vă permite să reduceți semnificativ cantitatea de cod Java pe care o scrieți de obicei. Nu este nevoie să scrieți și să setați metode pentru a accesa câmpurile, deoarece Groovy le oferă automat. Nu este nevoie să scrieți constructe de tip pentru Iterator i = list.iterator () pentru a efectua o buclă pe lista elementelor; Constructul list.each face același lucru mai concis și grafic. Pur și simplu, Groovy este ceea ce ar arăta limba Java dacă ar fi scrisă în secolul douăzeci și unu.

Groovy nu ar fi atras Java-programatori, deși, pentru a profita de ea, a trebuit să rescrie complet aplicații. Din fericire, Groovy se integrează în mod transparent cu codul existent. Limba Groovy nu înlocuiește limba Java, ci o îmbunătățește. Groovy poate fi învățat rapid într-o zi, deoarece codul Groovy este cod Java. Aceste două limbi sunt atât de consistente încât să puteți redenumi un fișier .java de lucru în fișierul .groovy (de exemplu, redenumiți fișierul Person.java Person.groovy), și a obține absolut corectă (și executabil) fișier Groovy, deși nu va folosi nici o sintaxă beneficiile oferite de Groovy.

O astfel de compatibilitate profundă între limbile Groovy și Java înseamnă că Grails nu trebuie să "reinventeze roata" când vine vorba de tehnologiile interne cheie. În schimb, vă permite să vă uitați la bibliotecile Java cunoscute din perspectiva Groovy. Scripturile de testare JUnit precum TestCase sunt închise într-o coajă Groovy și sunt reprezentate ca obiecte de tip GroovyTestCase. Grails introduce o nouă perspectivă asupra script-urilor de construcție Ant prin versiunea GANT a lui Ant, implementată exclusiv pe Groovy. Graile plasează Hibernate pentru o fațadă Groovy "subțire numită GORM (extensie Grails Object Relational Mapping - Grails pentru cartografiere obiect-relațională). Acestea sunt doar trei exemple ale modului în care Grails face posibilă utilizarea întregii experiențe dobândite în Java oferind în același timp avantajele tehnicilor de dezvoltare web moderne.

Dar, pentru a aprecia pe deplin Graile, este necesar să ne cunoaștem în practică. Este timpul să instalați Grails și să creați prima aplicație Web.

Instalarea Grails

Tot ceea ce este necesar pentru a rula aplicația Grails este inclus într-un singur fișier ZIP. Toate bibliotecile dependente - Groovy, Spring și Hibernate și multe altele - sunt deja instalate și gata de utilizare. Pentru a instala Grails, trebuie:

  1. Descărcați și dezarhivați arhiva grails.zip de pe site-ul Web Grails (consultați Resurse).
  2. Setați variabila de mediu GRAILS_HOME.
  3. Adăugați calea $ GRAILS_HOME / bin la variabila de mediu PATH.

Desigur, trebuie să aveți o versiune instalată a JDK. (Graile este bun, dar încă nu este așa de bun). Grails 1.0 poate fi rulat pe Java 1.4, 1.5 și 1.6. Dacă nu știți ce versiune este instalată, introduceți java -version pe linia de comandă. Dacă este necesar, descărcați și instalați o versiune JDK compatibilă cu Grails (consultați Resurse).

După efectuarea pașilor de instalare, trebuie să tastați grails -version pe linia de comandă pentru a verifica dacă instalarea este corectă. Dacă este afișat următorul mesaj de întâmpinare, totul este configurat corect:

Web server și baze de date incluse

Utilizarea produselor gratuite

Aplicația din acest articol va utiliza serverul Web și baza de date, care sunt livrate gratuit de la Grails. Următorul articol va oferi instrucțiuni pas cu pas pentru pornirea Grails pe alte servere. De asemenea, puteți vizita site-ul grails.org și puteți vedea documentația online excelentă (consultați Resurse).

Interesant este că aplicațiile Grails nu necesită un server Web instalat separat. Graile vânează cu containerul său de servlet încorporat - Jetty. Este suficient să introduceți run-app-urile grails. iar aplicația va fi lansată în containerul Jetty (consultați Resursele) fără a trebui să parcurgeți pașii de instalare obișnuiți. Executarea unei aplicații Grails pe un server de aplicații enterprise existent nu prezintă nici o problemă. Dacă spui războiul de grajduri. va fi creat un fișier standard care poate fi instalat pe Tomcat, JBoss, Geronimo, WebSphere® sau orice alt container de servlet care este compatibil cu Java EE 2.4.

De asemenea, nu este necesară o bază de date separată instalată. Grails vine cu baza de date HSQLDB (a se vedea Resurse), scrisă integral în Java. Disponibilitatea unei baze de date deja gata de utilizare oferă o creștere semnificativă a productivității. Utilizați un alt DBMS, de exemplu, MySQL, PostgreSQL, Oracle Database sau DB2 este de asemenea ușor datorită Hibernate și GORM. Dacă există un fișier JAR cu un driver JDBC și setări pentru conexiunea standard, atunci este suficient să faceți o modificare a fișierului DataSource.groovy pentru a comuta aplicația pentru a utiliza o altă bază de date.







Crearea primei aplicații Grails

Trebuie să călătoresc foarte mult - cel puțin 40 de călătorii pe an. Am aflat că calendarele mă ajută foarte mult, spunându-mi când trebuie să fiu undeva, dar nu spun unde este locul ăsta. Cardurile online au o problemă contrară: fac o treabă minunată cu întrebarea "unde", dar nu cu întrebarea "când". Prin urmare, în acest și în câteva articole ulterioare din această serie, va fi pregătită o aplicație specială Grails care va ajuta la rezolvarea întrebărilor "unde" și "când" atunci când planificați o excursie.

Fii atent, spoiler!

Mai întâi, trebuie să introduceți directorul gol și să introduceți comanda grails create-app trip-planner. După o scurtă activitate, puteți vedea directorul planificator de excursii. Ca Maven, Rails și AppFuse, Grails creează o structură de directoare pentru utilizator. Dacă vă pare că vă limitează fără speranță și este imposibil să lucrați cu infrastructura, dacă nu vă puteți crea propriul copac de director pedantic, atunci cu siguranță nu veți avea plăcere să lucrați cu Grails. Acord. prima componentă a principiului "acordului de configurare" vă permite să luați orice aplicație Grails și să înțelegeți imediat ce componente sunt disponibile și unde sunt stocate.

Apoi, mergeți la directorul trip-planner și introduceți comanda grails create-domain-class Trip. Dacă totul merge bine, vor apărea două fișiere: grails-app / domain / Trip.groovy și grails-app / test / integration / TripTests.groovy. Testarea va fi discutată în următorul articol. Între timp, concentrați-vă asupra clasei de domenii care începe, așa cum se arată în Lista 1:

Listing 1. Clasa de domenii generată de Grails

Deși nu trebuie să ne uităm la nimic, o vom remedia adăugând câmpuri la clasa Trip. după cum se arată în Lista 2:

Listing 2. Trip class cu câmpuri adăugate

După cum am menționat deja, nu trebuie să vă faceți griji cu privire la crearea metodelor get () și set (), deoarece Groovy le va genera dinamic. Clasa Trip conține, de asemenea, multe metode dinamice noi și utile, ale căror nume vorbesc de la sine:

  • Trip.save () stochează datele din tabelul Trip în baza de date HSQLDB.
  • Trip.delete () elimină datele din tabelul Trip.
  • Trip.list () returnează o listă de obiecte Trip.
  • Trip.get () returnează o instanță Trip.

Toate aceste metode și alte metode sunt la dispoziția dumneavoastră. Rețineți că clasa Trip nu extinde clasa parentală și nu implementează interfața "magic". Datorită capabilităților metroprogramării Groovy, aceste metode apar pur și simplu în locul corespunzător în clasele corespunzătoare. (Aceste metode asociate cu salvarea datelor în baza de date primesc doar clasele în directorul grails-app / domain).

Crearea controlerului și a vizualizărilor

Crearea unei clase pentru un domeniu este doar primul pas. Fiecare model necesită un controler bun și mai multe tipuri pentru a completa imaginea. Se presupune că cititorul este deja familiarizat cu șablonul MVC (Model-View-Controller) (a se vedea resursele). În linia de comandă, tastați: grails generate-all Trip. pentru a crea clasa Grails-app / controllers / TripController.groovy și setul corespunzător de pagini GSP (pagini server Groovy - pagini de server Groovy) în directorul grails-app / views / Trip. Pentru fiecare acțiune de tip listă din controler, există un fișier list.gsp corespunzător. Există un fișier create.gsp pentru acțiunea de creare. Aici, în practică, avantajele "acordului de configurare" devin vizibile: nu sunt necesare fișiere XML pentru a stabili corespondența elementelor. Fiecare clasă de domeniu are o pereche sub forma unui controler cu numele corespunzător. Dacă se dorește, această configurație bazată pe nume poate fi eludată, însă în cele mai multe situații este suficient doar să urmați acordul, iar aplicația va funcționa imediat.

Luați în considerare fișierul grails-app / controller / TripController.groovy, afișat în listare 3:

Listarea 3. Clasa TripController

De unde este folosită această colecție de tip HashMap? Luați în considerare fișierul grails-app / views / list.gsp, afișat în Lista 4:

Listing 4. Fișierul list.gsp

Fișierul list.gsp este în esență un document HTML simplu, cu o cantitate mică de GroovyTagLibs (biblioteci Groovy-tag). Totul înainte de prefixul g. este o etichetă Groovy. În lista 4, eticheta trece prin toate obiectele Trip din colecția tripList de tip ArrayList și construiește o tabelă corespunzătoare sintaxei HTML.

Pentru a înțelege cum funcționează controlerele, este necesar să se rezolve problemele cu "trei R": retur, redirecționare și randare. Unele tipuri de acțiuni profită de returnarea implicită a expresiei. pentru a returna datele pe o pagină GSP cu același nume. Alte acțiuni efectuează redirecționare. De exemplu, se solicită o acțiune index dacă utilizatorul nu a specificat tipul de acțiune în URL:

În acest caz, clasa TripController redirecționează acțiunea din listă. trecând toți parametrii (sau un obiect de tip QueryString (șir de interogare)) din colecția de paramuri de tip HashMap.

În cele din urmă, acțiunea de salvare (a se vedea Lista 5) nu are pagina save.gsp corespunzătoare. Redirectează utilizatorul la pagina de acțiune a spectacolului. dacă înregistrarea a fost salvată în baza de date fără erori. În caz contrar, afișează pagina create.gsp, unde puteți vedea erorile care au apărut și încercați din nou să executați acțiunea.

Afișare 5. O acțiune de salvare

Cu toate acestea, în loc să discutăm despre felul în care funcționează Grails, merită să îl vedeți în acțiune.

O aplicație care rulează

Porniți aplicația grails run-app la promptul de comandă. După introducerea mesajelor Log4J în consola, trebuie afișat un mesaj cu textul următor:

Dacă serverul deja rulat este deja pe portul 8080, memoria de kernel va fi afișată ca urmare a eșecului cu mesajul:

Există două moduri de a schimba cu ușurință portul pe care rulează Jetty. Puteți face această schimbare literalmente în zbor prin tastarea comenzii grails -Dserver.port = 9090 run-app. Pentru a face această schimbare permanentă, trebuie să găsiți linia din fișierul $ GRAILS_HOME /scripts/Init.groovy care începe cu serverPort. și să își schimbe valoarea:

După ce Grails a fost lansat pe portul selectat, puteți introduce adresa URL în browserul Web. Trebuie să apară o pagină de întâmpinare cu o listă a tuturor controlorilor, după cum se arată în Figura 1:

Figura 1. Ecran de întâmpinare a aplicației Grails

Lucrul cu grails Crearea primei aplicații grail

Lucrul cu grails Crearea primei aplicații grail

Apoi faceți clic pe linkul TripController. și veți primi o aplicație completă CRUD (Creare, Citire, Actualizare, Ștergere - pentru a crea, citi, actualiza, șterge), cu care puteți lucra deja.

Excursii noi sunt create utilizând pagina prezentată în Figura 2:

Figura 2. Crearea paginii de călătorie

Lucrul cu grails Crearea primei aplicații grail

Lucrul cu grails Crearea primei aplicații grail

Modificările călătoriilor se efectuează utilizând pagina prezentată în Figura 3:

Figura 3. Pagina cu lista de călătorii

Lucrul cu grails Crearea primei aplicații grail

Lucrul cu grails Crearea primei aplicații grail

Deci, cât a durat până a creat și rula aplicația? Și câte linii de cod au făcut pentru asta? Puteți afla acest lucru în felul următor:

  1. Apăsați Ctrl-C pentru a dezactiva Grails.
  2. Introduceți statisticile despre grajduri.

Următoarele date vor fi tipărite pe ecran:

Mai puțin de 100 de linii de cod au fost necesare pentru a implementa întreaga funcționalitate a aplicației. Nu este rău, dar înainte de sfârșitul articolului aș vrea să demonstrez încă o posibilitate a Graalilor.

Generarea controlerului și a vizualizărilor este un exercițiu excelent, iar prezența fișierelor fizice pe disc ilustrează modul în care sunt legate toate detaliile. Cu toate acestea, să ștergem conținutul clasei TripController și să o înlocuim cu următorul conținut:

Această singură linie de cod îi spune lui Grails să facă același lucru făcut cu controlerul anterior, cu o excepție: să genereze toate acțiunile din listă. salvați și editați dinamic - chiar în memorie în timpul rulării. Trei linii de cod în loc de 66 conduc la absolut același comportament de aplicație.

Din nou, tastați grails run-app. Da, toate datele introduse au dispărut, dar nu este înfricoșător. Dezactivați Grails apăsând pe Ctrl-C și tastați grails prod run-app la promptul de comandă. Aplicația va fi pornită în modul de operare, ceea ce înseamnă că datele vor fi salvate între repornirea serverului. Din nou, treceți prin TripController și salvați câteva intrări. În comportamentul aplicației, nu este o mare diferență. Înțelegând că tot ceea ce este afișat în browserul Web este furnizat de 15 linii de cod, oferă o idee despre puterea și capacitățile Grails.

concluzie

Sper că ți-a plăcut prima introducere la Grails. În acest pachet mic, oportunități uriașe sunt împachetate și tocmai am deschis cochilia. Instalarea infrastructurii a necesitat mai mult efort decât să despacheteze arhiva. Crearea unei aplicații de la zero necesită câteva comenzi. Sper că acest turneu de recenzie a încălzit interesul cititorului în Grails. Sper că a pus temelia pentru extinderea în continuare a acestui exemplu și a subliniat noi direcții interesante.

Între timp, vă recomand să practicați cu Groovy și Grails și vă asigur că opiniile dvs. asupra dezvoltării Web se vor schimba radical.

Descărcați resurse

Subiecte conexe







Articole similare

Trimiteți-le prietenilor: