SlideShare a Scribd company logo
1 of 65
Download to read offline
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 }
}
Geers	
  y	
  seers	
  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	
  

More Related Content

Similar to Seminario de Groovy y grails

Realizando pruebas en la JVM con velocidad y eficacia
Realizando pruebas en la JVM con velocidad y eficaciaRealizando pruebas en la JVM con velocidad y eficacia
Realizando pruebas en la JVM con velocidad y eficacia
Software Guru
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket
 

Similar to Seminario de Groovy y grails (20)

Introduccion A Groovy
Introduccion A GroovyIntroduccion A Groovy
Introduccion A Groovy
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
Introduction a Groovy
Introduction a  GroovyIntroduction a  Groovy
Introduction a Groovy
 
Groovy no es java sin puntos y comas - Codemotion Madrid 2014
Groovy no es java sin puntos y comas - Codemotion Madrid 2014Groovy no es java sin puntos y comas - Codemotion Madrid 2014
Groovy no es java sin puntos y comas - Codemotion Madrid 2014
 
Taller Groovy
Taller GroovyTaller Groovy
Taller Groovy
 
Grails
GrailsGrails
Grails
 
Write gradle plugins escribir y publicar tus plugins de gradle made easy_
Write gradle plugins  escribir y publicar tus plugins de gradle  made easy_Write gradle plugins  escribir y publicar tus plugins de gradle  made easy_
Write gradle plugins escribir y publicar tus plugins de gradle made easy_
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Write Gradle Plugins
Write Gradle PluginsWrite Gradle Plugins
Write Gradle Plugins
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Tu api ha muerto larga vida a tu dsl
Tu api ha muerto  larga vida a tu dslTu api ha muerto  larga vida a tu dsl
Tu api ha muerto larga vida a tu dsl
 
Realizando pruebas en la JVM con velocidad y eficacia
Realizando pruebas en la JVM con velocidad y eficaciaRealizando pruebas en la JVM con velocidad y eficacia
Realizando pruebas en la JVM con velocidad y eficacia
 
Redefiniendo el MVC con Grails
Redefiniendo el MVC con GrailsRedefiniendo el MVC con Grails
Redefiniendo el MVC con Grails
 
Realizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y EficaciaRealizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y Eficacia
 
Groovy 2.5 and 3.0 (Spanish)
Groovy 2.5 and 3.0 (Spanish)Groovy 2.5 and 3.0 (Spanish)
Groovy 2.5 and 3.0 (Spanish)
 
Groovy y Grails, y la pastilla roja
Groovy y Grails, y la pastilla rojaGroovy y Grails, y la pastilla roja
Groovy y Grails, y la pastilla roja
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
 
Intro a Grails @ ITESCA
Intro a Grails @ ITESCAIntro a Grails @ ITESCA
Intro a Grails @ ITESCA
 
Introduccion a grails en Campusparty
Introduccion a grails en CampuspartyIntroduccion a grails en Campusparty
Introduccion a grails en Campusparty
 

More from Paradigma Digital

More from Paradigma Digital (20)

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFlux
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Recently uploaded (11)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Seminario de Groovy y grails

  • 1. 1 Introducción a Grails 1   Introducción  a  Grails   14  de  Mayo  de  2010   Por  Alberto  Vilches,  albertovilches.com  
  • 2. Introducción a Grails 2   Agenda     ¿Qué  es  Groovy?     ¿Qué  es  Grails?     Controladores     Vistas  y  taglib     Servicios     Gorm     PracGca     Plugin  acegi  
  • 3. Introducción a Grails 3   ¿Qué  es  Groovy?     Groovy  es  Java.  
  • 4. Introducción a Grails 4   ¿Qué  es  Groovy?     Groovy  es  Java.     Dinámico  
  • 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”]
  • 20. 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”]
  • 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
  • 26. Introducción a Grails 26   ¿Qué  es  Grails?     Groovy  sobre  Spring  
  • 27. Introducción a Grails 27   ¿Qué  es  Grails?     Groovy  sobre  Spring     No  es  una  librería  
  • 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  
  • 33. Introducción a Grails 33   Estructura  del  proyecto  
  • 34. Introducción a Grails 34   Controladores  
  • 35. Introducción a Grails 35   Controladores  
  • 36. Introducción a Grails 36   Controladores  
  • 43. Introducción a Grails 43   Taglibs  
  • 44. Introducción a Grails 44   Taglibs  
  • 45. Introducción a Grails 45   Taglibs  
  • 46. Introducción a Grails 46   Taglibs  
  • 47. Introducción a Grails 47   Modelo  de  datos:  Gorm  
  • 48. Introducción a Grails 48   Modelo  de  datos:  Gorm  
  • 49. Introducción a Grails 49   Modelo  de  datos:  Gorm   Genero      1   *        Película  
  • 50. Introducción a Grails 50   Modelo  de  datos:  Gorm  
  • 51. Introducción a Grails 51   Servicios  
  • 52. Introducción a Grails 52   Servicios  
  • 53. Introducción a Grails 53   Servicios  
  • 54. Introducción a Grails 54   Servicios  
  • 55. Introducción a Grails 55   Servicios  
  • 56. Introducción a Grails 56   Servicios  
  • 57. Introducción a Grails 57   Servicios   singleton   prototype   request   session  
  • 58. Introducción a Grails 58   Prác?ca  2     Crear  controlador     grails  create-­‐controller       render  “hola  mundo”     request,  session,  params  
  • 59. Introducción a Grails 59   Prác?ca  3     Crear  vistas     Crear  un  modelo:  Pelicula     MVC:  enviar  el  modelo  a  la  vista  
  • 60. Introducción a Grails 60   Prác?ca  4     GORM     Clases  en  domain  -­‐>  tablas     Scaffolding     Configuración  con  MySQL  
  • 61. Introducción a Grails 61   Prác?ca  5     BootStrap     Relaciones     hasMany     belongsTop  
  • 62. Introducción a Grails 62   Prác?ca  6     Validaciones     Plugin  de  seguridad:  Acegi  
  • 63. Introducción a Grails 63   Acegi     Generación  de  manager  y  registro     AcGvar  anotaciones     Cargar  roles  en  bd     Securizar  controladores  
  • 64. Introducción a Grails 64   Acegi     Generación  de  manager  y  registro     AcGvar  anotaciones     Cargar  roles  en  bd     Securizar  controladores  
  • 65. 65 Introducción a Grails 65   Gracias   Preguntas