andreforchesatto
2,288 views
54 slides
Aug 01, 2014
Slide 1 of 54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
About This Presentation
Apresentação aula introdução a VRaptor 4 na pós graduação UTFPR Pato Branco.
VRaptor 4 + CDI + EJB + WildFly
Código fonte do projeto template: https://github.com/forchesatto/posJavaUtfpr
Size: 1.31 MB
Language: pt
Added: Aug 01, 2014
Slides: 54 pages
Slide Content
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
○[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/
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
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;
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.
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)