ebook img

VRaptor: Desenvolvimento ágil para web com Java PDF

223 Pages·2014·6.24 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview VRaptor: Desenvolvimento ágil para web com Java

© CasadoCódigo TodososdireitosreservadoseprotegidospelaLeinº9.610,de10/02/1998. Nenhumapartedestelivropoderáserreproduzida,nemtransmitida,semauto- rizaçãopréviaporescritodaeditora,sejamquaisforemosmeios: fotográficos, eletrônicos,mecânicos,gravaçãoouquaisqueroutros. CasadoCódigo Livrosparaoprogramador RuaVergueiro,3185-8ºandar 04101-300–VilaMariana–SãoPaulo–SP–Brasil CasadoCódigo Sumário Sumário 1 Introdução 1 1.1 Umpoucodehistória . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Ondevocêvaichegarcomesselivro? . . . . . . . . . . . . . . . . . . . 2 2 OcomeçodeumprojetocomVRaptor 3 2.1 Vantagensedesvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Oprojeto—Lojadelivros . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Criandoosprojetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 CriandoumHelloWorld . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Criandoosprojetosdalivraria . . . . . . . . . . . . . . . . . . . . . . . 11 3 Crieoseuprimeirocadastro 17 3.1 Criaçãodosmodelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 CriandooCadastro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3 Complementandoocadastro . . . . . . . . . . . . . . . . . . . . . . . . 26 4 OrganizaçãodocódigocomInjeçãodeDependências 33 4.1 CompletandoofuncionamentodoController . . . . . . . . . . . . . . 33 4.2 InversãodeControle:InjeçãodeDependências . . . . . . . . . . . . . 40 4.3 ImplementandoaEstante . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4 Criandoobjetoscomplicados-ComponentFactory . . . . . . . . . . . 48 4.5 Tempodevidadoscomponentes-Escopo . . . . . . . . . . . . . . . . 50 4.6 Callbacksdeciclodevida . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.7 Outrostiposdeinjeçãodedependênciae@PostConstruct . . . . . . 55 i Sumário CasadoCódigo 5 Tomandoocontroledosresultados 57 5.1 Redirecionandoparaoutrométododomesmocontroller . . . . . . . 57 5.2 Disponibilizandováriosobjetosparaasjsps . . . . . . . . . . . . . . . 59 5.3 Maissobreredirecionamentos . . . . . . . . . . . . . . . . . . . . . . . 60 5.4 Outrostiposderesultado . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6 Validandooseudomínio 67 6.1 Internacionalizaçãodasmensagens . . . . . . . . . . . . . . . . . . . . 72 6.2 Validaçãofluente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.3 OrganizandomelhorasvalidaçõescomoBeanValidations . . . . . . 77 6.4 Boaspráticasdevalidação . . . . . . . . . . . . . . . . . . . . . . . . . 80 7 IntegraçãoentreSistemasusandooVRaptor 85 7.1 Serializandoosobjetos . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 7.2 Recebendoosdadosnosistemacliente . . . . . . . . . . . . . . . . . . 93 7.3 Consumindoosdadosdoadmin . . . . . . . . . . . . . . . . . . . . . 95 7.4 TransformandooXMLemobjetos . . . . . . . . . . . . . . . . . . . . 99 7.5 AproveitandomelhoroprotocoloHTTP-REST . . . . . . . . . . . . 101 7.6 Usandométodoserecursosdamaneiracorreta . . . . . . . . . . . . . 104 7.7 UsandoRESTnonavegador . . . . . . . . . . . . . . . . . . . . . . . . 108 8 DownloadeUploaddearquivos 109 8.1 Enviandoarquivosparaoservidor:Upload . . . . . . . . . . . . . . . 109 8.2 Recuperandoosarquivossalvos:Download . . . . . . . . . . . . . . . 115 8.3 OutrasimplementaçõesdeDownload . . . . . . . . . . . . . . . . . . 118 9 Cuidandodainfraestruturadosistema:Interceptors 121 9.1 Executandoumatarefaemváriospontosdosistema:Transações . . . 121 9.2 Controlandoosmétodosinterceptados . . . . . . . . . . . . . . . . . . 125 9.3 Evitandoinstanciaçãodesnecessáriadeinterceptors:@Lazy . . . . . . 128 10 Melhorandoodesigndaaplicação:ConversoreseTestes 137 10.1 Populandoobjetoscomplexosnarequisição:Conversores . . . . . . . 138 10.2 TestesdeunidadeemprojetosqueusamVRaptor . . . . . . . . . . . 153 11 Próximospassos 157 ii CasadoCódigo Sumário 12 Apêndice:MelhorandoausabilidadedaaplicaçãocomAJAX 161 12.1 Executantoumaoperaçãopontual:Remoçãodelivros . . . . . . . . . 163 13 Apêndice:ContainersdeInjeçãodeDependência 171 13.1 PicoContainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 13.2 SpringIoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 13.3 GoogleGuice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 13.4 CDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 14 Apêndice:PluginsparaoVRaptor 181 14.1 VRaptorJPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 14.2 VRaptorHibernateeVRaptorHibernate4 . . . . . . . . . . . . . . . . 183 14.3 VRaptorEnvironment. . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 14.4 VRaptorSimpleMaileVRaptorFreemarker . . . . . . . . . . . . . . . 187 14.5 Agendamentodetarefas:VRaptorTasks . . . . . . . . . . . . . . . . . 189 14.6 Controledeusuários:VRaptorSACI . . . . . . . . . . . . . . . . . . . 191 14.7 Criandooseupróprioplugin . . . . . . . . . . . . . . . . . . . . . . . 194 15 Apêndice:FuncionamentointernodoVRaptor 197 15.1 InicializaçãodoServidor . . . . . . . . . . . . . . . . . . . . . . . . . . 197 15.2 Definindoospapéisdoscomponentes:estereótipos . . . . . . . . . . 202 15.3 TratamentodeRequisições . . . . . . . . . . . . . . . . . . . . . . . . . 207 15.4 CatálogodeInterceptors . . . . . . . . . . . . . . . . . . . . . . . . . . 208 15.5 MaisinformaçõessobreofuncionamentodoVRaptor . . . . . . . . . 215 iii Capítulo1 Introdução 1.1 Um pouco de história Hámuitotempo,desenvolverumaaplicaçãowebemJavaeraumatarefamuitotra- balhosa. Porumlado, tínhamososServletseJSP,nosquaistodootratamentodas requisiçõeseramanualecadaprojetoouempresaacabavacriandoseuprópriofra- mework—“O”framework—paratrabalhardeumaformamaisagradável.Poroutro lado,tínhamosváriosframeworksquesepropunhamaresolverosproblemasdadifi- culdadedesetrabalharcomosServlets,masquelheobrigavamaescrevertoneladas de XML, arquivos .properties e a estender classes ou implementar interfaces parapoderagradaraesseframework. Nesse cenário surgiu a ideia de um framework mais simples, que facilitasse o desenvolvimentowebsemtornaroprojetorefémdassuasclasseseinterfaces. Sur- giaoVRaptor,criadopelosirmãosPauloSilveiraeGuilhermeSilveira,em2004na UniversidadedeSãoPaulo.Em2006foilançadaaprimeiraversãoestável:oVRap- tor2,comaajudadoFabioKung,doNicoSteppateváriosoutrosdesenvolvedores, absorvendováriasideiaseboaspráticasquevieramdoRubyonRails. 1.2. Ondevocêvaichegarcomesselivro? CasadoCódigo Em2009,oVRaptorfoitotalmentereformulado,levandoemcontaaexperiên- ciaobtidacomoserroseacertosdaversãoanterioredemuitosoutrosframeworks daépoca. Aversão3levaaoextremoosconceitosdeConvençãosobreConfigura- çãoeInjeçãodeDependências,emquetodososcomportamentosnormaispodem ser mudados facilmente usando anotações ou sobrescrevendo um dos componen- tesinternos—bastando,paratanto,implementarumaclassecomainterfacedesse componente. Além disso, esta nova versão possibilita criar de uma maneira fácil não apenas aplicações web que rodam no browser, mas também serviços web que seguemasideiasdeserviçosRESTful,facilitandoacomunicaçãoentresistemasea implementaçãodeAJAXnobrowser. 1.2 Onde você vai chegar com esse livro? OobjetivodesselivroémostrarmuitoalémdousobásicodoVRaptoresuascon- venções. Mais importante que aprender essas convenções é entender a arquitetura interna do VRaptor e como criar suas próprias convenções, adaptando o VRaptor paraasnecessidadesespecíficasdoseuprojeto.Sabercomoascoisasfuncionamin- ternamenteémetadedocaminhoandadoparaquevocêtenhaumdomíniosobreo frameworkesesintaconfortávelparafazeroquequisercomele. Durante esses mais de três anos do VRaptor 3, tenho respondido as mais vari- adas dúvidas sobre o seu uso no GUJ (http://www.guj.com.br) , o que nos ajudou muito a modelar as novas funcionalidades e descobrir bugs. Mas, muito mais do queisso, mostrou-nostodoopoderdaextensibilidade: mesmoosproblemasmais complexosenecessidadesmaisespecíficasdosprojetosconseguiramserresolvidos sobrescrevendoocomportamentodoVRaptorusandoosmeiosnormaisdasuaAPI ousobrescrevendoumdeseuscomponentes. Neste livro você vai ver o uso básico e esperado, junto com o que considero boas práticas e uso produtivo das ferramentas que esse framework proporciona. Mastambémcompartilharvárioscasosdousonãoesperadoecomotambéméfácil implementá-los. Portanto,esselivroépraquemquerentendercomofuncionaoVRaptorecomo aproveitartodooseupoderesuaextensibilidadeparatornarodesenvolvimentode aplicaçõesomaisfácileprodutivoquantopossível. Estáprontoparacomeçar? 2

Description:
Aprenda o framework Java mais poderoso e produtivo que existe! Desenvolvido por brasileiros, o VRaptor é o framework web mais adotado no mercado nacional e traz diversas facilidades para os desenvolvedores. Crie sistemas web de forma descomplicada, mantendo seu código organizado e usando as melhor
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.