Introdução Ao Grails

7
INTRODUÇÃO AO GRAILS: FRAMEWORK WEB BASEADO EM MVC 23 de junho de 2010Jurmir Canal Neto Desenvolvimento , Internet inShare 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

description

Ferramenta de alta produtividade.

Transcript of Introdução Ao Grails

INTRODUO AO GRAILS: FRAMEWORK WEB BASEADO EM MVC23 de junho de 2010Jurmir Canal NetoDesenvolvimento,InternetinShareGrails 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 (Programao por conveno).Este artigo visa mostrar os elementos bsicos da utilizao do framework Grails demonstrando algumas das principais features dele.Antes de comearmos com o exemplo, sempre bom entender um pouco dos conceitos:GroovyO Groovy uma linguagem orientada a objetos com tipagem dinmica que roda na JVM. A sua sintaxe extremamente parecida com a do Java, alm disso possvel tambm integrar aplicaes Java e Groovy de forma transparente. O Groovy inclusive simplifica a implementao por adicionar as suas classes os mtodos Gets e Sets, economizando tempo e esforo.Convention Over Configuration (Programao por conveno)O CoC um paradigma que visa diminuir a quantidade de decises que o desenvolvedor precisa tomar, tomando como padro algo que comumente usado, uma conveno. Se o padro escolhido pelo framework for a configurao que o desenvolvedor precisar, este no 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 configuraes como por exemplo as de banco de dados, as de log de erro entre outras.MVCModel View Controller, um padro utilizado no desenvolvimento de software que visa separar a parte lgica, a parte de persistncia de dados e a parte de visualizao do sistema.Criando a nossa primeira aplicao com GrailsA Aplicao que vamos criar uma Lista de Tarefas, onde vamos registrar o nome da tarefa o horrio de inicio, o horrio estimado de fim e se a tarefa est ou no terminada.No vou explicar como feita a instalao do Grails pois isso vai depender muito do sistema operacional que voc est usando e tambm por que existem muitos tutoriais por ai que ensinam isso. No prprio site do Grails existem um tutorial de instalao muito bom.Com o Grails devidamente instalado e configurado iremos criar nossa primeira aplicao.Em um terminal v at a pasta onde deseja criar o projeto, assegure-se de que tem permisso para criar documentos e diretrios al e digite:grails create-app ListaTarefasEsse comando ir gerar um grande volume de sadas, mas basicamente o que ele vai fazer, criar todos os arquivos e diretrios que sero utilizados na nossa aplicao.A rvore de diretriosO comando anterior gerou uma srie de arquivos e diretrios para o nosso projeto, vamos analis-los 1 a 1.ListaTarefas

+ grails-app

+ conf onde fica as configuraes da aplicao, como a configurao de banco (DataSource.groovy) e onde podem ser feitas as configuraes de inicializao(bootstrap.groovy) entre outros.

+ controllers onde fica o C do MVC, os controladores.

+ domainAqui encontra-se o M do MVC, onde fica as classes de Domnio, ou modelos.

+ i18nArquivos inerentes a internacionalizao.

+ servicesAqui ficariam as classes utilizadas na camada de servios do Grails, se voc for utiliz-la.

+ taglibAqui ficam as TagLibs criadas pelo usurio

+ views o V do MVC, as Views. Aqui ficam os templates e os arquivos .gsp, Groovy Server Pages utilizada para cada classe de domnio.

+ layoutsAqui ficam os templates, templates em Grails so views includas em outras views.

+ grails-testsAqui ficam os testes unitrios

+ libAqui ficam as libs externas, como por exemplo os drivers de conexo aos bancos de dados

+ src

+ groovyAqui ficam outros cdigos em groovy que no se encaixam nem em Domain, Controller View ou Service.

+ javaIdem ao de cima, porm para Java.

+ web-app

+ cssFolhas de estilo

+ imagesImagens

+ jsJavaScript

+ WEB-INFArquivos relacionados ao deploy

+ index.jspO Index da app

Em um primeiro momento o diretrio mais importante para ns ser ograils-app.Criando ModelsNo terminal que usamos para criar o projeto, vamos dar o seguinte comando:grails create-domain-class TarefaEsse comando ir criar uma classe de domnio (Model) com o nome Tarefa, como voc j sabe, essa classe poder ser encontrada em:grails-app/domain/listatarefas/Tarefa.groovyA classe criada ser parecida com essa:package listatarefasclass Tarefa {static constraints = {}}Adicione a ela os atributos da tarefa deixando-a dessa forma:package listatarefasclass Tarefa {String nomeDate inicioDate fimboolean terminadastatic constraints = {}}Os tipos de dados utilizados no Groovy so os mesmos do Java, portanto eles possuem as mesmas caractersticas 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 TarefaNosso novo Controller pode ser encontrado no arquivo:grails-app/controllers/listatarefas/TarefaController.groovyO controlador gerado possui apenas a closure Index, edite o arquivo deixando-o da seguinte forma:package listatarefasclass TarefaController {def scaffold = true}Dessa forma estamos dizendo ao Grails para utilizar o Scaffold padro, onde ele gera tanto as telas quanto os mtodos do Controller.Volte ao terminal e execute o comando:grails run-appQuando a sada: Server running. Browse to http://localhost:8080/ListaTarefas aparecer, abra o seu navegador favorito e acesse o endereo 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 no configurou em momento algum um banco de dados. Por padro, o Grails utiliza um banco de dados HSQLDB que j vem embutido no framework, para as pretenses desse artigo, suas funcionalidades so mais que suficientes.Controllers e ViewsAt agora utilizamos o Scaffold do Grails de forma que ele gere as Views e os Controllers em tempo de execuo. Vamos agora gerar os cdigos fontes para podermos analis-los e modific-los.Entre com o comando:grails generate-allQuando aparecer a mensagem Domain Class name not specified. Please enter: apenas pressione enter, logo aps 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 arquivoListaTarefas/grails-app/controllers/listatarefas/TarefaController.groovyAgora o cdigo do controller parece mais com um controlador, agora ao invs de termos apenas o mtodo index(), e o scaffold que era automtico e escondido antes agora est no nosso cdigo fonte nos diversos mtodos presentes. Voc pode livremente alterar esses mtodos e tambm adicionar outros que supram a necessidade do seu sistema.Voltando aplicao, voc deve ter reparado que no cadastro de tarefas no possvel cadastrar o a hora de incio e fim das tarefas, somente a data, apesar de um atributo do tipo Date conter a data. Isso ocorre por que o gerador de cdigo do Grails gera os campos com a preciso apenas para a data. Para deixarmos da forma que precisamos, vamos abrir o arquivo ListaTarefas/grails-app/views/tarefa/create.gspEncontre a seguinte tag (por volta da linha 35):

Est uma tag prpria do Grails, que como voc j deve saber, vai gerar os campos pra seleo de data e hora. O Grails, possui diversas tags prprias, como