29
8va. Reunión de la comunidad Grails.org.mx, SpringHispano.org y JavaMexico.org El MVC redefinido con Grails (Controllers y GSP) José Juan R. Zuñiga (@neodevelop)

Redefiniendo el MVC con Grails

Embed Size (px)

DESCRIPTION

Presentación del tema "Redefiniendo el MVC con Grails" presentada por mí el día Sábado 22 de Agosto en la Reunión de SpringHispano.org, grails.org.mx y JavaMexico

Citation preview

Page 1: Redefiniendo el MVC con Grails

8va. Reunión de la comunidad Grails.org.mx,

SpringHispano.org y JavaMexico.org

El MVC redefinido con Grails (Controllers y GSP)

José Juan R. Zuñiga (@neodevelop)

Page 2: Redefiniendo el MVC con Grails

Agenda• Reuniones previas• Groovy• MVC• Grails

Page 3: Redefiniendo el MVC con Grails

Reuniones previas• 6ta. Reunión de SpringHispano.org, grails.orgmx y

JavaMexico.org– http://springhispano.org/?q=node/469– http://www.slideshare.net/domingo.suarez/taller-groovy

Page 4: Redefiniendo el MVC con Grails

Reuniones previas• 6ta. Reunión de SpringHispano.org, grails.orgmx y

JavaMexico.org– http://springhispano.org/?q=node/374– http://www.slideshare.net/neodevelop/spring-mvc-final-presentatio

n– http://www.slideshare.net/domingo.suarez/grailsorgmx-priemra-reu

nion-presentation

Page 5: Redefiniendo el MVC con Grails

Lo más importante de todo esto…

Page 6: Redefiniendo el MVC con Grails

Los ponentes…

Page 7: Redefiniendo el MVC con Grails

Hablemos de MVC• MVC = Model – View – Controller • Es un patrón de diseño que provee un mecanismo para

construir una esbelta y limpia capa web• Claramente separa el negocio, la navegación y la lógica de

presentación• Aunque…ya no solo aplica a Web, ahora también es

implementado en Desktop( el mejor caso: Griffon - ?:D )

Page 8: Redefiniendo el MVC con Grails

¿Cómo trabaja MVC?

Page 9: Redefiniendo el MVC con Grails

Motivaciones• Facilita la carga de mantenimiento

– Los cambios en el negocio tienen impacto mínimo en el mejor de los casos nulo

• Facilita el desarrollo en un equipo multidisciplinario– Zapatero a tu zapato, DBA a tu base de datos, desarrollador de

persistencia a tus DAO’s, Diseñador a tu diseño….

• Uso de herramientas especializadas– Existen lenguajes de plantillas y etiquetado que son mejores para

crear HTML

• Facilita las pruebas– Podríamos probar mucho más código fuera de un contenedor Web

Page 10: Redefiniendo el MVC con Grails

Frameworks MVC en Java• Struts• Turbine• Expresso• Tapestry• Apache Cocoon• Maverik• Anvil• Jaffa• Japple• JPublish• Jucas• WebOnSwing• Chrysalis

• VRaptor• Swinglets• Millstone• Wicket• Java Server Faces

– MyFaces– Tomahawk– IceFaces– Trinidad– Tobago

• SpringMVC

Page 11: Redefiniendo el MVC con Grails

Otros frameworks MVC• Ruby

– Ruby on Rails• Perl

– Catalyst– Cyclone– Maypole– Solstice– …

• PHP– Zend– Tlalokes– Kumbia– CakePHP– …

• Python– Turbogears– Django

• .Net– MonoRail– Maverick– ASP.Net MVC

Page 12: Redefiniendo el MVC con Grails

Pero nosotros hablaremos de…

Page 13: Redefiniendo el MVC con Grails

¿Qué es Grails?• Una plataforma para desarrollo ágil en Web• Un framework MVC full-stack

Page 14: Redefiniendo el MVC con Grails

¿Qué es Grails?• Open Source• Corre en la JVM

Page 15: Redefiniendo el MVC con Grails

