FANDOM


Groovy-grails-logo.png

Quelle: http://www.springsource.com/files/images/groovy-grails-logo.png

Dieses Wiki dient zur Orientierung und Einarbeitung in Groovy & Grails für das Projektteam der Fh- Stralsund[1] im Auftrag der Adesso AG [2].


Grundlagen

Groovy & Grails (G&G) [grails.org] soll in diesem Projekt dazu verwendet werden neue bzw. einfachere Wege für die Umsetzung von Web- Applikationen für die Adesso AG[3] zu erschließen. Bei der Umsetzung einer vordefinierten Aufgabe aus einem realen Pflichtenheft sollen nun die Unterscheide zwischen dem komplizierten und Umfangreicheren JEE [4] und dem einfacheren G&G [grails.org] entwickelt und ausgearbeitet werden. Durch die definierte Anforderung soll so schnell klar werden wo G&G [grails.org] Vorteile bzw. Nachteile bietet. Das Hauptaugenmerk der Adesso Ag [5] liegt hierbei auf kleiner Web- Applikationen umso eventuelle Kundenwünsche schneller umsetzen bzw. Ressourcen einsparen zu können.

Installation

Standalone

Installation von dem Standalone [6]

Eclipse

Das Plugin für Eclipse von G&G [7]

NetBeans

zum Download [8]

hier bei muss eine weitere Datei eingebunden werden sofern man ein neues G&G Projekt anlegt, unter "Configure Grails" => "Grails Home" => den/Pfad/zur/Datei/grails-2.0.1 [9].

Erste Schritte

Musikdatenbank

Dieser Abschnitt beschäftigt sich mit der Erstellung einer kleiner Beispielanwendung. In dieser wird eine Einstieg in Groovy & Grails beschrieben. Dieses HowTo ist Bestandteil des Buchs "Grails 1.2 - Das produktive Web-Framework für die Java-Plattform" [10] von den Autoren Graeme Rocher, Jeff Brown und der Fachkorrektur von Marc-Oliver Scheele.

Was sind die Ziele von Grails?

Das wichtigste Ziel von Grails ist die Enterprise-Java-Webentwicklung zu entschlacken und zu vereinfachen. Somit wird die Webentwicklung auf die nächst höhere Abstraktionsebene gehoben.

Simplizität und Performance

Grails greift auf bewährte Frameworks zurück. Somit liefert es arbeitserleichternde Funktionen und verliert dadurch kaum an Robustheit. Auf folgende Open-Source Technologien basiert Grails:

  • Hibernate [11] : Standard für Objekt-relationales Mapping (ORM) in Java
  • Spring [12] : beliebter Inversion of Control Container und Wrapper-Framework für Java
  • SiteMesh [13] : stabiles Layout-Framework
  • Tomcat [14] : weit verbreiteter Servlet-Container
  • HSQLDB [15] : reine Java-Implementierung eines relationalen Datenbankmanagement-Systems


Der Grails-Stack

Grails stack.png

Bild Grails-Stack

Schritt 1: Erstellen des Projekts gTunes in NetBeans



Gästebuch

Tutorial zur Erstellung eines Gästebuches

Das nachfolgende Tutorial zur Erstellung eines Gästebuches bezieht sich auf das Onlinetutorial von Lars Vogel. http://www.vogella.com/articles/Grails/article.html

Umsetzung mittels Konsole

Mindestvoraussetzung für die Umsetzung mittels Konsole:

Das Grails-Framework muss zuerst heruntergeladen werden unter dem folgenden Link. http://grails.org/ Ein aktuelles JDK muss installiert sein und die Umgebungsvariablen auf den entsprechenden Ordner zeigen. Die Erstellung einer Grails-Applikation über die Konsole wird hier nur kurz angerissen. Hierfür ist es notwendig die Umgebungsvariablen in Windows zu definieren. Diese müssen entsprechend angepasst werden. Anpassung der Windows-Umgebungsvariablen:

  • (Computer \ Eigenschaften \ Erweiterte Systemeinstellungen \ Systemvariable hinzufügen (Variable: [GRAILS_HOME] Wert: [Pfad zum Grails-Ordner]))
  •  %GRAILS_HOME%\bin… [Pfad zum Grails-Unterordner bin]
  • Variable: [JAVA_HOME] Wert: [Pfad zum JDK-Ordner]
  •  %JAVA_HOME%\bin;


Nach Abschluss der Voreinstellung kann mit dem Erstellen der Grails-Applikation begonnen werden.

1. Erstellen der Applikation: grails create-app guestbook Hiermit wird auch die URL des Gästebuchs festgelegt.

2. Über den Befehl [grails run-app] wird die Anwendung gestartet und ist dann unter der folgenden URL "http://localhost:8080/guestbook" im Browser erreichbar.

