Download - Vraptor 3
![Page 2: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/2.jpg)
Apresentação
● Mestre em Ciência da Computação
● Professor na Universidade do Oeste de Santa Catarina - Unoesc
(unoesc.edu.br)
● Sócio proprietário da Camtwo Sistemas (camtwo.com.br)
● A mais de 10 anos trabalhando com Java e web
● Autor do agosti.blog.br
● Participante da comunidade oesc-livre.org
Cristiano Agosti
![Page 3: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/3.jpg)
Agenda● Motivação
● Conceito
● Surgimento
● Características
● Vantagens e Desvantagens
● Por onde começar
● Funcionamento
● Estrutura de um Projeto
● Configurações
● Integração
![Page 4: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/4.jpg)
Motivação
![Page 5: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/5.jpg)
Conceito MVC
![Page 6: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/6.jpg)
Conceito Framework
É uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica.
![Page 7: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/7.jpg)
Conceito
"VRaptor 3 é um framework MVC para web focado no
desenvolvimento ágil"
![Page 8: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/8.jpg)
● Desenvolvido por Guilherme Silveira no IME-USP em 2003
● Versão 2 em 2004
● Versão 3 em 2009
● Mantido pela empresa Caelum (http://vraptor.caelum.com.br)
● Fontes https://github.com/caelum/vraptor
● Apostila http://www.caelum.com.br/apostilas
QUEM DISSE QUE PROGRAMAR JAVA PRA WEB
TINHA QUE SER CHATO?
Surgimento
![Page 9: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/9.jpg)
Características VRaptor
![Page 10: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/10.jpg)
Características VRaptor
![Page 11: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/11.jpg)
Características VRaptor
![Page 12: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/12.jpg)
Características VRaptor
![Page 13: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/13.jpg)
Características VRaptor
![Page 14: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/14.jpg)
Características VRaptor
![Page 15: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/15.jpg)
Características VRaptor
![Page 16: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/16.jpg)
Características VRaptor
![Page 17: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/17.jpg)
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
![Page 18: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/18.jpg)
Desvantagens
● Maior dependência de html, css e javascript
● Não possui componentes próprios
![Page 19: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/19.jpg)
Por onde começar
● http://vraptor.caelum.com.br/pt/docs/guia-de-um-minuto
● http://vraptor.caelum.com.br/pt/docs/guia-de-dez-minutos
● Java 7 JDK (http://www.oracle.
com/technetwork/pt/java/javase/downloads)
● Projeto Vraptor Blank 3.0 (https://code.google.
com/p/vraptor3/downloads/list)
● Eclipse for JEE develpers (Juno) (http://www.eclipse.
org/downloads/packages/release/juno/sr1)
● Tomcat 7.0 (http://tomcat.apache.org/download-70.cgi)
● Postgres e PgAdmin(http://www.postgresql.org.br/downloads)
![Page 20: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/20.jpg)
Funcionamento
![Page 21: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/21.jpg)
Exemplo
![Page 22: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/22.jpg)
Estrutura de um Projeto
![Page 23: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/23.jpg)
Configurações web.xml
![Page 24: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/24.jpg)
Modelo
![Page 25: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/25.jpg)
Recursos
● @Resource
● @Component
● @Path
● @Post
● @Get
![Page 26: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/26.jpg)
@Resource
![Page 27: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/27.jpg)
@Resource
http://localhost:8080/meuProjeto/mundo/boasVindas
/WEB-INF/jsp/{nomeDoResource}/{pagina}.jsp
/WEB-INF/jsp/mundo/boasVindas.jsp
Configuração por Convensão
![Page 28: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/28.jpg)
@Path
http://localhost:8080/exemploVraptor/pessoa/lista
![Page 29: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/29.jpg)
@Path
![Page 30: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/30.jpg)
view lista.jsp
![Page 31: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/31.jpg)
@Path
formulario.jsp
PessoaController
![Page 32: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/32.jpg)
@Postformulario.jsp
PessoaController
![Page 33: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/33.jpg)
@Get
![Page 34: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/34.jpg)
Rest
A Transferência de Estado Representacional (Representational State Transfer) ou somente (REST) é uma técnica de engenharia de software para sistemas hipermídia distribuídos como a World Wide Web. (Roy Fielding)
![Page 35: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/35.jpg)
Rest
● Verbos: Operações● GET● POST● PUT● DELETE● HEAD, OPTIONS e TRACE
![Page 36: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/36.jpg)
Ganhos Rest
● Menor acoplamento da view com controller
● O desenvolvedor web não precisa conhecer os métodos
presentes na classe Java
● Integração Rest com outras linguagens
![Page 37: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/37.jpg)
@Component
![Page 38: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/38.jpg)
Escopo
● @RequestScoped - o componente é o mesmo durante uma requisição
● @SessionScoped - o componente é o mesmo durante uma http session
● @ApplicationScoped - component é um singleton, apenas um por aplicação
● @PrototypeScoped - component é instanciado sempre que requisitado.
![Page 39: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/39.jpg)
Injeção de Dependência
![Page 40: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/40.jpg)
Result
● Classe Result deve ser injetada no construtor
● result.include("pessoas", pessoas);
● result.include("pessoa", pessoa);
● result.redirectTo(this).formulario();
● result.use(json())
● result.use(xml())
![Page 41: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/41.jpg)
Validator
● Classe Validator deve ser injetada no construtor
![Page 42: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/42.jpg)
Validator estilo Clássico
![Page 43: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/43.jpg)
Validator estilo Fluente
![Page 44: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/44.jpg)
Validator estilo BeanValidator
![Page 45: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/45.jpg)
Enviando para view
![Page 46: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/46.jpg)
Download
![Page 47: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/47.jpg)
Upload
![Page 48: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/48.jpg)
Download/Upload
![Page 49: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/49.jpg)
Integração
![Page 50: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/50.jpg)
Integração
● Hibernate
● Adicionar jars
● persistence.xml
![Page 51: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/51.jpg)
Integração
● SpringFramework
● Adicionar jars
● applicationContext.xml
![Page 52: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/52.jpg)
![Page 53: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/53.jpg)
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)
![Page 54: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/54.jpg)
Fontes de Exemplos
● Os códigos apresentados podem ser obtidos no endereço:
● https://github.com/agosti
![Page 55: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/55.jpg)
Considerações
● É preciso analisar o problema que se quer resolver (cada
caso é um caso)
● Alternativa a mais
● Curva de aprendizado pequena
● Código fonte Livre
● Saiba analisar os frameworks
![Page 56: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/56.jpg)
Referências
● http://vraptor.caelum.com.br/pt/docs/
● https://github.com/caelum/vraptor
● http://www.caelum.com.br/apostila-vraptor-
hibernate/
![Page 57: Vraptor 3](https://reader033.vdocuments.pub/reader033/viewer/2022042715/5590b5501a28ab105f8b45a3/html5/thumbnails/57.jpg)
Cristiano [email protected]://agosti.blog.br @agosti