Introdução ao Grails: framework web baseado em MVC

Grails é um framework web baseado em MVC que utiliza a linguagem Groovy, roda sobre a JVM e visa a alta produtividade. Ele combina os principais frameworks utilizados na plataforma Java e respeita o “paradigma” Convention-over-configuration (Programação por convenção).

Este artigo visa mostrar os elementos básicos da utilização do framework Grails demonstrando algumas das principais features dele.

Antes de começarmos com o exemplo, é sempre bom entender um pouco dos conceitos:

Groovy

O Groovy é uma linguagem orientada a objetos com tipagem dinâmica que roda na JVM. A sua sintaxe é extremamente parecida com a do Java, além disso é possível também “integrar” aplicações Java e Groovy de forma transparente. O Groovy inclusive simplifica a implementação por “adicionar” as suas classes os métodos Gets e Sets, economizando tempo e esforço.

Convention Over Configuration (Programação por convenção)

O CoC é um paradigma que visa diminuir a quantidade de decisões que o desenvolvedor precisa tomar, tomando como “padrão” algo que é comumente usado, uma convenção. Se o padrão escolhido pelo framework for a configuração que o desenvolvedor precisar, este não gasta tempo tendo que altera-la, entretanto, se ele necessitar de algo diferente, ele fica livre para configurar da forma que desejar.
No caso do Grails ele assume diversas configurações como por exemplo as de banco de dados, as de log de erro entre outras.

MVC

Model View Controller, é um padrão utilizado no desenvolvimento de software que visa separar a parte lógica, a parte de persistência de dados e a parte de visualização do sistema.

Criando a nossa primeira aplicação com Grails

A Aplicação que vamos criar é uma Lista de Tarefas, onde vamos registrar o nome da tarefa o horário de inicio, o horário estimado de fim e se a tarefa está ou não terminada.

Não vou explicar como é feita a instalação do Grails pois isso vai depender muito do sistema operacional que você está usando e também por que existem muitos tutoriais por ai que ensinam isso. No próprio site do Grails existem um tutorial de instalação muito bom.

Com o Grails devidamente instalado e configurado iremos criar nossa primeira aplicação.

Em um terminal vá até a pasta onde deseja criar o projeto, assegure-se de que tem permissão para criar documentos e diretórios alí e digite:

grails create-app ListaTarefas

Esse comando irá gerar um grande volume de saídas, mas basicamente o que ele vai fazer, é criar todos os arquivos e diretórios que serão utilizados na nossa aplicação.

A Árvore de diretórios

O comando anterior gerou uma série de arquivos e diretórios para o nosso projeto, vamos analisá-los 1 a 1.

ListaTarefas
+ grails-app
+ conf É onde fica as configurações da aplicação, como a configuração de banco (DataSource.groovy) e onde podem ser feitas as configurações de inicialização(bootstrap.groovy) entre outros.
+ controllers É onde fica o C do MVC, os controladores.
+ domain Aqui encontra-se o M do MVC, onde fica as classes de Domínio, ou modelos.
+ i18n Arquivos inerentes a internacionalização.
+ services Aqui ficariam as classes utilizadas na camada de serviços do Grails, se você for utilizá-la.
+ taglib Aqui ficam as TagLibs criadas pelo usuário
+ views É o V do MVC, as Views. Aqui ficam os templates e os arquivos “.gsp”, Groovy Server Pages utilizada para cada classe de domínio.
+ layouts Aqui ficam os templates, templates em Grails são views incluídas em outras views.
+ grails-tests Aqui ficam os testes unitários
+ lib Aqui ficam as libs externas, como por exemplo os drivers de conexão aos bancos de dados
+ src
+ groovy Aqui ficam outros códigos em groovy que não se encaixam nem em Domain, Controller View ou Service.
+ java Idem ao de cima, porém para Java.
+ web-app
+ css Folhas de estilo
+ images Imagens
+ js JavaScript
+ WEB-INF Arquivos relacionados ao deploy
+ index.jsp O Index da app

Em um primeiro momento o diretório mais importante para nós será o grails-app.

Criando Models

No terminal que usamos para criar o projeto, vamos dar o seguinte comando:

grails create-domain-class Tarefa

Esse comando irá criar uma classe de domínio (Model) com o nome Tarefa, como você já sabe, essa classe poderá ser encontrada em:

grails-app/domain/listatarefas/Tarefa.groovy

A classe criada será parecida com essa:

package listatarefas
class Tarefa {
static constraints = {}
}

