1 Introducción a Grails 1
Introducción
a
Grails
14
de
Mayo
de
2010
Por
Alberto
Vilches,
albertovilches.com
Slide 2
Slide 2 text
Introducción a Grails 2
Agenda
¿Qué
es
Groovy?
¿Qué
es
Grails?
Controladores
Vistas
y
taglib
Servicios
Gorm
PracGca
Plugin
acegi
Slide 3
Slide 3 text
Introducción a Grails 3
¿Qué
es
Groovy?
Groovy
es
Java.
Slide 4
Slide 4 text
Introducción a Grails 4
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Slide 5
Slide 5 text
Introducción a Grails 5
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
Slide 6
Slide 6 text
Introducción a Grails 6
¿Qué
es
Groovy?
Groovy
es
Java.
Dinámico
Inspirado
en
Ruby,
Python
y
Smalltalk
OOP
puro
Slide 7
Slide 7 text
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
Slide 8
Slide 8 text
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
Slide 9
Slide 9 text
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
Slide 10
Slide 10 text
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; }
}
Slide 11
Slide 11 text
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; }
}
Slide 12
Slide 12 text
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
Slide 13
Slide 13 text
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
Slide 14
Slide 14 text
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 }
}
Ge\ers
y
se\ers
autogenerados
Slide 15
Slide 15 text
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
Slide 16
Slide 16 text
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
Slide 17
Slide 17 text
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
Slide 18
Slide 18 text
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
Slide 19
Slide 19 text
Introducción a Grails 19
Colecciones
Map map = new HashMap();
map.put(“clave”, “valor”);
def map = [clave: “valor”]
Slide 20
Slide 20 text
Introducción a Grails 20
Colecciones
Map map = new HashMap();
map.put(“clave”, “valor”);
map.get(“clave”);
def map = [clave: “valor”]
map.clave
map[“clave”]
Slide 21
Slide 21 text
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”
Slide 22
Slide 22 text
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
Slide 23
Slide 23 text
Introducción a Grails 23
Iteraciones
for (String s : list) {
System.out.println(s);
}
list.each { String s ->
println s
}
Slide 24
Slide 24 text
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
}
Slide 25
Slide 25 text
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
Slide 26
Slide 26 text
Introducción a Grails 26
¿Qué
es
Grails?
Groovy
sobre
Spring
Slide 27
Slide 27 text
Introducción a Grails 27
¿Qué
es
Grails?
Groovy
sobre
Spring
No
es
una
librería
Slide 28
Slide 28 text
Introducción a Grails 28
¿Qué
es
Grails?
Groovy
sobre
Spring
No
es
una
librería
CoC
-‐>
No
XML
Slide 29
Slide 29 text
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
Slide 30
Slide 30 text
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
Slide 31
Slide 31 text
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
Slide 32
Slide 32 text
Introducción a Grails 32
Prác?ca
1
Instalación
Comandos
grails
help
grails
create-‐app
grails
run-‐app
grails
war
Slide 33
Slide 33 text
Introducción a Grails 33
Estructura
del
proyecto
Slide 34
Slide 34 text
Introducción a Grails 34
Controladores
Slide 35
Slide 35 text
Introducción a Grails 35
Controladores
Slide 36
Slide 36 text
Introducción a Grails 36
Controladores
Slide 37
Slide 37 text
Introducción a Grails 37
Vistas
Slide 38
Slide 38 text
Introducción a Grails 38
Vistas
Slide 39
Slide 39 text
Introducción a Grails 39
Vistas
Slide 40
Slide 40 text
Introducción a Grails 40
Vistas
Slide 41
Slide 41 text
Introducción a Grails 41
Vistas
Slide 42
Slide 42 text
Introducción a Grails 42
Vistas
Slide 43
Slide 43 text
Introducción a Grails 43
Taglibs
Slide 44
Slide 44 text
Introducción a Grails 44
Taglibs
Slide 45
Slide 45 text
Introducción a Grails 45
Taglibs
Slide 46
Slide 46 text
Introducción a Grails 46
Taglibs
Slide 47
Slide 47 text
Introducción a Grails 47
Modelo
de
datos:
Gorm
Slide 48
Slide 48 text
Introducción a Grails 48
Modelo
de
datos:
Gorm
Slide 49
Slide 49 text
Introducción a Grails 49
Modelo
de
datos:
Gorm
Genero
1
*
Película
Slide 50
Slide 50 text
Introducción a Grails 50
Modelo
de
datos:
Gorm
Slide 51
Slide 51 text
Introducción a Grails 51
Servicios
Slide 52
Slide 52 text
Introducción a Grails 52
Servicios
Slide 53
Slide 53 text
Introducción a Grails 53
Servicios
Slide 54
Slide 54 text
Introducción a Grails 54
Servicios
Slide 55
Slide 55 text
Introducción a Grails 55
Servicios
Slide 56
Slide 56 text
Introducción a Grails 56
Servicios
Slide 57
Slide 57 text
Introducción a Grails 57
Servicios
singleton
prototype
request
session