En este módulo, aprenderemos cómo utilizar Groovy para el desarrollo web. Exploraremos cómo crear aplicaciones web utilizando el framework Grails, que está basado en Groovy y sigue el patrón de diseño MVC (Modelo-Vista-Controlador). También veremos cómo manejar solicitudes HTTP y cómo trabajar con plantillas para generar contenido dinámico.

Contenido

  1. Introducción a Grails
  2. Configuración del Entorno
  3. Creación de una Aplicación Grails
  4. Controladores y Vistas
  5. Modelos y Persistencia
  6. Manejo de Solicitudes HTTP
  7. Plantillas y Generación de Contenido Dinámico
  8. Ejercicio Práctico

  1. Introducción a Grails

Grails es un framework web de alto rendimiento que utiliza Groovy y se basa en el patrón de diseño MVC. Grails simplifica el desarrollo de aplicaciones web al proporcionar una estructura coherente y herramientas integradas para la gestión de bases de datos, la creación de interfaces de usuario y la gestión de la lógica de negocio.

Características Clave de Grails

  • Basado en Groovy: Aprovecha la sintaxis concisa y las características dinámicas de Groovy.
  • MVC: Sigue el patrón de diseño Modelo-Vista-Controlador.
  • ORM: Utiliza GORM (Grails Object Relational Mapping) para la persistencia de datos.
  • Productividad: Incluye herramientas y convenciones que aceleran el desarrollo.

  1. Configuración del Entorno

Antes de comenzar a desarrollar con Grails, necesitamos configurar nuestro entorno de desarrollo.

Requisitos

  • Java Development Kit (JDK): Grails requiere JDK 8 o superior.
  • Grails: Descargue e instale Grails desde Grails.org.

Instalación de Grails

  1. Descargar Grails: Descargue la última versión de Grails desde el sitio oficial.
  2. Configurar Variables de Entorno:
    • Añada GRAILS_HOME a las variables de entorno, apuntando al directorio de instalación de Grails.
    • Añada $GRAILS_HOME/bin al PATH.
export GRAILS_HOME=/path/to/grails
export PATH=$PATH:$GRAILS_HOME/bin
  1. Verificar la Instalación: Ejecute el siguiente comando para verificar que Grails está instalado correctamente.
grails -version

  1. Creación de una Aplicación Grails

Paso 1: Crear un Nuevo Proyecto

Utilice el comando create-app para crear una nueva aplicación Grails.

grails create-app myapp
cd myapp

Paso 2: Ejecutar la Aplicación

Inicie la aplicación con el comando run-app.

grails run-app

Acceda a http://localhost:8080 en su navegador para ver la aplicación en funcionamiento.

  1. Controladores y Vistas

Controladores

Los controladores manejan las solicitudes HTTP y determinan qué vistas se deben renderizar.

Crear un Controlador

Utilice el comando create-controller para crear un nuevo controlador.

grails create-controller hello

Esto creará un archivo HelloController.groovy en el directorio grails-app/controllers.

Ejemplo de Controlador

package myapp

class HelloController {
    def index() {
        render "Hello, Grails!"
    }
}

Vistas

Las vistas son responsables de la presentación de datos. Grails utiliza GSP (Groovy Server Pages) para las vistas.

Crear una Vista

Las vistas se crean en el directorio grails-app/views.

<!-- grails-app/views/hello/index.gsp -->
<html>
<head>
    <title>Hello Grails</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

  1. Modelos y Persistencia

Modelos

Los modelos representan la estructura de los datos y la lógica de negocio. Grails utiliza GORM para la persistencia de datos.

Crear un Dominio

Utilice el comando create-domain-class para crear una nueva clase de dominio.

grails create-domain-class Book

Ejemplo de Clase de Dominio

package myapp

class Book {
    String title
    String author
    Date publishedDate

    static constraints = {
        title blank: false
        author blank: false
    }
}

Persistencia

GORM proporciona métodos para CRUD (Crear, Leer, Actualizar, Eliminar) operaciones.

// Crear un nuevo libro
def book = new Book(title: "Groovy in Action", author: "Dierk König", publishedDate: new Date())
book.save()

