Upload
cristiano-agosti
View
2.230
Download
1
Embed Size (px)
DESCRIPTION
Apresentação sobre o Framework Vraptor realizada no Fisl 14
Citation preview
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
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)
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
Referências
● http://vraptor.caelum.com.br/pt/docs/
● https://github.com/caelum/vraptor
● http://www.caelum.com.br/apostila-vraptor-
hibernate/
Cristiano [email protected]://agosti.blog.br @agosti