Você está na página 1de 49

GRAILS

Desenvolvimento Web gil



Paradigma:
Programao por conveno
O que Grails?
Framework para desenvolvimento de aplicaes
web na plataforma Java utilizando a linguagem
Groovy, principais caractersticas:
ALTA produtividade;
Programao por conveno;
Completo;
Dont Repeat Yourself (DRY);

Curiosidade: Inicialmente chamado de Groovy on
Rails at ser renomeado para Grails, aps pedido do
fundador do projeto Ruby on Rails, David Heinemeier
Hansson.
Alta Produtividade
Rapidamente voc cria toda a estrutura de
sua aplicao web;

Gera CRUD(Create, Read, Update and Delete)
com apenas alguns comandos;
Programao por Conveno
Modelo de desenvolvimento de software que
busca diminuir as decises que os
desenvolvedores precisam tomar;

Caso o programador no queira configurar nada,
basta seguir a conveno do framework;

Aumenta a produtividade devido ao fato do
programador no precisar se preocupar com as
configuraes e sim com a lgica de negcio;
Completo
Possui todos os componentes necessrios
para iniciar o trabalho:


Dont Repeat Yourself No se Repita
Tarefas repetitivas so realizadas pelo
framework e no mais pelo
desenvolvedor
O que Groovy?
Linguagem idealizada por James
Strachan (2003)
As primeiras verses de testes surgiram em
2004
A primeira verso oficial (1.0) foi lanada em
2007
A segunda verso (2.0) foi lanada em 2012

Groovy: linguagem JVM com o objetivo inicial de
extender Java.

Uso de metaprogramao
Compila bytecode (assim como Java)
Interoperabillidade (Java roda Groovy, Groovy roda
Java)
Principais diferenas entre Groovy e Java:

Enquanto Java tem tipos primitivos e no-primitivos,
tudo em Groovy objeto (Object)
Tipagem opcional (duck typing)
Um comando numa linha no exige ponto-e-vrgula
Return: sempre o valor de retorno do ltimo comando
Conceito de verdade: qualquer valor diferente de null
Gerao dinmica (implcita) de get() e set()
Principais diferenas entre Groovy e Java

Enquanto Java tem tipos primitivos e no-primitivos,
tudo em Groovy objeto (Object)
Um comando numa linha no exige ponto-e-vrgula
Principais diferenas entre Groovy e Java

Tipagem opcional (duck typing)
Duck typing: Se aje como um pato, um pato! Quack!
Principais diferenas entre Groovy e Java

Return: sempre o valor de retorno do ltimo comando
Principais diferenas entre Groovy e Java

Conceito de verdade: qualquer valor diferente de null
Principais diferenas entre Groovy e Java

Gerao dinmica (implcita) de get() e set()
Java:
Groovy:
E o que eu preciso fazer pra us-lo?

Uma verso do Java Development Kit(JDK) instalada
(no um JRE, hein!);
A criao da varivel de ambiente JAVA_HOME;
Download do Grails;
A criao da varivel de ambiente GRAILS_HOME;
O desenvolvimento pode ser atravs do prompt de
comando ou por diversas IDE, no nosso exemplo
utilizamos a IDE Groovy/Grails Tool Suite (GGTS)

Projeto Livraria
Tabelas no banco
Tabelas no banco
Criando uma aplicao
IDE:
Comando: create-app livraria
Estrutura Criada
Plugins e Dependncias
Plugin responsvel por efetuar validao de campos CPF,
CNPJ e CEP
Configurao do Banco de Dados
Caso precise de um banco mais robusto,
alterar as linhas em vermelho no arquivo
grails-app/conf/DataSource.groovy
Adicionar o driver JDBC na
pasta grails-app/lib
Criando as classes de Domnio
Comando: create-domain-class livraria.Livro
IDE:
Os domnios so gerados em grails-app/domain
Estrutura de um domnio
Campos de Validao:
Estrutura de um domnio
Abordagem utilizada para gerao de
artefatos(controladores, vises, etc) que
implementam as operaes CRUD,
existem 2 abordagens:
Scaffolding Dinmico;
Scaffolding Esttico;
Scaffolding
Vises so geradas em tempo de execuo, facilita o
desenvolvimento pois nenhum cdigo relacionado aos
controladores e vises precisa ser desenvolvido.
No til para equipes que desejam personalizar o sistema.
Scaffolding Dinmico
Comando: create-controller livraria.Livro
IDE:
Os controladores so gerados em grails-app/controller
Cdigo gerado:
Scaffolding Esttico
Produz a partir de templates, o cdigo dos controladores e
vises que podem ser personalizados pela equipe web.
O projeto exemplo utilizou essa abordagem pois necessitou de
algumas customizaes nos controladores e vises.
Comando: generate-all livraria.Livro
IDE:
Os controladores so gerados em grails-app/controller, as vises Groovy Server Pages(GSPs) so geradas em grails-
app/views/livro

Para cada mtodo mtodo correspondente a uma ao no controlador criada uma viso (arquivo .gsp)