Erstellen über NetBeans

Für eine komfortablere Erstellung bietet es sich die Verwendung einer IDE wie beispielsweise NetBeans an. Für die nachfolgende Umsetzung der Gästebuch-Applikation wird NetBeans 7.1.1 verwendet. Der Vorteil von NetBeans ist das in der verwendeten Version das Groovy-Plugin schon vorhanden ist und das Grails-Framework leicht eingebunden werden kann. Auch für die Verwendung der NetBeans-IDE ist es notwendig das Grails-Framework herunter zu laden. [16]

  • Start der NetBeans-IDE
  • Erstellen eines neuen Projektes
    • File\New Project…
    • als Kategorie wird Groovy ausgewählt
NeuesGroovyProjekt.jpg

Bild NeuesGroovyProjekt


  • Definition des Namens und des Speicherortes.
NeuesGroovyProjekt2.jpg

Bild NeuesGroovyProjekt2


  • Konfiguration der GRAILS_HOME-Variable
NeuesGroovyProjekt3.jpg

Bild NeuesGroovyProjekt3

  • Das Erstellen des Projektes kann nun mit dem Finish-Button abgeschlossen werden.


  • Der erste Start der Applikation:

Mit der rechten Maustaste kann im Projektexplorer das Kontextmenü aufgerufen werden und über den Punkt „Run“ kann die Anwendung gestartet werden.

RunGroovyProjekt1.jpg

Bild RunGroovyProjekt1

Beim ersten Start der Anwendung erscheint eine Kommando-Liste mit diversen Grails-Kommandos. Bei erneutem Start über den Punkt „Run“ wird das gewählte Kommando automatisch ausgeführt. Ist hier eine Anpassung des Kommandos notwendig so kann dies über den Menü-Punkt „Run/Debug Grails Command…“ durchgeführt werden.


RunGroovyProjekt2.jpg

Bild RunGroovyProjekt2

Die gestartete Grails-Applikation ist dann unter der URL "http://localhost:8080/GuestBook/" zu erreichen.


Erstellen des Domain-Modells

Für das Gästebuch werden die Domain-Klassen User, Feedback und Comment benötigt. Zur Erstellung der Domain-Klassen kann einfach im Projekt-Explorer mit einem Rechtsklick auf den Ordner „Domain Classes“ eine neue Klasse erstellt werden. (New\ Grails Domain Class) Es wird hierbei dringen empfohlen nicht das Standard-Package zu verwenden sondern ein explizites zu verwenden. In diesem Fall wird das Package „guestbook“ verwendet.


DomainClass1.jpg

Bild DomainClass1


User-Klasse

package guestbook

class User {
    String name
    String email
    String webpage

    static constraints = {
	name (blank:false, nullable:false, size:3..30, matches:"[a-zA-Z1-9_]+") 
	email (email:true)
	webpage (url:true)
    }
  
    String toString(){
        return name; 
    }
}


Feedback-Klasse

package guestbook

class Feedback {
    String title
    String feedback
    Date dateCreated // Vordefiniert von Grails und wird automatisch gefüllt
    Date lastUpdated // Vordefiniert von Grails und wird automatisch gefüllt

    // Beziehungen zu anderen Klassen
    User user
    static hasMany=[comments:Comment]

    // Contrains statisch definiert
    static constraints = {
        title(blank:false, nullable: false, size:3..80)
        feedback(blank:false, nullable: false, size:3..500)
        user(nullable:false)
    }

}


Comment-Klasse

package guestbook

class Comment {
    String comment
    Date dateCreated // Vordefiniert von Grails und wird automatisch gefüllt
    Date lastUpdated // Vordefiniert von Grails und wird automatisch gefüllt

    User user;
    // Stellt sicher das alle Kommentare zu einem Feedback gelöscht werden, wenn das Feedback gelöscht wird.
    static belongsTo=[feedback:Feedback]

    static constraints = {
	comment (blank:false, nullable: false, size:5..500)
	user (nullable: true) // Kommentare sind auch ohne Nutzer erlaubt.
    }
	
    String toString(){
        if (comment.size()>20){
            return comment.substring(0,19);
        } else 
        return comment; 
    }
}
Automatisches Generieren der Controller

Anschließend werden die jeweiligen Controller der einzelnen Klassen generiert. Hierfür wird mit einem Klick der rechten Maustaste auf die entsprechende Klasse das Kontext-Menu aufgerufen und mittels des Unterpunktes „Generate All“ ausgeführt. NetBeans legt dann den Controller sowie die Views an. Dieser Vorgang muss für alle drei Klassen User, Feedback und Comment durchgeführt werden.

Controller1.jpg

Bild Controller1


Starten des Gästbuch-Projektes

