Post on 12-Jun-2015
description
1 Introducción a Grails 1
Introducción a Grails
14 de Mayo de 2010
Por Alberto Vilches, albertovilches.com
Introducción a Grails 2
Agenda
¿Qué es Groovy?
¿Qué es Grails?
Controladores
Vistas y taglib
Servicios
Gorm
PracGca
Plugin acegi
Introducción a Grails 3
¿Qué es Groovy?
Groovy es Java.
Introducción a Grails 4
¿Qué es Groovy?
Groovy es Java.
Dinámico
Introducción a Grails 5
¿Qué es Groovy?
Groovy es Java.
Dinámico
Inspirado en Ruby, Python y Smalltalk
Introducción a Grails 6
¿Qué es Groovy?
Groovy es Java.
Dinámico
Inspirado en Ruby, Python y Smalltalk
OOP puro
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
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
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
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; }
}
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; }
}
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
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
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
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
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
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
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
Introducción a Grails 19
Colecciones
Map map = new HashMap();
map.put(“clave”, “valor”);
def map = [clave: “valor”]
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”]
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”
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
Introducción a Grails 23
Iteraciones
for (String s : list) {
System.out.println(s);
}
list.each { String s -> println s
}
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
}
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
Introducción a Grails 26
¿Qué es Grails?
Groovy sobre Spring
Introducción a Grails 27
¿Qué es Grails?
Groovy sobre Spring
No es una librería
Introducción a Grails 28
¿Qué es Grails?
Groovy sobre Spring
No es una librería
CoC -‐> No XML
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
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
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
Introducción a Grails 32
Prác?ca 1
Instalación
Comandos
grails help
grails create-‐app
grails run-‐app
grails war
Introducción a Grails 33
Estructura del proyecto
Introducción a Grails 34
Controladores
Introducción a Grails 35
Controladores
Introducción a Grails 36
Controladores
Introducción a Grails 37
Vistas
Introducción a Grails 38
Vistas
Introducción a Grails 39
Vistas
Introducción a Grails 40
Vistas
Introducción a Grails 41
Vistas
Introducción a Grails 42
Vistas
Introducción a Grails 43
Taglibs
Introducción a Grails 44
Taglibs
Introducción a Grails 45
Taglibs
Introducción a Grails 46
Taglibs
Introducción a Grails 47
Modelo de datos: Gorm
Introducción a Grails 48
Modelo de datos: Gorm
Introducción a Grails 49
Modelo de datos: Gorm
Genero 1 * Película
Introducción a Grails 50
Modelo de datos: Gorm
Introducción a Grails 51
Servicios
Introducción a Grails 52
Servicios
Introducción a Grails 53
Servicios
Introducción a Grails 54
Servicios
Introducción a Grails 55
Servicios
Introducción a Grails 56
Servicios
Introducción a Grails 57
Servicios
singleton prototype request session
Introducción a Grails 58
Prác?ca 2
Crear controlador
grails create-‐controller
render “hola mundo”
request, session, params
Introducción a Grails 59
Prác?ca 3
Crear vistas
Crear un modelo: Pelicula
MVC: enviar el modelo a la vista
Introducción a Grails 60
Prác?ca 4
GORM
Clases en domain -‐> tablas
Scaffolding
Configuración con MySQL
Introducción a Grails 61
Prác?ca 5
BootStrap
Relaciones
hasMany
belongsTop
Introducción a Grails 62
Prác?ca 6
Validaciones
Plugin de seguridad: Acegi
Introducción a Grails 63
Acegi
Generación de manager y registro
AcGvar anotaciones
Cargar roles en bd
Securizar controladores
Introducción a Grails 64
Acegi
Generación de manager y registro
AcGvar anotaciones
Cargar roles en bd
Securizar controladores
65 Introducción a Grails 65
Gracias
Preguntas