Introdução a Vraptor 4André 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○ [email protected]○ @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ência3 - Método que pode ser acessado na URL
Padrões
/WEB-INF/jsp/{nomeDoResource}/{logica}.jsp
http://localhost:8080/meuProjeto/index/ola.
NomeDoResource = indexLó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/
Top Related