Vraptor 3

Preview:

DESCRIPTION

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

Citation preview

VRAPTOR

Desenvolvimento Web em Java

@agosticristiano.agosti@gmail.com

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

Agenda● Motivação

● Conceito

● Surgimento

● Características

● Vantagens e Desvantagens

● Por onde começar

● Funcionamento

● Estrutura de um Projeto

● Configurações

● Integração

Motivação

Conceito MVC

Conceito Framework

É uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica.

Conceito

"VRaptor 3 é um framework MVC para web focado no

desenvolvimento ágil"

● 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

Características VRaptor

Características VRaptor

Características VRaptor

Características VRaptor

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

Desvantagens

● Maior dependência de html, css e javascript

● Não possui componentes próprios

Funcionamento

Exemplo

Estrutura de um Projeto

Configurações web.xml

Modelo

Recursos

● @Resource

● @Component

● @Path

● @Post

● @Get

@Resource

@Resource

http://localhost:8080/meuProjeto/mundo/boasVindas

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

/WEB-INF/jsp/mundo/boasVindas.jsp

Configuração por Convensão

@Path

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

@Path

view lista.jsp

@Path

formulario.jsp

PessoaController

@Postformulario.jsp

PessoaController

@Get

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)

Rest

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

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

@Component

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.

Injeção de Dependência

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())

Validator

● Classe Validator deve ser injetada no construtor

Validator estilo Clássico

Validator estilo Fluente

Validator estilo BeanValidator

Enviando para view

Download

Upload

Download/Upload

Integração

Integração

● Hibernate

● Adicionar jars

● persistence.xml

Integração

● SpringFramework

● Adicionar jars

● applicationContext.xml

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)

Fontes de Exemplos

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

● https://github.com/agosti

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

Cristiano Agosticristiano.agosti@gmail.comhttp://agosti.blog.br @agosti

Recommended