Slide 1

Slide 1 text

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  

Slide 58

Slide 58 text

Introducción a Grails 58   Prác?ca  2     Crear  controlador     grails  create-­‐controller       render  “hola  mundo”     request,  session,  params  

Slide 59

Slide 59 text

Introducción a Grails 59   Prác?ca  3     Crear  vistas     Crear  un  modelo:  Pelicula     MVC:  enviar  el  modelo  a  la  vista  

Slide 60

Slide 60 text

Introducción a Grails 60   Prác?ca  4     GORM     Clases  en  domain  -­‐>  tablas     Scaffolding     Configuración  con  MySQL  

Slide 61

Slide 61 text

Introducción a Grails 61   Prác?ca  5     BootStrap     Relaciones     hasMany     belongsTop  

Slide 62

Slide 62 text

Introducción a Grails 62   Prác?ca  6     Validaciones     Plugin  de  seguridad:  Acegi  

Slide 63

Slide 63 text

Introducción a Grails 63   Acegi     Generación  de  manager  y  registro     AcGvar  anotaciones     Cargar  roles  en  bd     Securizar  controladores  

Slide 64

Slide 64 text

Introducción a Grails 64   Acegi     Generación  de  manager  y  registro     AcGvar  anotaciones     Cargar  roles  en  bd     Securizar  controladores  

Slide 65

Slide 65 text

65 Introducción a Grails 65   Gracias   Preguntas