Adicione a ela os atributos da tarefa deixando-a dessa forma:

package listatarefas
class Tarefa {
String nome
Date inicio
Date fim
boolean terminada
static constraints = {}
}

Os tipos de dados utilizados no Groovy são os mesmos do Java, portanto eles possuem as mesmas características que você já conhece, como por exemplo o “tipo” Date que guarda tanto hora como data.

Agora no terminal com um comando semelhante ao anterior iremos gerar um Controller para a classe Tarefa:

grails create-controller Tarefa

Nosso novo Controller pode ser encontrado no arquivo:

grails-app/controllers/listatarefas/TarefaController.groovy

O controlador gerado possui apenas a closure Index, edite o arquivo deixando-o da seguinte forma:

package listatarefas
class TarefaController {
def scaffold = true
}

Dessa forma estamos dizendo ao Grails para utilizar o Scaffold padrão, onde ele gera tanto as telas quanto os métodos do Controller.

Volte ao terminal e execute o comando:

grails run-app

Quando a saída: “Server running. Browse to http://localhost:8080/ListaTarefas” aparecer, abra o seu navegador favorito e acesse o endereço indicado, uma tela parecida com essa será apresentada:


Você pode inserir, deletar, editar e tudo mais. Mas se você relembrar o que foi feito vai perceber que não configurou em momento algum um banco de dados. Por padrão, o Grails utiliza um banco de dados HSQLDB que já vem embutido no framework, para as pretensões desse artigo, suas funcionalidades são mais que suficientes.

Controllers e Views

Até agora utilizamos o Scaffold do Grails de forma que ele gere as Views e os Controllers em “tempo de execução”. Vamos agora gerar os códigos fontes para podermos analisá-los e modificá-los.

Entre com o comando:

grails generate-all

Quando aparecer a mensagem “Domain Class name not specified. Please enter:” apenas pressione enter, logo após ele irá perguntar se deseja sobrescrever os arquivos já existentes, pressione a tecla “a” para sobrescrever todos e de enter, ele irá agora perguntar se deseja sobrescrever os testes, pressione “Y” e depois enter.

Abra o arquivo ListaTarefas/grails-app/controllers/listatarefas/TarefaController.groovy

Agora o código do controller parece mais com um controlador, agora ao invés de termos apenas o método index(), e o scaffold que era “automático” e escondido antes agora está no nosso código fonte nos diversos métodos presentes. Você pode livremente alterar esses métodos e também adicionar outros que supram a necessidade do seu sistema.

Voltando à aplicação, você deve ter reparado que no cadastro de tarefas não é possível cadastrar o a hora de início e fim das tarefas, somente a data, apesar de um atributo do tipo Date conter a data. Isso ocorre por que o gerador de código do Grails gera os campos com a precisão apenas para a data. Para deixarmos da forma que precisamos, vamos abrir o arquivo ListaTarefas/grails-app/views/tarefa/create.gsp

Encontre a seguinte tag (por volta da linha 35):

<g:datePicker name="inicio" precision="day" value="${tarefaInstance?.inicio}" />

Está é uma tag própria do Grails, que como você já deve saber, vai gerar os campos pra seleção de data e hora. O Grails, possui diversas tags próprias, como <g:datePicker, … enfim, muitas tags para simplificar o trabalho do desenvolvedor.

Edite o atributo precision da tag deixando-a da seguinte forma:

<g:datePicker name="inicio" precision="minute" value="${tarefaInstance?.inicio}" />

Atualize a página, o resultado deve ser algo como abaixo:


Faça a mesma alteração no campo fim do arquivo create.gsp, e nos campos início e fim do edit.gsp.

Conclusão

Este tutorial cobriu (de forma bem rasa) alguns aspectos básicos da utilização do framework Grails, para um pouco mais de aprofundamento sugiro o ebook: ‘Getting Started with Grails‘. Existe também o fórum da comunidade Grails Brasil que reúne bastante conteúdo em português. Também é possível encontrar diversos livros sobre a tecnologia.

Abraços e até a próxima.

Fonte: JC Neto Blog

Jurmir Canal Neto

Mais artigos deste autor »

Bacharel em Ciência da Computação, Sun Certified Java Programmer (SCJP 6) e entusiasta do mundo livre, já ministrou alguns cursos e palestras sobre GNU/Linux, Python e Web Services, já tendo trabalhado em ambiente Web com PHP, Javascript, CSS, MySQL e PostgreSQL e também em ambiente corporativo utilizando Java (J2EE), Natural/Adabas e Oracle.


Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!