¿Qué es Grails?• Desarrollo de aplicaciones con Groovy• Altamente expresivo

Page 16: Redefiniendo el MVC con Grails

¿Qué es Grails?• Totalmente orientado a objetos• Dinámico• Sintaxis familiar• Perfecta integración con Java

Page 17: Redefiniendo el MVC con Grails

¿Qué es Grails?• Convención sobre configuración• DRY (Don’t repeat yourself)

Page 18: Redefiniendo el MVC con Grails

Stack de tecnologías de Grails

Page 19: Redefiniendo el MVC con Grails

¿qué me provee?

MVC zero-configuration Dependency_Injection gsp transacciones

JNDI groovy Internacionalización Web_Flow Tag_libraries

Caching hibernate scaffolding REST Layouts AJAX Jetty Unit

testing Integration testing grails plugins quartz acegi activemq

amazon-s3 gae axis camel criteria GORM dwr ext Spring

flex freemarker java geoip gwt ivy jpa jquery ldap mail openid paypal pdf sakai

springmvc taggable terracotta tomcat twitter webtest xfire yui

Page 20: Redefiniendo el MVC con Grails

Repasemos un poco…

Page 21: Redefiniendo el MVC con Grails

Recordemos nuestro HolaMundo(Java)public class MiClase{

private String nombre;

public void setNombre(String nombre){this.nombre = nombre;

}

public String getNombre(){return this.nombre;

}

public String saluda(){return "Hola " + nombre + "!!!";

}

public static void main(String[] args){MiClase m = new MiClase();m.setNombre("SpringHispano");System.out.println(m.saluda());

}

}

Page 22: Redefiniendo el MVC con Grails

Recordemos nuestro HolaMundo(Groovy)public class MiClase{

private String nombre;

public void setNombre(String nombre){this.nombre = nombre;

}

public String getNombre(){return this.nombre;

}

public String saluda(){return "Hola " + nombre + "!!!";

}

public static void main(String[] args){MiClase m = new MiClase();m.setNombre("SpringHispano");System.out.println(m.saluda());

}

}

Page 23: Redefiniendo el MVC con Grails

Mejor: A la manera Groovy!!!class MiClase{ String nombre def saluda(){ return "Hola $nombre !!!"; } }

def m = new MiClase()m.setNombre("SpringHispano")println(m.saluda())

Page 24: Redefiniendo el MVC con Grails

MVC en Grails• Modelo

– Clases del dominio– Validaciones en las clases de dominio– GORM– Se puede personalizar el mapeo– Relaciones entre clases

• Uno a Uno• Uno a Muchos• Muchos a Muchos

– Herencia– Objetos embedidos– Testing

Page 25: Redefiniendo el MVC con Grails

MVC en Grails• Controller

– Definidos por Acciones en Closures– Provee de atributos en el request que facilitan el manejo

• Ejemplos: flash, params– Provee un scope adicional a context y session: flash– Mejora en el manejo del Data Binding a través de params– Command Objects– Restricciones en los métodos HTTP– Manejo de upload de archivos más sencillo– Interceptores– Filtros– Testing

Page 26: Redefiniendo el MVC con Grails

MVC en Grails• View

– Scriptlets– GSP– Provee de una librería de tags poderosa

• Tags lógicos• Tags iterativos• Tags para crear vínculos

– Incluso podemos crear las propias :D– Sencillismo manejo de formularios a través de Tags– Paginación– Uso de templates– Ajax– Testing

Page 27: Redefiniendo el MVC con Grails

Un ejemplo…• Claro si no a que venimos a la reunión…• Creemos una aplicación…• Veamos que podemos hacer enfocandonos en el MVC…

Page 28: Redefiniendo el MVC con Grails

Más Grails• Mappings• Internacionalización• Ajax• WebFlow• GORM• Servicios• Plugins• Seguridad• Web Services• Más…

Page 29: Redefiniendo el MVC con Grails

8va. Reunión de la comunidad Grails.org.mx,

SpringHispano.org y JavaMexico.org

¿Preguntas?

…o comentarios…http://springhispano.org

http://grails.org.mx@neodevelop