Você está na página 1de 54

Introduo a Vraptor 4

Andr Luiz Forchesatto

Apresentao
Especialista em Cincia da Computao pela UFSC;
Graduado em Tecnologia em Informtica pela Unoesc;
Atuao
Scio 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 aes que utilizam Ajax;

Agenda

Conceito
Caractersticas
Vantagens e Desvantagens
Por onde comear
Funcionamento

Controller
Padres
View
REST
Validatores
Ajax

Indo Alm

Conceito MVC

Conceito

O VRaptor 4 traz alta produtividade


para um desenvolvimento Java Web
rpido e fcil com CDI.
um framework MVC opensource
com grande comunidade de
desenvolvedores e usurios!

VRaptor 4
Desenvolvido por Guilherme Silveira no IME-USP
em 2003
Verso 2 em 2004
Verso 3 em 2009
Verso 4 em 2014
Mantido principalmente pela Empresa Caelum
Documentao: http://www.vraptor.org
Fontes: https://github.com/caelum/vraptor4/
Livro:http://www.casadocodigo.com.

br/products/livro-vraptor

Caractersticas VRaptor

Caractersticas VRaptor

Caractersticas VRaptor

Caractersticas VRaptor

Vantagens
Framework Brasileiro Open source
Traz alta produtividade e facilidades de
outros mundos (ex. Grails, Rails)
Encapsula a lgica dos Servlets
Baseado em Configurao por Convenso
Utiliza Injeo de Dependncia
Construo de Aes usando Anotaes

Por onde comear


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 - Pginas JSP para a VIEW
Conveno:
Para cada controlador temos uma pasta de
mesmo nome e dentro as pginas
representando os mtodos.

Controlador
Utilizado como classe que recebe os dados
da view e coordena as lgicas de negcio;
Por conveno dever ter o sufixo
Controller;
Nome utilizado para registrar o componente
que ser chamado no navegador;
A URL no deve conter o sufixo;

Controlador

1 - Anotao indicado que a classe um


controlador.
2 - Injeo de dependncia
3 - Mtodo que pode ser acessado na URL

Padres
http://localhost:8080/meuProjeto/index/ola.

NomeDoResource = index
Lgica = ola

/WEB-INF/jsp/{nomeDoResource}/{logica}.jsp

View
Converso automtica de tipos;
Classe Result
Disponibiliza valores para a view
Na view: ${nomeVariavel}
Retorno de mtodos tambm podem ser
acessados na view
List<Cliente> todos(){}
view ${clienteList}

Cliente get(){}
view ${cliente}

Padro View
Segue Padro JSP com HTML normal
name dos componentes devero 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

Prtica
Criar projeto com o maven e configurar;
Criar controlador e pgina bsica;

REST
REST um conjunto de restries que define
um padro arquitetural;
Permitir o endereamento dos recursos do
seu sistema de uma forma padronizada;
Protocolo HTTP no somente como uma
maneira de transmitir dados;

REST
Triangulo REST
Substantivos: Recursos
Verbos: Operaes

GET
POST
PUT
DELETE
HEAD, OPTIONS e TRACE

Content Type: Representao

Melhorando a URI para REST


@Path redefine o padro Vraptor de acesso a
lgica
Pode ser utilizado template no @Path {id}

REST - Verbos
@Post, @Get, @Delete, @Put
GET /produtos => recupera a lista de todos os
produtos.
Mtodo lista.
POST /produtos => adiciona um produto na
lista de todos os produtos.
Mtodo adiciona.
GET /produtos/4 => mostra o produto de id 4.
Mtodo edita.

REST - Verbos
PUT /produtos/10 => atualiza o produto de id
10.
Mtodo atualiza.
DELETE /produtos/3 => remove o produto de
id 3.
Mtodo remove.

REST - Verbos

REST - VIEW
<form action="<c:url value="/produtos/${produto.id }"/>"
method="POST">

<button class="link" name="_method"value="DELETE">Remover</button>

<button type="submit" name="_method" value="PUT">Enviar</button>

Prtica
Mudar lgicas dos controllers e das view para
REST

Validadores

Classe Validator deve ser injetada


Estilo clssico
Estilo fluente
Bean Validation
Redirecionamento:

validator.onErrorForwardTo(this).form();
validator.onErrorRedirectTo(this).form();
validator.onErrorUsePageOf(this).form();
validator.onErrorSendBadRequest();

Validadores clssicos

Validadores Fluente

Validadores Bean Validation

Mostrar erros na pgina

Prtica
Fazer validao 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 publicao 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 rpidas;
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 padro apenas tipos primitivos (String,
Nmeros, 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 vrias
funcionalidades como:
autocomplete
http://api.jqueryui.com/autocomplete/
requisies ajax
http://api.jquery.com/category/ajax/

Prtica
Desenvolver componente autocomplete para
cidade

Indo alm

Interceptadores
Eventos
Conversores
Download e Upload

Como Contribuir
Participando das listas de discusses (guj e
google groups)
Colaborando com a documentao
Reportando bugs e sugerindo novas
funcionalidades
Montando o ambiente
Colaborando com cdigo (github)

Referncias
http://www.vraptor.org/pt/
http://www.casadocodigo.com.
br/products/livro-vraptor
http://getbootstrap.com/
http://api.jquery.com/
http://api.jqueryui.com/