seminario de groovy y grails

65
1 Introducción a Grails 1 Introducción a Grails 14 de Mayo de 2010 Por Alberto Vilches, albertovilches.com

Upload: paradigma-tecnologico

Post on 12-Jun-2015

224 views

Category:

Technology


0 download

DESCRIPTION

Seminario de Groovy & Grails organizado por Paradigma Tecnológico (http://www.paradigmatecnologico.com/) y javaHispano (http://javaHispano.org).

TRANSCRIPT

Page 1: Seminario de Groovy y grails

1 Introducción a Grails 1  

Introducción  a  Grails  

14  de  Mayo  de  2010  

Por  Alberto  Vilches,  albertovilches.com  

Page 2: Seminario de Groovy y grails

Introducción a Grails 2  

Agenda  

  ¿Qué  es  Groovy?  

  ¿Qué  es  Grails?  

  Controladores  

  Vistas  y  taglib  

  Servicios  

  Gorm  

  PracGca  

  Plugin  acegi  

Page 3: Seminario de Groovy y grails

Introducción a Grails 3  

¿Qué  es  Groovy?  

  Groovy  es  Java.  

Page 4: Seminario de Groovy y grails

Introducción a Grails 4  

¿Qué  es  Groovy?  

  Groovy  es  Java.  

  Dinámico  

Page 5: Seminario de Groovy y grails

Introducción a Grails 5  

¿Qué  es  Groovy?  

  Groovy  es  Java.  

  Dinámico  

  Inspirado  en  Ruby,  Python  y  Smalltalk  

Page 6: Seminario de Groovy y grails

Introducción a Grails 6  

¿Qué  es  Groovy?  

  Groovy  es  Java.  

  Dinámico  

  Inspirado  en  Ruby,  Python  y  Smalltalk  

  OOP  puro  

Page 7: Seminario de Groovy y grails

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  

Page 8: Seminario de Groovy y grails

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  

Page 9: Seminario de Groovy y grails

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  

Page 10: Seminario de Groovy y grails

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; }

}

Page 11: Seminario de Groovy y grails

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; }

}

Page 12: Seminario de Groovy y grails

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  

Page 13: Seminario de Groovy y grails

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  

Page 14: Seminario de Groovy y grails

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  

Page 15: Seminario de Groovy y grails

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  

Page 16: Seminario de Groovy y grails

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  

Page 17: Seminario de Groovy y grails

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  

Page 18: Seminario de Groovy y grails

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  

Page 19: Seminario de Groovy y grails

Introducción a Grails 19  

Colecciones  

Map map = new HashMap();

map.put(“clave”, “valor”);

def map = [clave: “valor”]

Page 20: Seminario de Groovy y grails

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”]

Page 21: Seminario de Groovy y grails

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”

Page 22: Seminario de Groovy y grails

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

Page 23: Seminario de Groovy y grails

Introducción a Grails 23  

Iteraciones  

for (String s : list) {

System.out.println(s);

}

list.each { String s -> println s

}

Page 24: Seminario de Groovy y grails

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

}

Page 25: Seminario de Groovy y grails

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

Page 26: Seminario de Groovy y grails

Introducción a Grails 26  

¿Qué  es  Grails?  

  Groovy  sobre  Spring  

Page 27: Seminario de Groovy y grails

Introducción a Grails 27  

¿Qué  es  Grails?  

  Groovy  sobre  Spring  

  No  es  una  librería  

Page 28: Seminario de Groovy y grails

Introducción a Grails 28  

¿Qué  es  Grails?  

  Groovy  sobre  Spring  

  No  es  una  librería  

  CoC  -­‐>  No  XML  

Page 29: Seminario de Groovy y grails

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  

Page 30: Seminario de Groovy y grails

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  

Page 31: Seminario de Groovy y grails

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  

Page 32: Seminario de Groovy y grails

Introducción a Grails 32  

Prác?ca  1  

  Instalación  

  Comandos  

  grails  help  

  grails  create-­‐app  

  grails  run-­‐app  

  grails  war  

