SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
VRaptor 4
& Plugins
Leonardo
Wolter
github.com/leocwolter
leonardo.wolter@caelum.com.br
github.com/leocwolter
O que é o
VRaptor?
Existe de monte!
Mas framework MVC
Extensível
Customizável
&
AdminController/paga-muito-dinheiro
AdminController/admin/paga-muito-dinheiro
/admin/paga-muito-dinheiro AdminController
SÓ ADMINS
Seu plugin
Existem
MUITOS!
Antes de criar,
Pesquise!
github.com/caelum/vraptor-contrib
vraptor.org/en/docs/plugins
ErrorControl
SimpleMailEnvio de email {
ErrorControl
SimpleMail
Hibernate
JPA
Envio de email
Controle de
{
Transações {
ErrorControl
SimpleMail
Hibernate
JPA
Routes
Brutauth
Envio de email
Controle de
{
Transações {
Controle de
Rotas {
LEGAL.
E COMO EU USO UM?
Autorização com
VRaptor-Brutauth!
github.com/caelum/vraptor-brutauth
1 Vraptor-contrib
2 Versão mais Atual
2 Versão mais Atual
3 DependênciaPOM.xml
<dependency>
<groupId>br.com.caelum.vraptor</groupId>
<artifactId>vraptor-brutauth</artifactId>
<version>4.0.0.Final</version>
</dependency>
1 Vraptor-contrib
2 Versão mais Atual
3 DependênciaPOM.xml
1 Crie uma regra
public class LoginRule implements CustomBrutauthRule{
@Inject private Sessao sessao;
public boolean isAllowed() {
return sessao.estaLogado();
}
}
2 Anote sua action
@CustomBrutauthRules(LoginRule.class)
public void adicionaForm() {}
1 Crie uma regra
2 Anote sua action
3 Teste!
VALIDAÇÃO COM
SIMPLE-VALIDATOR
github.com/caelum/vraptor-simple-validator
REPITA!
1 Vraptor-contrib
REPITA!
1 Vraptor-contrib
2 Versão mais Atual
REPITA!
1 Vraptor-contrib
2 Versão mais Atual
3 DependênciaPOM.xml
REPITA!
1 Injete SimpleValidator
@Inject
private final SimpleValidator validator;
2 Valide seu campo
validator.validate(contato.getNome(),
ValidationStrategies.lengthBiggerThan(4L))
3 Confirmação
validator.validate(contato.getNome(), ValidationStrategies.lengthBiggerThan(4l))
.onSuccessAddConfirmation(“contato.adicionado”);
4 Para onde ir?
validator.validate(contato.getNome(), ValidationStrategies.lengthBiggerThan(4l))
.onSuccessAddConfirmation(“contato.adicionado”, contato.getNome());
.onErrorRedirectTo(this).adicionaForm();
5 Message.properties
ValidationStrategies.lengthBiggerThan = O campo precisa ter
mais de {0} caracteres!
validator.validate(contato.getNome(), ValidationStrategies.
lengthBiggerThan(4l))
5 Message.properties
contato.adicionado = O contato foi adicionado com sucesso!
.onSuccessAddConfirmation(“contato.adicionado”);
1 Injete SimpleValidator
2 Valide seu campo
3 Mensagem de confirmação(opcional)
4 Para onde ir se der erro?
5 Messages.properties
6 Teste!
:)
EU QUERO
FAZER U
PLUGIN
PHP é mais rápido!
SOLUÇÃO
PROVISÓRIA
PERMANENTE
http://localhost:8080/index.php
http://localhost:8080/index.php
/admin/paga-muito-dinheiro AdminController
/paga-muito-dinheiro.php
GAMBS PERMANENTE
VRAPTOR-PHPFIER
1
vraptor.org/javadoc
Qual classe sobrescrever?
&&
github.com/caelum/vraptor4
2 Extenda a classe!
public class PhpfierRouter extends
PathAnnotationRoutesParser{}
3 Fale para o CDI!
@Specializes
public class PhpfierRouter
extends PathAnnotationRoutesParser{}
4 Delegue o construtor!
@Inject
public PhpfierRouter(Router router) {
super(router);
}
@Override
protected String defaultUriFor(...) {
return super.defaultUriFor(...)+".php";
}
5 Sobrescreva o método!
6 Teste!
7 Extraia!
8 beans.xml!
9 Dependencia!
Leonardo Wolter
github.com/leocwolter
leonardo.wolter@caelum.com.br
OBRIGADO!

Mais conteúdo relacionado

Destaque

Pandey Classes Faculty Members
Pandey Classes Faculty MembersPandey Classes Faculty Members
Pandey Classes Faculty Memberspandeyclasses
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)Aryel Tupinambá
 
Technology in the classroom
Technology in the classroomTechnology in the classroom
Technology in the classroomlonifife
 
Конкурсная работа «Столица событийного туризма»
Конкурсная работа   «Столица событийного туризма»Конкурсная работа   «Столица событийного туризма»
Конкурсная работа «Столица событийного туризма»Светлана Воздвиженская
 
Storyboard
StoryboardStoryboard
StoryboardZoeYanz
 
Using Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer LoyaltyUsing Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer LoyaltySMART Service Desk
 
English inmersion 2011
English inmersion 2011English inmersion 2011
English inmersion 2011kenjabib
 
20120717 role of dna to promote cdm
20120717 role of dna to promote cdm20120717 role of dna to promote cdm
20120717 role of dna to promote cdmTsendsuren Batsuuri
 
English inmersion 2011
English inmersion 2011English inmersion 2011
English inmersion 2011kenjabib
 
Public Lecture "City Identity and City Branding: Case of Kharkov"
Public Lecture "City Identity and City Branding: Case of Kharkov"Public Lecture "City Identity and City Branding: Case of Kharkov"
Public Lecture "City Identity and City Branding: Case of Kharkov"Oleksiy Musiyezdov
 

Destaque (20)

Pandey Classes Faculty Members
Pandey Classes Faculty MembersPandey Classes Faculty Members
Pandey Classes Faculty Members
 
Wedding Invitation
Wedding InvitationWedding Invitation
Wedding Invitation
 
Education Mela Canada
Education Mela CanadaEducation Mela Canada
Education Mela Canada
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
 
Technology in the classroom
Technology in the classroomTechnology in the classroom
Technology in the classroom
 
Конкурсная работа «Столица событийного туризма»
Конкурсная работа   «Столица событийного туризма»Конкурсная работа   «Столица событийного туризма»
Конкурсная работа «Столица событийного туризма»
 
Canada student Visa
Canada student VisaCanada student Visa
Canada student Visa
 
Nuevas tics
Nuevas ticsNuevas tics
Nuevas tics
 
Storyboard
StoryboardStoryboard
Storyboard
 
отчет за 2013 год
отчет за 2013 годотчет за 2013 год
отчет за 2013 год
 
Informe de gestión y acta de empalme
Informe de gestión y acta de empalmeInforme de gestión y acta de empalme
Informe de gestión y acta de empalme
 
Using Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer LoyaltyUsing Mobility to Nurture Customer Loyalty
Using Mobility to Nurture Customer Loyalty
 
рцо «арсенал»
рцо «арсенал»рцо «арсенал»
рцо «арсенал»
 
English inmersion 2011
English inmersion 2011English inmersion 2011
English inmersion 2011
 
20120717 role of dna to promote cdm
20120717 role of dna to promote cdm20120717 role of dna to promote cdm
20120717 role of dna to promote cdm
 
Confederation college ppt
Confederation college pptConfederation college ppt
Confederation college ppt
 
English inmersion 2011
English inmersion 2011English inmersion 2011
English inmersion 2011
 
Test 2 study guide
Test 2 study guideTest 2 study guide
Test 2 study guide
 
Training sale man ftth
Training sale man ftth Training sale man ftth
Training sale man ftth
 
Public Lecture "City Identity and City Branding: Case of Kharkov"
Public Lecture "City Identity and City Branding: Case of Kharkov"Public Lecture "City Identity and City Branding: Case of Kharkov"
Public Lecture "City Identity and City Branding: Case of Kharkov"
 

Semelhante a VRaptor 4 & Plugins Guide

Conceitos básicos VRaptor - Criando uma agenda
Conceitos básicos VRaptor - Criando uma agendaConceitos básicos VRaptor - Criando uma agenda
Conceitos básicos VRaptor - Criando uma agendaMateus Parente
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
ASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCFelipe Pimentel
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorLoiane Groner
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaMarcelo Fleury
 
PHP Conference 2016
PHP Conference 2016PHP Conference 2016
PHP Conference 2016Edison Costa
 
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...Francois Marier
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
Vraptor apresentação das funcionalidades
Vraptor apresentação das funcionalidadesVraptor apresentação das funcionalidades
Vraptor apresentação das funcionalidadesWilton Silva
 
Curso de Wordpress - Do Zero ao Site no Ar
Curso de Wordpress - Do Zero ao Site no ArCurso de Wordpress - Do Zero ao Site no Ar
Curso de Wordpress - Do Zero ao Site no ArRenzo Colnago
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberEr Galvão Abbott
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconBruno Rocha
 
Otimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHPOtimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHPEr Galvão Abbott
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 

Semelhante a VRaptor 4 & Plugins Guide (20)

Conceitos básicos VRaptor - Criando uma agenda
Conceitos básicos VRaptor - Criando uma agendaConceitos básicos VRaptor - Criando uma agenda
Conceitos básicos VRaptor - Criando uma agenda
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
ASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVC
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A Pena
 
PHP Conference 2016
PHP Conference 2016PHP Conference 2016
PHP Conference 2016
 
Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5
 
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
Login de usuários: podemos fazer algo melhor que usar senhas ou serviços cent...
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
Vraptor apresentação das funcionalidades
Vraptor apresentação das funcionalidadesVraptor apresentação das funcionalidades
Vraptor apresentação das funcionalidades
 
Curso de Wordpress - Do Zero ao Site no Ar
Curso de Wordpress - Do Zero ao Site no ArCurso de Wordpress - Do Zero ao Site no Ar
Curso de Wordpress - Do Zero ao Site no Ar
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saber
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Otimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHPOtimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHP
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 

VRaptor 4 & Plugins Guide