Este documento presenta una introducción a Grails. Explica brevemente qué es Groovy y sus características principales como lenguaje dinámico inspirado en Ruby y Python. Luego define Grails como un framework para desarrollo web basado en Groovy y Spring que elimina la necesidad de XML mediante convenciones sobre configuración. Finalmente, resume los principales componentes de Grails como controladores, vistas, taglibs, GORM para el acceso a datos y servicios.
5. Introducción a Grails
5
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
6. Introducción a Grails
6
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
OOP
puro
7. Introducción a Grails
7
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
OOP
puro
Closures,
Gstrings,
Builders,
DSL
8. Introducción a Grails
8
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
OOP
puro
Closures,
Gstrings,
Builders,
DSL
No
compile
type-‐checking
9. Introducción a Grails
9
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
OOP
puro
Closures,
Gstrings,
Builders,
DSL
No
compile
type-‐checking
Más
lento
que
Java
10. Introducción a Grails
10
HelloWorld.java
public class HelloWorld {
public static void main(String args[]) {
HelloWorld hw = new HelloWorld();
hw.setNombre("Groovy");
System.out.println(hw.saluda());
}
String nombre;
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
public String saluda() { return "Hola "+ nombre; }
}
11. Introducción a Grails
11
HelloWorld.groovy
public class HelloWorld {
public static void main(String args[]) {
HelloWorld hw = new HelloWorld();
hw.setNombre("Groovy");
System.out.println(hw.saluda());
}
String nombre;
public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
public String saluda() { return "Hola "+ nombre; }
}
12. Introducción a Grails
12
HelloWorld.groovy
class HelloWorld {
static void main(String args[]) {
HelloWorld hw = new HelloWorld();
hw.setNombre("Groovy");
System.out.println(hw.saluda());
}
String nombre;
String getNombre() { return nombre; }
void setNombre(String nombre) { this.nombre = nombre; }
String saluda() { return "Hola "+ nombre; }
}
Public
por
defecto
13. Introducción a Grails
13
HelloWorld.groovy
class HelloWorld {
static void main(String args[]) {
HelloWorld hw = new HelloWorld()
hw.setNombre("Groovy”)
System.out.println(hw.saluda())
}
String nombre
String getNombre() { return nombre }
void setNombre(String nombre) { this.nombre = nombre }
String saluda() { return "Hola "+ nombre }
}
;
opcionales
14. Introducción a Grails
14
HelloWorld.groovy
class HelloWorld {
static void main(String args[]) {
HelloWorld hw = new HelloWorld()
hw.setNombre("Groovy”)
System.out.println(hw.saluda())
}
String nombre
String saluda() { return "Hola "+ nombre }
}
Geers
y
seers
autogenerados
15. Introducción a Grails
15
HelloWorld.groovy
class HelloWorld {
static main(args) {
HelloWorld hw = new HelloWorld()
hw.setNombre("Groovy”)
System.out.println(hw.saluda())
}
String nombre
def saluda() { "Hola "+ nombre }
}
No
hace
falta
especificar
Gpo
ni
return
16. Introducción a Grails
16
HelloWorld.groovy
class HelloWorld {
static main(args) {
HelloWorld hw = new HelloWorld()
hw.setNombre("Groovy")
System.out.println(hw.saluda())
}
String nombre
def saluda() { "Hola ${nombre}" }
}
GStrings
17. Introducción a Grails
17
HelloWorld.groovy
class HelloWorld {
String nombre
def saluda() { "Hola ${nombre}" }
}
HelloWorld hw = new HelloWorld()
hw.setNombre("Groovy")
println hw.saluda()
Scripts,
println
18. Introducción a Grails
18
HelloWorld.groovy
class HelloWorld {
String nombre
def saluda() { "Hola ${nombre}" }
}
HelloWorld hw = new HelloWorld()
hw.setNombre("Groovy")
hw.nombre = "Groovy” // atributo
hw["nombre"] = "Groovy” // como array
HelloWorld hw = new HelloWorld(nombre: "Groovy")
POJOs
19. Introducción a Grails
19
Colecciones
Map map = new HashMap();
map.put(“clave”, “valor”);
def map = [clave: “valor”]
21. Introducción a Grails
21
Colecciones
Map map = new HashMap();
map.put(“clave”, “valor”);
map.get(“clave”);
List list = new ArrayList();
list.add(“primero”);
list.add(“segundo”);
def map = [clave: “valor”]
map.clave
map[“clave”]
def list = [“primero”]
list << “segundo”
22. Introducción a Grails
22
Colecciones
List list = new ArrayList();
list.add(“primero”);
list.add(“segundo”);
List otra = new ArrayList();
otra.add(“tercero”);
List suma = new ArrayList();
suma.addAll(list);
suma.addAll(otra);
def list = [“primero”,”segundo”]
def otra = [“tercero”]
def suma = list + otra
23. Introducción a Grails
23
Iteraciones
for (String s : list) {
System.out.println(s);
}
list.each { String s ->
println s
}
24. Introducción a Grails
24
Iteraciones
for (String s : list) {
System.out.println(s);
}
for (int n=1;n<6;n++) {
System.out.println(n);
}
list.each { String s ->
println s
}
1.upto 5, { String s ->
println s
}
25. Introducción a Grails
25
Iteraciones
Curso c = new Curso();
c.setNombre(“Groovy”);
...
List cursos = new ArrayList();
cursos.add(c);
...
List nombres = new ArrayList();
For (Curso c : cursos) {
nombres.add(c.getNombre();
}
def cursos =
[new Curso(nombre:”Groovy”),
new Curso(nombre:”Grails”)]
def nombres = cursos*.nombre
28. Introducción a Grails
28
¿Qué
es
Grails?
Groovy
sobre
Spring
No
es
una
librería
CoC
-‐>
No
XML
29. Introducción a Grails
29
¿Qué
es
Grails?
Groovy
sobre
Spring
No
es
una
librería
CoC
-‐>
No
XML
Stack
completo
preconfigurado:
Hibernate,
Spring,
Sitemesh,
Quartz,
JUnit
30. Introducción a Grails
30
¿Qué
es
Grails?
Groovy
sobre
Spring
No
es
una
librería
CoC
-‐>
No
XML
Stack
completo
preconfigurado:
Hibernate,
Spring,
Sitemesh,
Quartz,
JUnit
TesGng
31. Introducción a Grails
31
¿Qué
es
Grails?
Groovy
sobre
Spring
No
es
una
librería
CoC
-‐>
No
XML
Stack
completo
preconfigurado:
Hibernate,
Spring,
Sitemesh,
Quartz,
JUnit
TesGng
Extensible:
plugins
32. Introducción a Grails
32
Prác?ca
1
Instalación
Comandos
grails
help
grails
create-‐app
grails
run-‐app
grails
war