Controladores e Vises geradas:
BootStrap.groovy
Essa classe executada durante o boot da aplicao e serve, entre outros propsitos, para
inicializar a aplicao por exemplo, criando algumas instncias de objetos.
Plugins de Autenticao de Usurio e
Bibliotecas javascript
Adicionar as seguintes linhas no arquivo BuildConfig.groovy para
utilizar o plugin Grails spring-security que auxilia na autenticao
dos usurios:
Adicionar em grails-app/web-app/js os
seguintes .jar que sero utilizados para
efetuar mscaras de CEP, CNPJ e CPF
Controle de Acesso de Usurios
Utilizaremos o plugin spring-security-core para controle de acesso de
usurios, ele define uma srie de comandos, entre eles o s2-quickstart que
cria tanto as classes de domnio bsicas tantos os controladores(e suas
respectivas vises) necessrios para lidar com a autenticao de usurios.
Ao executarmos o seguinte comando abaixo:
Ser criada a seguinte estrutura:
livraria.Usuario: classe de domnio que representa os usurios autenticados

livraria.Papel: classe de domnio que representa os papis que os usurios
podem desempenhar. Cada papel possui permisses associadas a ele.

livraria.UsuarioPapel: classe de domnio que representa o relacionamento
muito-para-muitos entre usurio e papis. Ou seja, um usurio pode
desempenhar vrios papis e um papel pode ser desempenhado por vrios
usurios.

LoginController e LogoutController (e suas respectivas vises) que so
responsveis pelas operaes de login e logout da aplicao.
Viso da pgina principal para
diferentes papis de usurio
Viso Administrador Viso Cliente
Controle de Acesso de Usurios
Por fim adicione o seguinte trecho ao arquivo conf/Config.groovy para
habilitar a chamada HTTP, POST e GET no controlador LogoutController que
responsvel pela operao de logout.
Personalizao dos templates
utilizados no scaffolding
Essa personalizao tem como objetivo:
Gerar controladores e vises com
funcionalidades relacionadas ao controle
de acesso j incorporada;
Gerar vises create.gsp e edit.gsp com
mscaras de entrada para atributo CPF
Personalizao dos templates
utilizados no scaffolding
Comando: install-templates
IDE:
O comando anterior copia os templates usados nas atividades de gerao de cdigo
para o diretrio src/templates. Esse diretrio inclui:

O diretrio artifacts contm os templates utilizados pelos comandos create-*
(create-domain-class, create-controller, etc);
O diretrio scaffolding contm os templates utilizados pelos comandos generate-*
(generate-all, generate-controller, generate-views, etc). No contexto da nossa
aplicao apenas sero personalizados os templates presentes nesse diretrio;
O diretrio testing contm os templates utilizados na gerao de artefatos de teste;
O diretrio war contm o template do arquivo web.xml utilizado na gerao do
arquivo deployment da aplicao (arquivo.war)
Personalizao dos templates
utilizados no scaffolding
Template: Controller.groovy
O plugin spring-security permite a utilizao da anotao @Secured para
aplicar regras de controle de acesso aos controladores( e suas respectivas
aes), o template Controller.groovy utilizado na gerao dos
controladores, ao alter-lo, todos os controladores gerados aps essa
alterao iro seguir o novo formato.
Adicionando o trecho de cdigo em vermelho dizemos que
Para acessar um controlador, o usurio deve ter o papel ROLE_ADMIN para
acessar todas as aes ou ROLE_CLIENTE para acessar a ao show
Template create.gsp e edit.gsp
O template create.gsp e edit.gsp utilizado na gerao de vises(views) create e edit
associadas a cada um dos controladores da aplicao, modificaremos ambos para
que seja permitido construir mscaras de CPF, CNPJ e CEP utilizando o plugin jQuery
Masked Input.
Para que as vises(views) create.gsp e edit.gsp tenha a seguinte mscara:
Adiciona o seguinte trecho de cdigo em vermelho abaixo:
Template: index.gsp
O template index.gsp utilizado na gerao das vises(views) associadas
c cada um dos controladores da aplicao, modificando seguinte trecho
de cdigo em vermelho abaixo, estaremos permitindo a operao de
criao de entidades (ao create()) apenas para usurios autenticados
e que possui o papel necessrio para executar essa ao.
Template: show.gsp
O template show.gsp utilizado na gerao das vises(views) associadas a cada um dos
controladores da aplicao, modificando seguinte trecho de cdigo em vermelho abaixo,
estaremos realizando as seguintes modificaes:
Operao create() apenas ser apresentada se o usurio encontra-se autenticado e possui
papel necessrio para executar essa ao:
Operao edit() e delete() apenas ser apresentada se o usurio encontra-se autenticado e
possui papel necessrio para executar essa ao:
Aps realizar as alteraes nos templates, necessrio executar o
comando generate-all para que as alteraes sejam refletidas nos
controladores e vises da aplicao da livraria, efetuaremos o comando
nas seguintes classes de domnio:
Personalizao dos templates
utilizados no scaffolding
Livro Autor Categoria
Mapeamento URL
Por conveno, a pgina principal a que lista todos os controladores da
aplicao, iremos alterar o arquivo conf/URLMapping.groovy conforme abaixo
para que aponte para um controlador que iremos criar no prximo passo.
Controlador: MainController
Comando: create-controller livraria.Main
IDE:
Implemente o controlador conforme imagem abaixo:
Controlador: MainController
Observe que apenas usurios autenticados com os papis de
Role_ADMIN e ROLE_CLIENTE tem acesso ao controlador.
Crie uma viso(view) chamada index.gsp e coloque na pasta
grails-app/views/main e edite ela de tal maneira que fique
conforme abaixo:
Controlador: MainController
Criando usurios e papis no
BootStrap.groovy
Executando a aplicao
Abra no seu navegador a url: http://localhost:8080/livraria
Executando a aplicao
Perguntas?

Você também pode gostar