// Leer un libro
def foundBook = Book.findByTitle("Groovy in Action")

// Actualizar un libro
foundBook.author = "Dierk König et al."
foundBook.save()

// Eliminar un libro
foundBook.delete()

  1. Manejo de Solicitudes HTTP

Grails facilita el manejo de solicitudes HTTP a través de los controladores.

Parámetros de Solicitud

Puede acceder a los parámetros de la solicitud utilizando el objeto params.

class HelloController {
    def greet() {
        def name = params.name ?: 'World'
        render "Hello, ${name}!"
    }
}

Redirección

Puede redirigir a otras acciones o controladores utilizando el método redirect.

class HelloController {
    def index() {
        redirect(action: "greet", params: [name: "Grails"])
    }
}

  1. Plantillas y Generación de Contenido Dinámico

Grails utiliza GSP para la generación de contenido dinámico.

Sintaxis de GSP

GSP permite incrustar código Groovy dentro de HTML utilizando la sintaxis ${}.

<!-- grails-app/views/hello/greet.gsp -->
<html>
<head>
    <title>Greet</title>
</head>
<body>
    <h1>Hello, ${params.name}!</h1>
</body>
</html>

Etiquetas GSP

Grails proporciona etiquetas GSP para facilitar la creación de formularios y otros elementos HTML.

<g:form action="greet">
    <g:textField name="name" />
    <g:submitButton name="submit" value="Greet" />
</g:form>

  1. Ejercicio Práctico

Ejercicio: Crear una Aplicación de Biblioteca

Requisitos

  1. Crear una aplicación Grails llamada library.
  2. Crear un controlador BookController con las siguientes acciones:
    • index: Mostrar una lista de libros.
    • create: Mostrar un formulario para crear un nuevo libro.
    • save: Guardar un nuevo libro en la base de datos.
  3. Crear una clase de dominio Book con los campos title, author y publishedDate.
  4. Crear vistas para las acciones del controlador.

Solución

  1. Crear la Aplicación:
grails create-app library
cd library
  1. Crear el Controlador:
grails create-controller book
  1. Crear la Clase de Dominio:
grails create-domain-class Book
  1. Definir la Clase de Dominio:
package library

class Book {
    String title
    String author
    Date publishedDate

    static constraints = {
        title blank: false
        author blank: false
    }
}
  1. Definir el Controlador:
package library

class BookController {
    def index() {
        def books = Book.list()
        [books: books]
    }

    def create() {
        [book: new Book()]
    }

    def save() {
        def book = new Book(params)
        if (book.save()) {
            redirect(action: "index")
        } else {
            render(view: "create", model: [book: book])
        }
    }
}
  1. Crear las Vistas:
<!-- grails-app/views/book/index.gsp -->
<html>
<head>
    <title>Library</title>
</head>
<body>
    <h1>Books</h1>
    <ul>
        <g:each in="${books}" var="book">
            <li>${book.title} by ${book.author}</li>
        </g:each>
    </ul>
    <a href="${createLink(action: 'create')}">Add a new book</a>
</body>
</html>
<!-- grails-app/views/book/create.gsp -->
<html>
<head>
    <title>Add a Book</title>
</head>
<body>
    <h1>Add a Book</h1>
    <g:form action="save">
        <label for="title">Title:</label>
        <g:textField name="title" value="${book?.title}" /><br/>
        <label for="author">Author:</label>
        <g:textField name="author" value="${book?.author}" /><br/>
        <label for="publishedDate">Published Date:</label>
        <g:datePicker name="publishedDate" value="${book?.publishedDate}" /><br/>
        <g:submitButton name="submit" value="Save" />
    </g:form>
</body>
</html>

Conclusión

En este módulo, hemos aprendido cómo utilizar Groovy y Grails para el desarrollo web. Hemos cubierto desde la configuración del entorno hasta la creación de una aplicación completa con controladores, vistas y modelos. Ahora deberías tener una buena comprensión de cómo Grails facilita el desarrollo de aplicaciones web robustas y escalables. En el próximo módulo, exploraremos cómo trabajar con archivos y datos en Groovy.

© Copyright 2024. Todos los derechos reservados