Nach dem die notwendigen Controller der drei Klassen User, Feedback und Comment generiert wurden, kann das Gästebuch als laufende Web-Anwendung gestartet werden. Hierfür wird wie im Vorfeld schon beschrieben mit der rechten Maustaste auf das Gästebuch-Projekt im Projektexplorer geklickt und im Kontextmenu der Befehl "Run" ausgewählt. Im Browser ist dann die Applikation unter der folgenden URL "http://localhost:8080/guestbook" erreichbar.


Die Startseite des Gästebuches zeigt die verfügbaren Controller.

GuestbookApp1.jpg

Contoller-Liste

Unter dem Link des User-Controllers wird eine Liste von gespeicherten Usern angezeigt (sofern vorhanden) und das Anlegen neuer User ermöglicht. Die folgenden Bilder zeigen die Schritte zum Anlegen eines Users. Im Schritt "User anlegen" ist das Textfeld "Name" rot hinterlegt und mit einem Stern versehen. Die zu erfüllenden Bedingungen für einen Namen wurden in der User-Klasse im Bereich "static constraints" definiert. Das Feld darf somit nicht leer bleiben und zwischen 3 und 30 Zeichen enthalten. Die erlaubten Zeichen werden unter "matches" nach dem Whitelist-Prinzip eingegrenzt.

User-Klasse

class User {
    ...

    static constraints = {
	name (blank:false, nullable:false, size:3..30, matches:"[a-zA-Z1-9_]+") 
	...
    }
    ...
}
GuestbookApp6.jpg

Liste enthält den angelegten User

Ähnlich wie das Anlegen eines Users können Feedbacks und Comments angelegt werden, wobei das Anlegen eines Feedbacks nur mit einem vorhandenen User funktioniert. Comments können unabhängig von einem User zu jedem Feedback abgeben werden so wie es jeweils in den "static constrains" festgelegt wurde.





Buchdatenbank

HowToBauAG&GExample [17]

Startseite bearbeiten unter:
Views and Layouts => index.gsp

Bookpage bearbeiten unter:
Views and Layouts => layouts => main.gsp

Bei weiteren Anpassungen müssen die *.css Dateien unter:
Web Application => css => main.css
angepasst werden

Begriffserklärungen:
domain class: Domain classes are the lifeblood of a Grails application. In simple terms,they define the “things” that you are trying to keep track of. Grails takes these simple classes and does quite a bit with them. A corresponding database table is automatically created for each domain class. Controllers and views derive their names from the associated domain class. This is where validation rules are stored, one-to-many relationships are defined, and much much more.

- are little more than “dumb” placeholders for the data

Controllers and views:
Controllers and views round out the “Big Three” in Grails applications. The Model/View/Controller (MVC) pattern is undoubtedly familiar to most web developers. By enforcing a clean separation of concerns among these three elements, your efforts are paid back in terms of maximum flexibility and reuse.<p> Scaffolding: Actually, it’s the code to provide full Create/Read/Update/Delete (CRUD) functionality for the classes. When Grails sees the scaffold property in a controller, it will dynamically generate the controller logic and the necessary views for the specified domain class. All from that one line of code!

G&amp;g001.jpg

Bild G&g001


Das oben zusehende Bild zeigt die Veränderungen die vorgenommen wurden zur Anpassungen der index.gsp und der main.css.
GORM => interne DB [18]

Umsetzung

for(var i=0;i<count.deineMudda;i++){
    if(deineMudda==="FETT"){
       print("HOMOU");
    }elseif(deineMudda==="DICK"){
       print("MONGOU");
    }else{
       print("MILF");
    }
}

RZ: Würde die Schleife in groovy so wirklich funtktionieren? ;)

Letzte Aktivitäten

  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Buchdatenbank
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Starten des Gästbuch-Projektes
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Zusammenfassung: Gästebuch:
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Starten des Gästbuch-Projektes
    Bilder hinzugefügt:
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Starten des Gästbuch-Projektes
    Bild hinzugefügt:
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Automatisches Generieren der Controller
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Zusammenfassung: Starten des Projektes:
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Erstellen des Domain-Modells
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Erstellen über NetBeans
  • Bearbeitet Winfmse Wiki
    bearbeitet von Winfmse diff
    Bearbeitete den Abschnitt: Automatisches Generieren der Controller
    Bild hinzugefügt:

Störung durch Adblocker erkannt!


Wikia ist eine gebührenfreie Seite, die sich durch Werbung finanziert. Benutzer, die Adblocker einsetzen, haben eine modifizierte Ansicht der Seite.

Wikia ist nicht verfügbar, wenn du weitere Modifikationen in dem Adblocker-Programm gemacht hast. Wenn du sie entfernst, dann wird die Seite ohne Probleme geladen.

Auch bei FANDOM

Zufälliges Wiki