Page 33: Seminario de Groovy y grails

Introducción a Grails 33  

Estructura  del  proyecto  

Page 34: Seminario de Groovy y grails

Introducción a Grails 34  

Controladores  

Page 35: Seminario de Groovy y grails

Introducción a Grails 35  

Controladores  

Page 36: Seminario de Groovy y grails

Introducción a Grails 36  

Controladores  

Page 37: Seminario de Groovy y grails

Introducción a Grails 37  

Vistas  

Page 38: Seminario de Groovy y grails

Introducción a Grails 38  

Vistas  

Page 39: Seminario de Groovy y grails

Introducción a Grails 39  

Vistas  

Page 40: Seminario de Groovy y grails

Introducción a Grails 40  

Vistas  

Page 41: Seminario de Groovy y grails

Introducción a Grails 41  

Vistas  

Page 42: Seminario de Groovy y grails

Introducción a Grails 42  

Vistas  

Page 43: Seminario de Groovy y grails

Introducción a Grails 43  

Taglibs  

Page 44: Seminario de Groovy y grails

Introducción a Grails 44  

Taglibs  

Page 45: Seminario de Groovy y grails

Introducción a Grails 45  

Taglibs  

Page 46: Seminario de Groovy y grails

Introducción a Grails 46  

Taglibs  

Page 47: Seminario de Groovy y grails

Introducción a Grails 47  

Modelo  de  datos:  Gorm  

Page 48: Seminario de Groovy y grails

Introducción a Grails 48  

Modelo  de  datos:  Gorm  

Page 49: Seminario de Groovy y grails

Introducción a Grails 49  

Modelo  de  datos:  Gorm  

Genero      1   *        Película  

Page 50: Seminario de Groovy y grails

Introducción a Grails 50  

Modelo  de  datos:  Gorm  

Page 51: Seminario de Groovy y grails

Introducción a Grails 51  

Servicios  

Page 52: Seminario de Groovy y grails

Introducción a Grails 52  

Servicios  

Page 53: Seminario de Groovy y grails

Introducción a Grails 53  

Servicios  

Page 54: Seminario de Groovy y grails

Introducción a Grails 54  

Servicios  

Page 55: Seminario de Groovy y grails

Introducción a Grails 55  

Servicios  

Page 56: Seminario de Groovy y grails

Introducción a Grails 56  

Servicios  

Page 57: Seminario de Groovy y grails

Introducción a Grails 57  

Servicios  

singleton  prototype  request  session  

Page 58: Seminario de Groovy y grails

Introducción a Grails 58  

Prác?ca  2  

  Crear  controlador  

  grails  create-­‐controller    

  render  “hola  mundo”  

  request,  session,  params  

Page 59: Seminario de Groovy y grails

Introducción a Grails 59  

Prác?ca  3  

  Crear  vistas  

  Crear  un  modelo:  Pelicula  

  MVC:  enviar  el  modelo  a  la  vista  

Page 60: Seminario de Groovy y grails

Introducción a Grails 60  

Prác?ca  4  

  GORM  

  Clases  en  domain  -­‐>  tablas  

  Scaffolding  

  Configuración  con  MySQL  

Page 61: Seminario de Groovy y grails

Introducción a Grails 61  

Prác?ca  5  

  BootStrap  

  Relaciones  

  hasMany  

  belongsTop  

Page 62: Seminario de Groovy y grails

Introducción a Grails 62  

Prác?ca  6  

  Validaciones  

  Plugin  de  seguridad:  Acegi  

Page 63: Seminario de Groovy y grails

Introducción a Grails 63  

Acegi  

  Generación  de  manager  y  registro  

  AcGvar  anotaciones  

  Cargar  roles  en  bd  

  Securizar  controladores  

Page 64: Seminario de Groovy y grails

Introducción a Grails 64  

Acegi  

  Generación  de  manager  y  registro  

  AcGvar  anotaciones  

  Cargar  roles  en  bd  

  Securizar  controladores  

Page 65: Seminario de Groovy y grails

65 Introducción a Grails 65  

Gracias  

Preguntas