57
VRAPTOR Desenvolvimento Web em Java @agosti [email protected]

Vraptor 3

Embed Size (px)

DESCRIPTION

Apresentação sobre o Framework Vraptor realizada no Fisl 14

Citation preview

Page 1: Vraptor 3

VRAPTOR

Desenvolvimento Web em Java

@[email protected]

Page 2: Vraptor 3

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

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

Motivação

Page 5: Vraptor 3

Conceito MVC

Page 6: Vraptor 3

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

Conceito

"VRaptor 3 é um framework MVC para web focado no

desenvolvimento ágil"

Page 8: Vraptor 3

● 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

Características VRaptor

Page 10: Vraptor 3

Características VRaptor

Page 11: Vraptor 3

Características VRaptor

Page 12: Vraptor 3

Características VRaptor

Page 13: Vraptor 3

Características VRaptor

Page 14: Vraptor 3

Características VRaptor

Page 15: Vraptor 3

Características VRaptor

Page 16: Vraptor 3

Características VRaptor

Page 17: Vraptor 3

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

Desvantagens

● Maior dependência de html, css e javascript

● Não possui componentes próprios

Page 20: Vraptor 3

Funcionamento

Page 21: Vraptor 3

Exemplo

Page 22: Vraptor 3

Estrutura de um Projeto

Page 23: Vraptor 3

Configurações web.xml

Page 24: Vraptor 3

Modelo

Page 25: Vraptor 3

Recursos

● @Resource

● @Component

● @Path

● @Post

● @Get

Page 26: Vraptor 3

@Resource

Page 27: Vraptor 3

@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

@Path

http://localhost:8080/exemploVraptor/pessoa/lista

Page 29: Vraptor 3

@Path

Page 30: Vraptor 3

view lista.jsp

Page 31: Vraptor 3

@Path

formulario.jsp

PessoaController

Page 32: Vraptor 3

@Postformulario.jsp

PessoaController

Page 33: Vraptor 3

@Get

Page 34: Vraptor 3

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

Rest

● Verbos: Operações● GET● POST● PUT● DELETE● HEAD, OPTIONS e TRACE

Page 36: Vraptor 3

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

@Component

Page 38: Vraptor 3

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

Injeção de Dependência

Page 40: Vraptor 3

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

Validator

● Classe Validator deve ser injetada no construtor

Page 42: Vraptor 3

Validator estilo Clássico

Page 43: Vraptor 3

Validator estilo Fluente

Page 44: Vraptor 3

Validator estilo BeanValidator

Page 45: Vraptor 3

Enviando para view

Page 46: Vraptor 3

Download

Page 47: Vraptor 3

Upload

Page 48: Vraptor 3

Download/Upload

Page 49: Vraptor 3

Integração

Page 50: Vraptor 3

Integração

● Hibernate

● Adicionar jars

● persistence.xml

Page 51: Vraptor 3

Integração

● SpringFramework

● Adicionar jars

● applicationContext.xml

Page 52: Vraptor 3
Page 53: Vraptor 3

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

Fontes de Exemplos

● Os códigos apresentados podem ser obtidos no endereço:

● https://github.com/agosti

Page 55: Vraptor 3

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 57: Vraptor 3

Cristiano [email protected]://agosti.blog.br @agosti