Introdução a Vraptor 4
André Luiz Forchesatto
Apresentação
● Especialista em Ciência da Computação pela UFSC;
● Graduado em Tecnologia em Informática pela Unoesc;
● Atuação
○ Sócio Camtwo Sistemas;
○ Desenvolvedor Java desde 2002;
○ Professor;
● Contato
○ http://about.me/andreforchesatto
○ andreforchesatto@gmail.com
○ @forchesatto
Objetivo
● Compreender o funcionamento de um
framework Action Based;
● Desenvolver utilizando Vraptor como
framework MVC;
● Utilizar REST e HTML 5;
● Criar ações que utilizam Ajax;
Agenda
● Conceito
● Características
● Vantagens e Desvantagens
● Por onde começar
● Funcionamento
○ Controller
○ Padrões
○ View
○ REST
○ Validatores
○ Ajax
● Indo Além
Conceito MVC
O VRaptor 4 traz alta produtividade
para um desenvolvimento Java Web
rápido e fácil com CDI.
É um framework MVC opensource
com grande comunidade de
desenvolvedores e usuários!
Conceito
● Desenvolvido por Guilherme Silveira no IME-USP
em 2003
● Versão 2 em 2004
● Versão 3 em 2009
● Versão 4 em 2014
● Mantido principalmente pela Empresa Caelum
● Documentação: http://www.vraptor.org
● Fontes: https://github.com/caelum/vraptor4/
● Livro:http://www.casadocodigo.com.
br/products/livro-vraptor
VRaptor 4
Características VRaptor
Características VRaptor
Características VRaptor
Características VRaptor
Vantagens
● Framework Brasileiro Open source
● Traz alta produtividade e facilidades de
outros mundos (ex. Grails, Rails)
● Encapsula a lógica dos Servlets
● Baseado em Configuração por Convensão
● Utiliza Injeção de Dependência
● Construção de Ações usando Anotações
Por onde começar
● http://www.vraptor.org
● http://www.vraptor.org/pt/docs/guia-de-1-minuto/
● http://www.vraptor.org/pt/docs/guia-de-10-minutos/
● Projetos de exemplo:
○ https://bintray.com/caelum/VRaptor4/br.com.caelum.
vraptor/
Funcionamento
Donwload
<dependency>
<groupId>br.com.caelum</groupId>
<artifactId>vraptor</artifactId>
<version>4.0.0.Final</version>
</dependency>
https://bintray.com/caelum/VRaptor4/br.com.caelum.vraptor/
Estrutura de um Projeto
1 - Controladores Java
2 - Páginas JSP para a VIEW
Convenção:
Para cada controlador temos uma pasta de
mesmo nome e dentro as páginas
representando os métodos.
Controlador
● Utilizado como classe que recebe os dados
da view e coordena as lógicas de negócio;
● Por convenção deverá ter o sufixo
Controller;
● Nome utilizado para registrar o componente
que será chamado no navegador;
● A URL não deve conter o sufixo;
Controlador
1 - Anotação indicado que a classe é um
controlador.
2 - Injeção de dependência
3 - Método que pode ser acessado na URL
Padrões
/WEB-INF/jsp/{nomeDoResource}/{logica}.jsp
http://localhost:8080/meuProjeto/index/ola.
NomeDoResource = index
Lógica = ola
View
● Conversão automática de tipos;
● Classe Result
○ Disponibiliza valores para a view
○ Na view: ${nomeVariavel}
● Retorno de métodos também podem ser
acessados na view
○ List<Cliente> todos(){}
■ view ${clienteList}
○ Cliente get(){}
■ view ${cliente}
Padrão View
● Segue Padrão JSP com HTML normal
● name dos componentes deverão ser os
atributos das classes do modelo
Controller e View
@IncludeParameters
Redirecionamento e Foward
● Redirect
○ Acontece do lado do cliente, fará o browser acessar
uma nova URL;
● Foward
○ Acontece do lado do servidor transparente para o
cliente/browser
Redirecionadores Vraptor
Redirecionadores Vraptor
Prática
● Criar projeto com o maven e configurar;
● Criar controlador e página básica;
REST
● REST é um conjunto de restrições que define
um padrão arquitetural;
● Permitir o endereçamento dos recursos do
seu sistema de uma forma padronizada;
● Protocolo HTTP não somente como uma
maneira de transmitir dados;
REST
● Triangulo REST
○ Substantivos: Recursos
○ Verbos: Operações
■ GET
■ POST
■ PUT
■ DELETE
■ HEAD, OPTIONS e TRACE
○ Content Type: Representação
Melhorando a URI para REST
● @Path redefine o padrão Vraptor de acesso a
lógica
● Pode ser utilizado template no @Path {id}
REST - Verbos
● @Post, @Get, @Delete, @Put
● GET /produtos => recupera a lista de todos os
produtos.
○ Método lista.
● POST /produtos => adiciona um produto na
lista de todos os produtos.
○ Método adiciona.
● GET /produtos/4 => mostra o produto de id 4.
○ Método edita.
REST - Verbos
● PUT /produtos/10 => atualiza o produto de id
10.
○ Método atualiza.
● DELETE /produtos/3 => remove o produto de
id 3.
○ Método remove.
REST - Verbos
REST - VIEW
<button class="link" name="_method"value="DELETE">Remover</button>
<button type="submit" name="_method" value="PUT">Enviar</button>
<form action="<c:url value="/produtos/${produto.id }"/>"
method="POST">
Prática
● Mudar lógicas dos controllers e das view para
REST
Validadores
● Classe Validator deve ser injetada
● Estilo clássico
● Estilo fluente
● Bean Validation
● Redirecionamento:
○ validator.onErrorForwardTo(this).form();
○ validator.onErrorRedirectTo(this).form();
○ validator.onErrorUsePageOf(this).form();
○ validator.onErrorSendBadRequest();
Validadores clássicos
Validadores Fluente
Validadores Bean Validation
Mostrar erros na página
Prática
● Fazer validação utilizando Bean Validation do
Hibernate
Ajax
● Asynchronous Javascript and XML
● Um conjunto de tecnologias:
○ HTML
○ DOM
○ XHTML
○ CSS
○ XML
○ XSLT
○ XMLHttpRequest
○ JavaScript
Ajax
● Foi batizado em 2005 pela publicação do
artigo “Ajax: A New Approach to Web
Application” Escrito por Jossé James Garret
● Ajax pode ser usado com Java, Php, Ruby,
etc..
● Ajax = Javascript rodando no browse e se
comunicando com o servidor
Como funciona o AJAX
Como funciona o AJAX
Por que usar AJAX
● Respostas mais rápidas;
● Economia na banda do servidor;
● Maior interatividade;
Ajax - Vraptor
● Só trabalha na parte servidora;
● Pode ser utilizado qualquer framework
javaScript para fazer a parte cliente;
● Auxilia bastante na hora de gerar o JSON
para o retorno do Ajax;
Ajax - Vraptor
● Vraptor pode serializar os valores para JSON
ou XML
● Por padrão apenas tipos primitivos (String,
Números, Enums, Datas)
Ajax - Formato
{"cliente": {
"nome": "Joao"
}
}
<cliente>
<nome>Joao</nome>
</cliente>
Ajax - View
● Baixar o Jquery ui
○ http://jqueryui.com/
● Colocar na pasta webapp/static/js
● Declarar no final antes do </body> o arquivo
● Pode ser utilizado para desenvolver várias
funcionalidades como:
○ autocomplete
■ http://api.jqueryui.com/autocomplete/
○ requisições ajax
■ http://api.jquery.com/category/ajax/
Prática
● Desenvolver componente autocomplete para
cidade
Indo além
● Interceptadores
● Eventos
● Conversores
● Download e Upload
Como Contribuir
● Participando das listas de discussões (guj e
google groups)
● Colaborando com a documentação
● Reportando bugs e sugerindo novas
funcionalidades
● Montando o ambiente
● Colaborando com código (github)
Referências
● http://www.vraptor.org/pt/
● http://www.casadocodigo.com.
br/products/livro-vraptor
● http://getbootstrap.com/
● http://api.jquery.com/
● http://api.jqueryui.com/

Aula Introdução a VRaptor 4 - Pós Java UTFPR