Baixe o app para aproveitar ainda mais
Prévia do material em texto
"Sôci'êdadede EnsinoSuneriorda PamffJa Elogios antecipados para o Use a Cabeça! Servlets & JSpTM "Estelivro, Usea Cabeça!Servlets& JSP, é tãobomquantoo Use a Cabeça!EJB, quemefezrir E megarantiu97%deaproveitamentonaprova!" - Jef Cumps, Consultor deJ2EE, Cronos "ParanossasaulasdeServlet/JSP,nóscompramosmaisdedezlivros,semencontrarnenhum,defato, satisfatórioparanossasnecessidadesdeensino...Até queencontrarmosesta'jóia'pedagógicaque vocêtemagoranasmãos!Os livrosdasérieUsea Cabeça!nostornarammelhoresprofessores." - Philippe Maquet: Instrutor Sênior da Loop Factory,Bruxelas Elogios parao Use a Cabeça!EJBTM e para o formato da série Use a Cabeça! "A tecnologiaJavaestáemtodososlugares- emtelefonescelulares,carros,câmeras,impressoras, jogos,PDAs, ATMs, smartcards,bombasdegasolina,estádios,equipamentosmédicos,webcams, servidores,vocêescolhe.SevocêdesenvolvesoftwareenãoconheceJava,definitivamente,estána horadevocêmergulhardecabeça- Usea Cabeça!." - ScottMcNealy,Chairman,PresidenteeCEO, SunMicrosystems (Notadodepartamentode marketing:isto foi o melhorque vocêconseguiudoScott? Vejase conseguefazer comqueele acrescentealgodotipo:"Se nóstivéssemosos livrosdasérie Usea Cabeça!hádoisanos,aindapodíamoster aquelailusão...'~). "Um livro incrivelmenteagradável.Dividido e interconectadocomoumarededeconhecimentos. ComoprofessordaPurdueUniversity,comespecializaçãoemdesenvolvimentoavançadodesoftware utilizandotecnologiasbaseadasemJava,estouemconstantebuscapormateriaisdeapoioque ofereçammotivaçãoeumalinguagemcompreensivadirecionadaparao exame,masqueaomesmo temponãodesestimulemosalunos.O livro 'Usea Cabeça!EJB' preencheestesrequisitosfacilmente! Livros comoestessãoextremamenteraros. Incluí estelivro comoumdostextosessenciaisparaasfuturasturmasdo cursodegraduaçãoavançada queeudoude 'DesenvolvimentodeAplicaçõesparaEmpresas'.Parabénsparaosautores;continuem como excelentetrabalho!" - ProfessorDan Gill, DepartamentodeTecnologiade Computadores,Purdue University. "Além doestiloenvolventequeo levarádonível deleigoaostatusdeguerreiroaclamadono Java,o livro Use a Cabeça!Javatrazumgrandenúmerodequestõespráticas,queoutrostítulostratamcomo o temível'exercícioparao leitor...' Ele é inteligente,irônico,descoladoeprático- existempoucos livroscomestascaracterísticasequesãocapazesdeensinarsobreserializaçãodeobjetoseprotocolos deexecuçãoemredeaomesmotempo." - Dr. Dan Russel,Diretor dePesquisasExperimentaise CientíficascomUsuários, IBM Almaden ResearchCenter (e professordeInteligênciaArtificial na Stanford University). Quemaneiramaravilhosadeaprender!!!EU NÃO CONSIGO LARGAR ESTE LIVRO!!! Meu filho de3 anosacordouà Ih40 damanhã,eeuo colÇ>queidevoltanacamasegurandoo livro euma lanterna,econtinueilendopormaisumahora. - Ross Goldberg "O Usea Cabeça!Java,escritoporKathyeBert,dáàssuaspáginasimpressasumaaparênciaGUI comovocêjamaisviu.De umjeito diferenteedescolado,osautorestransformama aprendizagemem Java emumaempolganteexperiência,dotipo 'qualseráapróximasurpresa?'" .- Warren Keuffel, RevistaSoftwareDevelopment. ( Parabéns pelo formato Use a Cabeça! "É rápido,irreverente,divertidoeenvolvente.Cuidado- vocêpoderealmenteaprenderalgumacoisa!" - Ken Arnold, ex-EngenheiroSênior da Sun Microsystems eco-autor(comJames Gosling, criador do Java) do livro "The J avaProgramming Language" "Eu passeino exameSCBCD com94%deaproveitamento.Realmente,o 'P! EJB' édemais!Eu li o livro todoem10dias..." - BasavarajDevershetty "...aúnicamaneiradesabero valordeumtutorialé saberseelerealmenteensinarábem.Use a Cabeça!Javaéexcelenteparaensinar.Tudobem,eupenseiqueelefossebobinho...mas,medeiconta dequeestavaaprendendoostópicostotalmente,àmedidaqueavançavapelolivro." "O estilodoUse a Cabeça!Javatomoumeuaprendizado,digamos,maisfácil." - slashdot(análisedo sitehonestpuck) "Eu jamaispoderiaimaginarquealguémpudesserir enquantolesseumlivro deTI! Usandoo material doUsea Cabeça!EJB euconseguiumaótimapontuação(91%) eestabeleciumrecordemundial comoo maisjovemSCBCD, com14anosdeidade." - Afsah Shafquat(o maisnovoSCBCD do mundo) "Esselivro étãobacanaquemedeuvontadedeCHORAR! Estouchocado." - Floyd Jones,Escritor TécnicoSênior/Garotodapiscina,BEA "SevocêqueraprenderJava,nãoprocuremais:bem-vindoaoprimeirolivro técnicocom característicasGUI! Comseuformatorevolucionárioeelaboradocomperfeição,o livro oferece vantagensqueoutrostítulossobreJava simplesmentenãoconseguem...Prepare-separaumpasseio realmenteextraordináriopelouniversoJava." - Neil R. Bauman,Diretor Executivoecapitãoda Geek Cruises (www.GeekCruises.com) "Se existealguémnomundofamiliarizadocomo conceitodo 'Usea Cabeça!',estesoueu.Estelivro étãobomqueeumecasariacomelenaTV!" - Rick Rockwell, comediante. O noivooriginal do programa"Quem Quer SeCasar com um Milionário?" ("Who Wants to Marry a Millionaire"), da FOX Television "O Use a Cabeça!Java écomoo Monty Pythonmeetsthegangoffourl ...o textoestátãobem divididoentrequebra-cabeçasehistórias,questionárioseexemplos,quevocêobtémumaabrangência quehenhumlivro deinformáticaconseguiuatéagora." - DouglasRowe,ComunidadedeUsuáriosdeJava, Columbia. "'Use a Cabeça!Java'...dáumnovosignificadoàfrasedemarketingdaO'Reilly: 'Existeum O'Reilly paraisso'z.Eu o escolhi,poismuitasoutraspessoasqueeuadmiroo classificaramcomo 'revolucionário'eeudescreviumatécnicatotalmentediferenteparaestelivro.Eles estavam(estão) certos...SemfugirdotípicoformatodaO'Reilly, elesconseguiramumformatocientífico,masbem aceito.O resultadoédivertido,irreverente,atuiü,interativoebrilhante...A sensaçãodeler estelivro é a deestarsentadobempróximoaosalto-falantesemumasaladereunião,aprendendo- erindo- com oscolegas...SevocêquerENTENDER Java,comprelogoo seu." - Andrew Pollack, www.thenorth.com SociedadedeEnsinoSuperbrdaPaat1ira "Lembraquandovocêestavanojardimdeinfância?Não? Bem,equandovocêaprendeupelaprimeira vezo alfabeto?É dificillembrar?Bem,nãofazmal.Lendoo Use a Cabeça!lava,vocêvaivoltar a sedivertirenquantoaprende...Paraaquelesqueseinteressamporaprendernovaslinguagensde programaçãoenãovieramdaáreadeciênciadacomputaçãooudaprogramação,estelivro éuma preciosidade...Ele tornadivertidoo aprendizadodeumalinguagemdificil decomputação.Esperoque existammaisautoresinteressadosemquebraro velhoecorriqueiromodelo'tradicional'doestilode escrever.Aprenderlinguagensdecomputaçãodeveriaserprazerosoenãooneroso." - Judith Taylor,ComunidadedeUsuários da Maeromedia, SoutheastOhio. "Há poucosdias,recebiminhacópiadoUsea Cabeça!lava,deKathy SierraeBertBates.Eu ainda estouno começodolivro,maso quemeencantoufoi que,mesmoestandocomsononaquelaprimeira noite,mepegueipensando:'tudobem,sómaisumapáginaevou dormir.'" - JoeLitton "FINALMENTE, umlivro delava escritotal qualeuescreveriasetivessesidoeu. Falandosério,estelivro simplesmentearrasaqualqueroutrolivro desoftwarequeeujá li...É muito dificil escreverumbomlivro...É precisomuitotempoparaexplicarosassuntos,emumaseqüência naturalecujofocoéo leitor.É muitotrabalho.Muitos autores,notoriamente,nãoestãoprontosparao desafio.Parabénsà equipedoUse a Cabeça!EJB porestetrabalhoprimoroso! P.S.Quandovai sairo projetoUse a Cabeça!l2EE? E o Use a Cabeça!Desenvolvedorde ComponentesparaaWeb?E comoeufaçoparaquemeuvideocassetegraveumjogo defutebol enquantoestoutrabalhando?" - Wally Flint "Sevocêérelativamenteuminicianteemprogramaçãoeestáinteressadoemlava,eiso seulivro... Abordandotudo- desdeobjetosparaacriaçãodeinterfacesgráficasdeusuário(GUl),tratamentode exceções(erros),redes(sockets)emultitarefas,atécomoagruparsuaspilhasdeclassesemumúnico arquivodeinstalação-, estelivroécompletíssimo...Sevocêgostardoestilo,estoucertodequeiráadoraro livroassimcomoeu.EsperoqueasérieUseaCabeça!possaserestendidaaváriosoutrosassuntos!" - LinuxQuestions.org "Quandoeuli o 'Use a Cabeça!lava', domesmoautor,eupenseiqueé impossívelescreveroutro livro (aquelesobreEJB também)deumaformatãobrilhante.Porém,agoraelesnossurpreenderam comestelivro aindamaislegal.OslivrosdasérieUsea Cabeca!tornaram-sealgonecessário (QUASE UMA EXIGÊNCIA) emtodososassuntos.Eu queri~serumacriançaparapoderaprender tudodamaneiracomoensinaestelivro." - Anshu Mishra Eu trabalheicomEJB hácercade4 anoseo acheiumabagunçaàsavessas.Depoisdeleras especificações2.1e2.0,eudescobriqueéapenasumat*** 3 fumegantequeficoumaior.Seulivro respondeuàmaioriadasincontáveisperguntasquemartelavammeucérebrodeamendoimepermitiu- mepassarnaprovacomumapontuaçãode92%... Vencendofacilmenteaquelecolegade 14 anosdeidadepor 1ponto.:-) Muito obrigado. - Jim Steiner "Eu meVICIEI noscontosdo livro,noscódigoscomanotações,nasentrevistaspreparatóriasenos exercíciosparao cérebro." - MiehaelYuan, autor,Enterprise J2ME sea CabecaServlets & JSPTM ...:> Segunda Edição Não seria fantástico se existisse um livrosobre Servlets que fosse mais interessantedo que apagar spam da sua caixa de mensagens? Talvez isso seja uma ilusão... Bryan Basham Kathy Sierra Bert Bates Rio deJaneiro.2008 Use a Cabeça Servlets & JSpTM ©Alta Books Editora - Starlin Alta Con Com Ltda 2008 Do original Head First Servlets and JSPTM. Authorized translation of the English edition of Head FirstServletsand JSPTM, 2st Edition ©2008 O'Reil/y Media,lnc. ISBN: 978-0596102340This translation ispublished and sold bypermission ofO'Reil/y Media, Inc., the owner ofali rights to publish and sell thesome. Todos os direitosreservados e protegidospela Lei 5988 de 14/12/73.Nenhuma partedeste livro,sem autorizaçãopréviapor escrito da editora,poderá ser reproduzidaou transmitidasejam quais forem os meios empregados:eletrônico,mecânico, fotográfico,gravação ou quaisqueroutros.Todo o esforço foi feito para fornecer a mais completae adequada informação,contudo a editorae o(s) autor(es)não assumem responsabilidadepelos resultadose usos da informaçãofornecida. Recomendamos aos leitorestestara informação,bem como tomartodos os cuidados necessários (como o backup), antes da efetivautilização.Este livronão contémCD-ROM, disqueteou qualqueroutra midia. Erratase atualizações:Sempre nos esforçamosparaentregara você, leitor,um livrolivrede erros técnicosou de conteúdo;porém,nemsempre isso é conseguido,seja por motivode alteraçãode software,interpretaçãoou mesmoquando algunsdeslizes constamna versão originalde alguns livros que traduzimos.Sendo assim, criamosem nosso site,www.altabooks.com.br.a seção Erratas,onde relataremos,com a devidacorreção,qualquererro encontradoem nossos livros. Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa ou implícita. Marcas Registradas:Todosos termosmencionadose reconhecidoscomo Marca Registradae/oucomercial são de responsabilidadede seus proprietários.A Editorainformanão estarassociadaa nenhumprodutoe/ ou fornecedorapresentadono livro.No decorrerda obra, imagens,nomesde produtose fabricantespodem tersido utilizados,e desdejá a Editorainformaqueo uso é apenas ilustrativoe/oueducativo,nãovisandoao lucro,favorecimentoou desmerecimentodo produto/fabricante. Produção Editorial: Editora Alta Books Coordenação Editorial: Roberto Baptista Barroco Tradução: Eveline Vieira Machado Revisão: Fernanda Rigamond Revisão Técnica: Helder Borges Diagramação: Equipe Alta Books Impressono Brasil o código de propriedadeintelectualde 10de Julho de 1992proibe expressamenteo uso coletivosem autorizaçãodos detentoresdo direitoautoralda obra, bem como a cópia ilegaldo original.Esta prática generalizada nos estabelecimentosde ensino, provoca uma brutalbaixa nas vendas dos livrosa ponto de impossibilitaros autores de criaremnovas obras. Editora Alta Books Rua Viúva Claudio, 291 - Jacaré Rio de Janeiro - RJ CEP 20551-010 Tel: 21 3278-8069 Fax: 21 3277-1253 www.altabooks.com.br altabooks@altabooks.com.br Esselivro édedicadoatodosaquelesquedecidiramqueEL implicitobject os autores Os "procurados"da série Usea Cabeça!(edeste livro) Beart Bates Bryan Basham Bert éumantigodesenvolvedor earquitetodesoftware,mas umperíodode 10anosem inteligênciaartificialo fez seinteressarporteoriada aprendizagemetreinamento via computador.Ele passoua primeiradécadadesuacarreira comodesenvolvedorviajando pelomundoeajudandoclientes comoarádioNovaZelândia, o TheWeatherChannelea rededeentretenimentosArts andEntertainmentNetwork (A&E) emsuastransmissões. Atualmente,eleémembroda equipedaSunresponsávelpelo desenvolvimentodediversos examesdecertificaçãoemJava, incluindoo recenteSCWCD. Bertéumantigoe incorrigível aficionadopeloGOlevem trabalhandohábastante tempoemumprograma.O Javahádesetomaruma linguagemexpressivao suficienteparaqueelefinalize seuprojeto.Ele éumbom guitarristae,atualmente,está experimentandoo banjo. Suamaisrecenteaventura foi a compradeumcavalo islandês,o quedeverátrazer novosdesafiosaosseus conhecimentosnaáreade treinamento... VIII Kathy gostadeteoriada aprendizagemeassuntos relacionadosàmentedesdea épocaemqueeradesignerde jogos(elaescreveujogospara aVirgin,MGM eAmblin')e desenvolvedoraemI.A2 Grande partedoformatodasérieUse aCabeça!foi desenvolvido enquantolecionavaInteratividade UsandoNovasMidias,no programadeextensãode EstudosemEntretenimento daUniversidadedaCalifómia (DCLA). Recentemente,se tomouinstrutora-chefeda SunMicrosystemseensinaos instrutoresdeJavaadivulgarem asmaisnovastecnologias destalinguagem.Alémdisso, desenvolvediversosexames paracertificaçõesSun,incluindo o SCWCD. JuntocomBert Bates,elatemaplicado extensivamenteosconceitosda sérieUseaCabeça!noensino demilharesdedesenvolvedores. Ela fundouumadasmaiores comunidadesemJavano mundovirtual,ajavaranch. com,premiadaem2003e2004 comoPrêmioProdutividadeem DesenvolvimentodeSoftware. Elaadoracorrer,esquiar,montar acavalo,andardeskatee ciênciasesotéricas. Bryan temmaisdevinte anosdeexperiênciaem desenvolvimentodesoftware, incluindoumperíodocom softwaredeautomação avançadausandotécnicas deI.A naNASA Ele tambématuouemuma consultoria,desenvolvendo aplicaçõescomerciaisem00 personalizadas.Atualmente, BryanéDesenvolvedorde CursosdaSun,comênfase nosprincípiosdedesignem Javaeem00.Elejá trabalhou emdiversoscursosdeJava daSun,incluindoJDBC, J2EE, Servletse JSP, alémde DesenvolvimentodeSoftware utilizando00.Ele foi também o primeirodesignerdosexames SCWCD, nasversõesoriginal eatual. Bryanpraticao ZenBudismo, jogaUltimateFrisbee,adora somepraticao ski telemark. conteúdo (Sumát19) Introdução XIX Por queusarServlets& JSPs: umaintrodução 1 Arquiteturadaaplicaçãoweb:visãogeraldealtonível 37 MinitutorialdoMVC: praticandocomoMVC 67 Sendoumservlet:requesteresposta 93 Sendoumaaplicaçãoweb:atributoselisteners 147 Estadodeconversação:sincronizandoobean/entidade 223 SendoumJSP: escrevendocódigosemJSP 281 Páginassemscripts:escrevendoJSPssemscripts 343 As tagscustomizadassãopoderosas:usandoaJSTL 439 QuandonemaJSTL éo bastante:desenvolvendotagscustomizadas499 Distribuindosuaaplicaçãoweb:distribuiçãodaaplicaçãoweb 601 Mantenhaemsegredo,mantenhaseguro:segurançadaaplicaçãoweb649 O poderdosfiltros:wrappersefiltros 701 PadrõesdeDesignEnterprise:padrõeseStruts 737 ApêndiceA: TestePreparatórioFinal 791 Índice 865 Introdução SeucérebropensandoemServlets.Aqui estávocêtentandoaprenderalgo,enquanto seucérebrolheprestao favordecertificar-sedequetal aprendizadonãoserá interrompido.Ele pensa,"é melhorreservarespaçoparacoisasmaisimportantes,como qualanimalselvagemevitareseesquiarsemroupaéruimmesmo".Então,comovocê vaiinduzi-loapensarquesuavidadependedoconhecimentoemServlets? A quemsedestinaestelivro? Nós sabemoso queseucérebroestápensando Metacognição Domineseucérebrp O quevocêprecisaparaestelivro Passandono examedecertificação Os revisorestécnicos Agradecimentos XX XXI XXlll xxv XXVI XXVlll XXX XXXI IX 1Por que usar servlets& JSPs? As aplicaçõesweb estãona moda.QuantasaplicaçõesGUI vocêconheceque sãousadaspormilhõesdeusuáriosemtodoo mundo?Comodesenvolvedorde aplicaçõesweb,vocênãoprecisaráseprenderaosproblemasdedistribuição presentesemtodaaplicaçãostandalonee irádistribuirsuaaplicaçãoa qualquer pessoaquepossuaumbrowser.Mas vocêprecisarádosservletsedosJSPs, pois asvelhaseestáticaspáginasHTML sãotão,digamos,"1999".Saibacomomudar dosUenaweb,paraaaplicaçãonaweb. Principais elementosdo fluxo de resposta: • Um código de .umIS (no caso de uma solicitação bem sucedida) TIpo de conteúdo (tc."to, i~oem, HIML, ctc_) • O conteúdo (o HTML real, a imagem, etc_) Cliente Principais elementosdo fluxo de solicitação: • O métodoHTTP (a açãode se~executada) • A~<rinaqueseráacessada (umaURL) • Osp:mi:mctrosdofurmulãrio(curoo argtIIIlell!oSparamnrnéloOO) solicitaçãoHTTP Servidor ObjetivosdoExame 2 O queosservidoreswebeosclientesfazemecomoconversam entresi 4 GuiarápidodeHTML 7 O queéo protocoloHTTP? 10 A anatomiadassolicitaçõesHTTP GET ePOST edasrespostasHTTP 16 LocalizandopáginaswebusandoURLs 20 Servidoresweb,páginasestáticasecm 24 DesmistificandoosServlets:escreva,distribuaerodeumservlet 30 JSP foio queaconteceuquandoalguémapresentouo JavaaoHTML 34 Arquiteturada aplicaçãoweb 2 Os servletsprecisamdeajuda. Quandoumasolicitaçãochega,alguémtem queinstaro servletou,pelomenos,alocarumathreadparatratara solicitação. Alguémtemquechamarou o métododoPostOouo métododoGetOdoservlet. Alguémprecisalevara solicitaçãoearespostaparao servlet.Alguémprecisa gerenciaravida,amorteeosrecursosdo servlet.Nestecapítulo,vamosestudaro ContaineredarumaprimeiraolhadanopadrãoMVC. (Controlador'\ iJSP 1 38 39 44 46 50 54 64 65 ObjetivosdoExame O queéumContainereo queeleoferece? Comoficao código(o quetomaumservletumservlet) Nomeandoosservletsemapeando-osaURLs usandoo DD História:BobConstróiumSitedeEncontros(introduçãoaoMVC) VisãogeraleexemplodeMVC (Model-View-Controller) Um DeploymentDescriptor(DD) "funcionando" Ba",ode Comoo J2EE cabenissotudo Dad,,, 1, Modelo JCVQ antigo Serv!et View JSP x conteúdo 3 Minitutorialdo MVC Criando e distribuindo uma aplicaçãoMVC. Chegouahoradecolocara mãonamassaeescreverumformulárioHTML, umcontroladordeservlet,um modelo(classeJava simples),umdeployrnentdescriptorXML eumaview em JSP. É horadecriar,distribuiretestar.Antes,porém,vocêdeveráconfigurar seuambientededesenvolvimento.Em seguida,vocêteráqueconfiguraro seu ambientededistribuição,deacordocomasespecificaçõesdo servletedoJSP, easexigênciasdoTomcat.Concordo,estaéumaaplicaçãopequena...Porém, quaseNÃO existeaplicaçãoquesejatãopequenaeuseo MVC. Especffico para o Tomcat Este nome de diretÓf'io tambémrepresentao •context r::::aroot" queo Torncatusaquando ~ Esta parte daestrutura estó resolvendoURLs.Nós ! de diretórios éexigido exploraremoseste conceno ;~ '-; peloTomcate d~veestaremmaioresdetalhesno l;;;J j diretamenteablllxodo copít1JlosobreDistribuição. I {'seudiretónohome. -~8)~_OOOmedaapricação. parteda••pecifj~ção~l dos Servlets j- '-'\ l§l ,!J. ! _ ~" Este arquivoweb.xmJ1"""" ~ h~TEMQ~Eestarem l ___ _ z;; WEB-INF Específico da 8,--•.: ~ A estrutura deste pacote éAplicação ~;_~_". :~:~~~~u:n=;~o - - .' .' A menosquevocêesteja 1 _~ _ i_~ ~~(~:~~a~:e~t~i:O .. ,'- , -- _ - - maIs tarde). você DEVE colocaro i [pacote deestruturadediretóriosg 8 irnediatamenteabaixode WEB- ~> _si"", INF/classes. ObjetivosdoExame 68 VamosconstruirumaaplicaçãoMVC: primeiroo design 69 Criandoosambientesdedesenvolvimentoedistribuição 72 Criandoetestandoo HTML parao formulárioinicial Criandoo DeploymentDescriptor(DD) 77 Criando,compilando,distribuindoetestandoo servletdecontrole 81 Design,criaçãoetestedocomponentemodelo 82 Otimizandoo controladorparachamaro modelo Criandoedistribuindoo componenteview;(istoéumJSP) 87 Otimizandoo servletdecontroleparachamaro JSP 88 4 Sendo umservlet Servletsvivempara servir clientes.A funçãodeumservletéreceberuma solicitaçãodoclienteedevolverumaresposta.A solicitaçãotalvezsejasimples: "traga-meapáginadeBoas-vindas".Ou podesercomplexa:"Finalizeo processodomeucarrinhodecompras."Asolicitaçãocarregadadoscruciaise o códigodoseuservlettemquesabercomoencontrá-Ioseutilizá-Ios.E eletem quesabercomoenviarumaresposta.Ou não... o servlet usaos dados NÃO Idempotente do POST para atualizar <_.... ~:":: .... ObanCOde.....d.•..QdOS.~ LJ wz -----8.. ~~ WW'. D~ M /servletCliente ':::~irO servJet enviade volta umaresposta ~ com umapáginagerada em HTML ObjetivosdoExame 94 Os ServletssãocontroladospeloContainer 95 Cadasolicitaçãorodaemumathreadseparada! 101 A verdadeirafunçãodoservletno tratamentodassolicitações 105 A históriadasolicitaçãonão-idempotente 112 O quedeterminasevocêrecebeuumasolicitaçãoGET ouPOST? 117 Enviandoeusandoparâmetro(s) 119 Então,essafoi a Solicitação...vejamosagoraa Resposta 126 Vocêpodeconfigurarheadersderesposta,vocêpodeadicionar headersderesposta 133 Redirecionamentodeservletsfazo browsertrabalhar 136 Revisão:HttpServletResponse 140 XI 5 Sendo uma aplicação web Nenhum servletvive sozinho.Nas aplicaçõeswebatuais,várioscomponentes trabalhamemconjuntoporumobjetivo.Temososmodelos,oscontroladores easviews.Temososparâmetrose osatributos.Temosasclasseshelper.Mas, comojuntarospedaços?Comopermitirqueoscomponentescompartilhem informações?Comovocêocultainformações?Comovocêtornaumainformação thread-safe?Seutrabalhopodedependerdestasrespostas. Atributos de SOUctTAÇÃO 9rset ObjetivosdoExame 148 OsParâmetrosInit dãoumaforça 150 ComoumJSP consegueobterosparâmetrosinit do servlet? 155 Osparâmetrosinit docontextodãoumaforça 157 Comparandoo ServletConfigcomo ServletContext 159 Ela querumServletContextListener 166 Tutorial:escrevaumServletContextListenersimples 168 Compile,distribuaetesteo seulistener 176 A históriacompleta,umaanálisedoServletContextListener 178 Listeners:elesnãoservemapenasparaoseventosdecontextos 180 O queéexatamenteumatributo? 185 AAPI Atributo 189 O escopodecontextonãoéthread-safe! 192 Comotomamososatributosdocontextothread-safe? 194 Testandoa Sincronização 195 Os atributosdeSessãosãothread-safe? 198 Osmalesdo SingleThreadModel 201 ApenasosatnbutosdaSolicitaçãoeasvariáveislocaissãothread-safe!204 AtributosdaSolicitaçãoerequestdispatching 205 ,,, ~set Acessível apennspamoquelescomoc:essoQ_HttpSessionespecifico XII 6 conteúdo(sumário) Estado de conversação Os servidoreswebnãotêmmemóriacurta.Assim queeleslheenviamuma resposta,elesesquecemquemvocêé.Na próximavezquevocêfizeruma solicitação,elesnãoo reconhecerão.Elesnãoserecordamdoquevocêsolicitou nopassadoenemdo queelesenviaramcomoresposta.Nada.Porém,algumas vezesvocêprecisamantero estadodeconversaçãocomo clientedurantevárias solicitações.Um carrinhodecomprasnãofuncionariaseo usuáriotivesseque escolherseusprodutosefinalizaracompradeumaúnicavez. 06of.if-f,-",",,-!--r.~""~'- ~"ú'ú..•.•."'~= ObjetivosdoExame Esperamosquesejaumaconversa(comoassessões funcionam) IDs desessão,cookieseoutrosfundamentosdassessões ReescritadeURL: umaalternativa Quandoassessõesenvelhecem;dandoadeusàssessõesruins Possousarcookiesparaoutrascoisasalémdassessões? OsprincipaismomentosdeumHttpSession Não seesqueçadoHttpSessionBindingListener A migraçãodasessão Exemplosdelistener 224 226 231 237 241 250 254 256 257 261 Sendo um JSP Um JSP torna-seum servlet.Um servletquevocênãocria.O Containerolha o seuJSP, o traduzemcódigo-fonteJava eo compilaemumaclasseservletde Javacompleta.Porém,vocêtemquesabero queacontecequandoo códigoque vocêescreveuemJSP setransformaemcódigoJava.Vocêpodeescrevercódigos JavaemJSP, masseráquevocêdeveria?E senãofor umcódigoJava,oque vocêpodeescrever?Comoelejaz a traduçãoparao códigoJava?Veremosseis diferentestiposdeelementosJSP ~cadaumcomseuprópriopropósitoe,sim, sintaxeúnica.Vocêaprenderácomo,porqueeo queescreverno seuJSP. E você aprenderáo quenãoescrever. ~',. ., ._.~. ObjetivosdoExame CriandoumJSP simplesusandoo "out"euma diretivadepágina Expressões,variáveisedeclaraçõesemJSP Horadever.umservletgeradoapartirdoJSP A variáveloutnãoéo únicoobjetoimplícito ">.,.O Ciclo devidae a inicializaçãodeumJSP MyISP-.J<pSc1vlet Já queestamosfalandosobreisso...astrêsdiretivas Scriptletsconsideradosperigosos?Eis aEL Mas, espere...aindanãovimosasações 282 283 288 296 298 306 314 317 323 XIII 8 Páginas sem scripts Fuja do scripting.SeráqueseuswebdesignersprecisammesmosaberJava? SeráqueelespensamquequemprogramaJavaparaservidorestomar-se-á, digamos,designergráfico?E mesmoquea equipesejasóvocê,vocêquer mesmoummontedebitsepedaçosdecódigosJavanosseusJSPs? Vocêsabe o quesignifica"umpesadelonahoradamanutenção"?Escreverpáginassem scriptsnãosóépossível,comotambémémaisfácil emaisflexívelcomanova especificaçãoJSP 2.0,graçasànovaExpressionLanguage(EL). Padronizada depoisdo JavaScriptedoXPATH, oswebdesignerssentir-se-ãoemcasacoma EL. E vocêtambémvai gostar(assimquevocêseacostumar).Porém,existem algumasarmadilhas...aEL separececomo Java,masnãoé.Às vezes,aEL se comportadeformadiferentedecomocomportar-se-iaamesmasintaxeno Java. Portanto,fiqueatento! XIV .""'<0""" .•.••••.••• '''<1''''<:; '9"",'~.,,<!~~",-,.~."._~d~. ObjetivosdoExame 344 Quandoosatributossãobeans 345 Ações-padrão:useBean,getProperty,setProperty 349 Vocêsabefazerreferênciaspolimórficasparabeans? 354 atributoparamdáumaajuda 360 Convertendopropriedades 363 A ExpressionLanguage(EL) salvao dia! 368 Usandoo operadorponto(.) paraacessarpropriedades emapearvalores 370 O [c:catch]dáavocêmaisopções(Lists,arrays...) 372 Mais detalhesdosoperadorespontoe [ ] 376 Os objetosimplícitosdaEL 385 FunçõesEL etratandoo "null" 392 Ospedaçosreutilizáveisdotemplate- doistiposde"include" 402 A ação-padrão<jsp:forward> 416 Ela nãoconheceastagsJSTL (umavisãorápida) 417 Revisandoasações-padrãoeo include 417 9 conteúdo As tags customizadassão poderosas Em algunscasos,vocêprecisademaisdo quea EL ou ações-padrão.E se vocêquisessefazerumloopatravésdosdadosdeumarray,exibindoemseguida umitemporlinhaemumatabelaHTML? Vocêsabequepoderiaescreverissoem doissegundos,usandoumloopfor emumscriptlet.Masvocêestátentandoevitar osscripts.Semproblema.QuandoaEL easações-padrãonãoforemsuficientes, vocêpodeusartagscustomizadas.ElassãotãofáceisdeusaremumJSP quanto asações-padrão.Melhorainda,alguémjá escreveuboapartedastagsdequevocê maisprovavelmenteprecisará,easjuntounaJSTL (JSP StandardTagLibrary, ouBibliotecadeTagsJSP Padrão).Nestecapítulo,aprenderemosausartags customizadas,enocapítuloseguinte,aprenderemosacriarasnossasprópriastags. ObjetivosdoExame 440 Fazendoloopssemscripts;<c:forEach> 446 Controlecondicionalcomo <c:i:f>eo <c:choose> 451 Usandoastags<c:set>e<c:remove> 455 Coma <c:import>,hátrêsmaneirasdeincluirconteúdo 460 Customizandoo quevocêinclui 462 Fazendoo mesmocom<c:param> 463 A <c:url>paratodasassuasnecessidadesdehyperlink 465 Crie suasprópriaspáginasdeerro 468 A tag<c:catch>.Semelhanteatry/catch...maisoumenos 472 E sevocêprecisardeumatagqueNÃO estejanaJSTL? 475 Presteatençãoao<rtexprvalue> 480 O quepodeexistirno corpodeumatag 482 O taghandler,o TLD eo JSP 483 A taglib<uri>éapenasumnome,nãoumlocal 484 QuandoumJSP usamaisdeumabibliotecadetags 487 </c:forEach> () .H-ritr.rl'c.te #fler+4.f';tJ ,lll.prN.ltLlsi JÇ' <c;forEach var="1i.stElement" items="${movi.es}">,"------ va.r=-mov.ie"items="${1i;,...tE:J.ezent}"><td>${llICIVie}</td> '-- </c:f:~~ lIJoo.{(asfi.:N.js. 5i!"'!~55tte .j"nll1\ (I:!-""jV;,,!DS 'ufI,+"tJ,,,,+a V;jr-J<!l /"* exhl'~c. MatrL,,{Ievoiutions !«:so,!h"''''f,,''~iros,'''''J,n---'7'j KillBilI BoondockSaints Àmelie ReturnoflheKing MeanGirls xv 10 11 Quando nema JSTL é o bastante... Em algunscasos,aJSTL easações-padrãonãosãosuficientes.Quandovocê precisadealgocustomizado,enãoquervoltaraosvelhosscripts,vocêpodeescreveros seusprópriostaghandlers.Dessamaneira,osseusdesenvolvedoresdepáginaspoderão usarasuatagnassuaspáginas,enquantotodootrabalhoduroéfeitonosbastidores,na suaclassetaghandler.Mashátrêsmaneirasdiferentesdesecriarosseusprópriostag handlers,então,hámuitoo queaprender.Dessastrês,duasforamintroduzidascomo JSP 2.0paratomarasuavidamaisfácil(SimpleTagseTagFiles). ObjetivosdoExame 500 TagFiles: iguaisao include,sóquemelhores 502 Ondeo ContainerprocuraporTagFiles 509 Taghandlerssimples 513 UmatagSimplescomumcorpo 514 E seo corpodatagusarumaexpressão? 519 Vocêaindaprecisasabersobreostag handlersClássicos 529 Um taghandlerClássicobempequeno 531 O ciclo devidaClássicodependedos valoresretomados 536 A interationTaglhepermiterepetiro corpo 537 Valores-padrãoretomadospelaTagSupport 539 A interfaceDynamicAttribute 556 ComBodyTag,vocêtemdoisnovosmétodos 563 E sevocêtivertagsquefuncionamconjuntamente? 567 UsandoaAPI PageContextparataghandlers 577 Distribuindosua aplicaçãoweb Finalmente,suaaplicaçãoestáprontapara o horário nobre.As suaspáginas estãofinalizadas,seucódigoestátestadoeajustado,eo prazodeentregaerahá duassemanasatrás.Mas,paraondevai issotudo?Tantosdiretórios,tantasregras. Quenomevocêdáaosseusdiretórios?Qualnomeo clientepensaqueelestêm?O queéqueo clienterealmentesolicita,ecomoo Containersabeondeprocurar? Referênciaaumbeanlocal XVI ObjetivosdoExame Principaltarefadadistribuição:ondeentrao quê? ~" ArquivosWAR ~ Comoo mapeamentodeservletsREALMENTE funciona =~?::::::~;~:::.Configurandoarquivosdeboas-vindasnoDD Configurandopáginasdeerrono DD ~ ~ Configurandoa inicializaçãodeservletsnoDD __ -êCriando umJSP compatívelcomXML: umDocumentoJSP 602 603 612 616 622 626 628 629 conteúdo ObjetivosdoExame 650 O Top4 emsegurançadeservlets 653 ComoAutenticarnoMundoHTTP 656 AsDezMelhoresRazõespararealizarasuasegurançadeclarativamente659 Quemimplementaa segurançaemumaaplicaçãoweb? 660 Autorização:funçõeserestrições 662 Autenticação:quatrosabores 677 OSQUATRO tiposdeautenticação 677 Protegendoasegurançadosdadosemtrânsito:HTTPS emação 682 Comoimplementarconfidencialidadee integridadededadoscaso a casoedeclarativamente 684 Mantenhaem segredo, mantenhaseguro 12 o~~::::j~~:ma~;~~asmaisflexíveis, G Estáno exame. Suaaplicaçãowebestáemperigo.O perigoespreitaemcadacantodarede.Vocênão querosCarasMausxeretandonastransaçõesdasualojavirtual,roubandonúmeros decartõesdecrédito.TambémnãoquerosCarasMausconvencendoo seuservidor dequeelesnaverdadesãoosClientesEspeciaisQueRecebemGrandesDescontos. E vocênãoquerninguém(amigoOU inimigo)olhandodadosconfidenciaisdos empregados.Seráqueo Jim, dodepartamentodemarketing,precisamesmosaber queaLisa,dodepartamentodeengenharia,ganhatrêsvezesmaisdoqueele? As Dez Melhores Razões para realizar a Sua segurança declaratwamente 'Iil lJmpaucomaisdeprátirocomXML11ÕrJfazmal a 11inguém. O:~:U~::te, as.~eclaraçõescasamnaturalmente deparrame;oSd~~':mp~O) já existentesno eFica multo bemno seucurriculo. ePermiteaosdcsenvoh-edoresde aplicaçõesIeUtJlizarem senlets,mesmosemacessoaocódigo-fonte. O É legal,simplesmente. opoderdos filtros 13 Os filtroslhepermiteminterceptara solicitação.E sepuderinterceptara solicitação,vocêpoderátambémcontrolararesposta.E, melhordetudo,o servlet nempercebeo queaconteceu.Elenuncaficarásabendoquealguémintercedeu entreasolicitaçãodoclienteeainvocaçãodométodoserviceOdoservletpelo Container.O queissosignificaparavocê?Maisférias.Porqueotempoquevocê levariareescrevendoapenasumdosseusservletspodeserdespendido,emvez disso,escrevendoeconfigurandoumfiltrocomacapacidadedeafetartodososseussetvlets.Adicionartrackingdassolicitaçõesdousuárioa todososservletsdasua aplicação?Semproblema.Manipularo outputdecadaservletdasuaaplicação?Sem problema.E vocênãoprecisanemsequertocarnocódigodoservlet. • ·181'" ••--_.•... a pilha• a pilha9 a pilhae oConta;tle<" ""'P<Jn"otrlétodo ~i<eOdo S••••leM I""" o ~~::~~~é fircl,m-.e ""tilo,; ",t;rndodo.pilll<l. a pilhae ObjetivosdoExame Construindoumfiltroparao monitoramentodassolicitações O ciclo devidadeumfiltro Declarandoeordenandofiltros Comprimindoo outputcomumfiltrono ladodaresposta a pilhao ~;::o::-,.Os wrapperssãodemais êiªª:::O códigodoverdadeirofiltrodecompressão Conta;ner-nMlÜQa respost"- Códigodowrapperdecompressão 702 707 708 710 713 719 722 724 XVII 14 Padrões de Design Enterprise Alguémjá fezissoantes.Seestivercomeçandoagoraa desenvolveraplicações webemJava,vocêtemsorte.Poderásebeneficiardo sabercoletivodasdezenas demilharesdedesenvolvedoresquejá trilharamessecaminhoesobreviveram paracontar.Usandotantoospadrõesdedesignespecíficosdo J2EE quanto outrospadrões,épossívelsimplificaro seucódigoea suavida.E o padrãode designmaissignificativoparaaplicaçõesweb,o MVC, possuiatémesmoum frameworkabsurdamentepopular,o Struts,queajudarávocêa criarumservlet FrontControllerflexíveledefácil manutenção.Vocêdevea si mesmotirar vantagemdotrabalhodosoutrosparaquepossadespendermaistemponas coisasmaisimportantesdavida... ObjetivosdoExame 738 O poderdohardwareedo softwareportrásdospadrões 739 Revisãodosprincípiosdo designdesoftware... 744 Padrõesparadarsuportea componentesdemodelosremotos 745 VisãogeraldaJNDI edaRMI 747 O BusinessDelegateéum"intermediário" 753 SimplifiqueosseusBusinessDelegatescomo ServiceLocator759 HoradeusarumTransferObject? 761 Nossoprimeiropadrãorevisitado...MVC 762 Sim!É o Struts(eo FrontController),empoucaspalavras 767 Refatorandoa aplicaçãoBeerparao Struts 770 Revisãosobrepadrões 778 fausa pata ºcaté oTestePreparatório final. É isso,69perguntas.A aparência,osassuntos abordadoseo nível dedificuldadesãopraticamenteidênticosaosdaprova oficial.Nóssabemos. o1 XVIII Testepreparatóriofinal Respostas índice 791 828 865 1 Introdução Como usar este livro? Use a Cabeça JSP A quemse destina este livro? Sevocêresponder"sim" atodasestasperguntas: (1)VocêsabeJava? (nãoprecisaserum guru) ®Vocêgostadeconsertar- vocêaprendefazendo,aoinvésdeapenasler?Vocêdeseja aprender,compreender,lembrar dosservletsedosJSPs epassarno exameSCWD for Java EE 1.5? ®Vocêprefereuma conversadescontraídaemumafestaa palestrasacadêmicassem graçaetediosasestelivro épara você. estelivro nãoéparavocê. Quem provavelmentedeveria manter-se longe deste livro? Sevocêresponder"sim" a algumadestasperguntas: (!)VocêétotalmenteinexperienteemJava? Vocênãoprecisaestaremumnível avançado,mas,definitivamente,deveteralgumaexperiência.Senãotiver,pegueum exemplardoUse a Cabeça!Javaagoramesmo.Hoje! E sóentãoretomea estelivro. ®VocêéumdesenvolvedorJava"forçado"embuscadeum livro deconsulta? ®VocêéumveteranoemJ2EE embuscadetécnicasultra-avançadase"como-fazer" específicosparaservidores,projetosparaempresasecódigoscomplexos,robustose reais? @ Vocêtemmedodeexperimentarcoisasdiferentes?Vocêpreferefazerumcanalno seudenteamisturarlistrasnumtecidoxadrez?Vocêachaqueumlivro técnicoperdea credibilidadeseoscomponentesJavativeremaparênciahumana? estelivro nãoéparavocê. xx Nós sabemos o que você está pensando. "Comoestelivro deprogramaçãopodesersério?" "Com tantasilustrações?" "Eu consigorealmenteaprenderdestaforma?" E nós sabemos o que seu cérebro está pensando. Seucérebroclamapornovidades.Estásempreprocurando,examinandoe esperandoporalgodiferente.Ele foi criadoassimeo ajudaasemantervivo. Atualmente,époucoprovávelquevocêvireo lanchinhodeumtigre, masseucérebrocontinuaráemalerta.Nuncasesabe. Então,comoseucérebrofazparalidarcomtodasascoisasrotineiras, comunsenormaiscomasquaisvocêsedepara?Tudoo queelepuder fazerparaimpedirquetaiscoisasinterfiramno seurealtrabalho: registraro queinteressa.Não fazmalguardarascoisasfúteis;elasnunca passarãopelofiltroqueretémo que"obviamentenãoimporta". Comoseucérebroreconheceo queé importante?Suponhaquevocêtire umdiaparafazerumacaminhadaeumtigrepulenasuafrente.O que acontececoma suacabeçaeo seucorpo? Os neurôniosdisparam.As emoçõessãoativadas.As reações químicasexplodem. E éassimqueseucérebroreconhece... Isto pode ser importante! Não esqueça! Mas, imaginequevocê estáemcasa,ou emuma biblioteca.É um local seguro,acolhedore sem tigres.Você estáestudando.Preparando-separa um exame.Ou tentandoaprenderum assunto técnicoedifícil, queseuchefeacreditaque levaráumasemana,dezdiasno máximo. Sóumproblema.Seucérebroestátentando lhefazerumgrandefavor.Ele estátentando assegurar-sedequeaqueleconteúdo,obviamente irre1evante,nãová confundirospoucosrecursos. Recursosestesqueseriammelhoresseusadospara armazenaremcoisasrealmenteimportantes.Como tigres.Comoo perigodofogo.Ou comovocê nuncamaisdeveriapraticarsnowboarddeshort. E não existeumjeito simples de dizer ao seu cérebro, "Ei cérebro,muito obrigado, masnào importa se o livro é tedioso, ou o quantoestou registrandoagorana escalaRichter emocional, eu realmentequero quevocê guardeestas coisas por aqui." você está introdução ~ XXI Use a Cabeça JSP Então,o queénecessárioparaseaprenderalgo?Primeiro,vocêprecisaabsorveredepois secertificardequenãoirá esquecer.Não temnadaa vercomenfiarcoisasnasuacabeça. Baseando-senasúltimaspesquisasemciênciacognitiva,neurobiologiaepsicologia educacional,o atodeaprenderenvolvemuitomaisquetextosemumapágina.E nóssabemoso quefazo seucérebrofuncionar. Alguns princípios de aprendizagem da série Use a Cabeça: Dê ênfaseà parte visual.As imagenssãomuitomaisfáceis deseremmemorizadasdoquepalavrassoltasetomamo aprendizadomuitomaisprodutivo(aumentaematé89%a memóriaeo aprendizadousandoatécnicadatransferência).E facilitaa compreensão.Ponha aspalavrasdentroou próximas àsrespectivasfiguras,emvezdenorodapéouemoutrapágina eosleitoresserãoatéduasvezesmaiscapazesdesolucionaros problemasrelacionadoscomaqueleconteúdo. Useum estilopróprio eemforma deconversa.Em estudos recentes,o desempenhodosalunosnasprovasrealizadasapós aprenderemamatéria,melhoravaem40%seo conteúdofalasse diretamenteaoleitorusandoaprimeirapessoa,comumestilo quesimulasseumaconversaemlugardotomformal.Conte históriasemvezdedarpalestras.Usea linguagemcoloquial.Evite sermuitosério.Em quevocêprestariamaisatenção:emuma companhiainteressantenafestaouemumapalestra? precisa chamarum métodono servidor ( ~ serviço remoto RMI Façao alunorefletir.Emoutraspalavras,nadaacontecenasuacabeça amenosquevocêexercitemuitoosseusneurônios.O leitorprecisaestar motivado,atraído,curiosoeinspiradopararesolverproblemas,tecer conclusõesegerarumnovoconhecimento.E paraissovocêprecisade desafios,exercícioseperguntasqueestimulemoraciocínio,alémde atividadesqueenvolvamambososladosdocérebroeosmúltiplossentidos. Prenda- esegure- a atençãodo leitor.Todosnósjá pensamos"eu realmentegostariadeaprenderisto,maseunãoconsigomemanter abstrac acordadodepoisdaprimeirapágina".Seucérebroprestaatençãoacoisas roam() ; quesãoextraordinárias,interessantes,estranhas,atraenteseinesperadas. / Aprenderumassuntonovo,difícil etécniconãoprecisaserchato.Seu f, cérebroaprenderámuitomaisrápidoseo assuntofor interessante. c.óM !)WIpM'l.fb-rV!i!'5Udi, Mexa coma emoçãodo leitor.Agora nóssabemosquesuacapacidadede recordaralgodependeenormementedo seuconteúdoemocional.Aquilo que vocêsepreocupa,vocêserecorda.Você serecordaquandosentealgo.Não, nósnãoestamosfalandodehistóriasde sofrimentoentreummeninoe seu cão.Estamosfalandodeemoçõescomoa surpresa,a curiosidade,adiversão, o "caramba!..." e aquelasensaçãode"Eu souo cara!"quevemquandovocê conseguematarumacharada,aprenderalgoquetodosachamdifícilou perceberquesabeumacoisaqueo "bam-bam-bam"daengenharianãosabe. XXII introdução Metacognição: pensando sobre pensar Sevocêrealmentequeraprender- eaprendermais rápidaedefinitivamente-, presteatençãoemcomo vocêprestaatenção.Penseemcomovocêpensa. Aprendacomovocêaprende. A maioriadenósnãofezcursosdemetacogniçãoou teoriadoaprendizadoenquantocrescia.Esperamque aprendamos,masraramentenosensinamaaprender. Supomosquesevocêestásegurandoestelivro,você queraprenderservletse,provavelmente,nãoquer perdermuitotempo.Considerandoquevocêfará aprova,vocêteráquelembrardoqueleu.Logo, precisaentendero quefoi lido.Paraobtero máximo destelivro - oudequalqueroutrolivro ouformade aprendizado-, dêresponsabilidadesaoseucérebro. Faça-oficaratentoa esteconteúdo. O truqueéfazercomqueseucérebroencarecomo RealmenteImportanteo novomaterialquevocê estáaprendendo.Crucialparao seubem-estar. Tão importantequantoumtigre.Casocontrário, vocêestaráconstantementeemconflito,como seu cérebrodandoo melhordesi paranãoassimilaro assuntonovo. Então, como você FAZ para que seu cérebro considere os servlefs um tigre faminto? Existemasformaslentaetediosaeamaisrápidaeefetiva.A formalentaéapurarepetição.É claro quevocêsabequeserácapazdeaprendererelembraratémesmoo assuntomaisestúpidoseo ficar repetindo.Comumarepetiçãointensaseucérebrodiz, "istonãopareceimportanteparaele,masele ficaolhandoparaamesmacoisarepetidamente,entãoeuimaginoquedevaser". A maneiramaisrápidaéfazerqualquercoisaqueaumentesuaatividadecerebral,principalmente atividadesdetiposdiferentes.O quefoi ditonapáginaanterioréumagrandepartedasoluçãoe foi comprovadocomoformadeajudarseucérebroatrabalharemseufavor.Por exemplo,estudos demonstramquecolocandoaspalavrasdentrodasfigurasqueelasrepresentam(emvezdesoltasna página,comoumaexplicaçãooudentrodotexto)faz comqueseucérebroentendacomoasfigurase aspalavrasserelacionam,ativandomaisneurônios.Mais neurôniosativadossignificamaischances do cérebroentenderquedeterminadoassuntomereceatençãoe,possivelmente,deveserregistrado. O estilointerativotambémajuda,poisaspessoastendemaprestarmaisatençãoquandopercebemque estãoemumaconversa,já queseesperaqueela;sacompanhematéo final.O interessanteéqueseu cérebronãoseimportanecessariamentequea "conversa"sejaentrevocêeumlivro! Por outrolado, seo estilodeescreverfor secoeformal,seucérebroentenderáissodomesmomodoquevocêo faria seestivesseemumapalestranumasalarepletadeparticipantesindiferentes. Porém,asfiguraseo estiloquesimulaumaconversasãosóo começo. você está ~ XXIII Use a Cabeça JSP Eis O que NÓS fizemos: Ro<:hd'~ttltf W<wd<;::ligners~ Quthere..• Nós usamosfiguras,poisseucérebroestáadaptadoaoqueévisual, nãotexto.Paraele,umaimagemvale1.024palavras.E quandofiguras etextostrabalhamjuntos,nósinserimoso textonaimagem,poisseu cérebrofuncionamelhorquandoo textoestádentrodaquiloaqueserefere,I diferentedeestarnumaobservaçãoouescondidoemalgumlugarnotexto. Nós usamosa repetição.Dizemosamesmacoisadeformasdistintase atravésdemeiosdiferentes- emúltiplossentidos-, paraaumentaras chancesdeo assuntoserregistradoemmaisdeumaáreacerebral. Nós usamososconceitoseasfigurasdemaneirainesperada,poisseu cérebroéativadoquandoencontraumanovidade.E usamosfigurase idéiascompelomenosalgumconteúdoemocional,poisseucérebroestá predispostoa darmaisatençãoàbioquímicadasemoções.Aquilo que tefaz sentiralgotendea sermaisfacilmentelembrado,aindaqueesta sensaçãonãopassedeumpoucodehumor,surpresaou interesse. Nós usamosumestilopróprioquesimulaumaconversa,porqueseu cérebrotendeaprestarmaioratençãoquandoacreditaquevocêestá participandod~umaconversaenãoassistindopassivamenteauma apresentação.E assimquefuncionamesmoquandovocêestálendo. Nós incluímosmaisde40atividades,pois seucérebroestáhabituadoa aprenderearelembrarmaisquandovocêfaz algumacoisadoquequando vocêlê arespeito.E colocamosexercíciosdificeis,porémpossíveisde seremfeitos,poisécomoamaioriadaspessoasprefere. Nós usamosmétodosdiferentesdeaprendizado,poisvocêpoderia preferirosprocedimentospassoapasso,enquantooutrapessoa poderiapreferirentenderprimeiroasfigurasgrandes,enquantooutras, simplesmenteverosexemplosdecódigos.Mas, independentementeda suaprópriapreferênciadeaprendizado,todossebeneficiamvendoo mesmoconteúdorepresentadosobmúltiplasformas. Nós colocamosassuntosparaseremusadospor ambososladosdoseu cérebro,poisquantomaisvocêusardoseucérebro,maischancesteráde aprenderelembrar,alémdemaistempodeconcentração.Já quecolocando parafuncionarumladodocérebrosignificageralmenteaoportunidadedo outroladodescansar,vocêpoderáproduzirmaispormaistempo. E nósincluímosestudosdecasoeexercíciosqueapresentammais deumpontodevista,poisseucérebroestáadaptadoa aprendermais intensamente,quandoforçadoa fazeravaliaçõesejulgamentos. Nós inserimosdesafioscomexercícioseperguntasquenemsempretêm respostasdiretas,poisseucérebroestámaispropensoaaprenderelembrar quandotemqueseesforçarporalgo.Pensenisso- vocênãoconseguemanter seucorpoemformaapenasobservandoaspessoasnaacademia.Porem,nós fizemoso melhorpossívelparagarantirque,quandovocêestivertrabalhando duro,serápelascoisascertas.E quevocênãoestarádesperdiçandonenhum dendritoa mais,tentandoentenderumexemplocomplicadoouanalisando umtextodificil,repletodejargões,ouentão,extremamenteresumido. Nós usamospessoasnashistórias,nosexemplos,nasfiguras,etc.Afinal, vocêéumapessoaeseucérebrodámaioratençãoapessoasdoqueacoisas. Nós usamosatécnicado80/20.Entendemosquesevocêpretendeserum PhD emJSP, estenãodeveserseuúnicolivro. Logo, nãofalamossobre tudo.Apenasdamatériaquevocêrealmenteprecisará. XXIV introdução Eis O que VOCÊ pode fazer para dominar seu cérebro Então,fizemosanossaparte.O restoécomvocê.As dicasa seguirsãoo pontodepartida.Presteatençãono seucérebroedescubrao queservee o Jef!cá/'h , quenãoserveparavocê.Experimentenovidades. d ! " f: C<J!Y4{1P - ; ~",J1?1tJ;«elf'tI. (). "i!IPó/'r", (1)Vá devagar.Quanto maisvocêentender, menosterá quememorizar. Nãoleiaapenas.Pareepense.Quandoo livroperguntaralgo,nãopuleparaaresposta. Imaginequealguémestejarealmentelhe fazendoapergunta.Quantomaisvocêforçaro seucérebroapensar,melhoresserãoaschaTIces deaprendererecordar. ®Faça osexerCÍcios.Faça suaspróprias anotações. Nós oscolocamosno livro,massenós resolvermos,vaiparecerquealguémestá fazendoa ginásticaparavocê.E nãobasta olharosexercícios.Useumlápis.Está provadoquea atividadefisica,enquantose estuda,podemelhoraro aprendizado. @)Leia a seção"Perguntar não ofende". Ou seja,todaselas.Elasnãosãobarras lateraisopcionais.Elas s ãopartedo conteúdoprincipal!Não aspule. @Antes deir dormir, façadestaa suaúltima leitura. Ou pelomenosa última quelhe exija racioCÍnio. Partedoaprendizado(especialmentea transferênciaparaamemóriadelonga duração)acontecedepoisquevocêfechao livro. Seucérebronecessitado seupróprio tempoparamaiorprocessamento.Sevocê puserumainformaçãonovaduranteeste tempodeprocessamento,o quevocêacabou deaprenderseráperdido. @Bebaágua.Muita água. Seucérebrofuncionarámelhorsereceber umbelobanho.A desidratação(quepode . acontecerbemantesdevocêsentirsede) reduza funçãocognitiva.A cerveja,oualgo maisforte,serábem-vindaquandovocê passarno exame. ®Fale. Em voz alta. Falando,vocêativaumapartediferentedo cérebro.Sevocêestivertentandoentender algoouaumentarsuachancederecordar maistarde,leiaemvoz alta.Melhor ainda, tenteexplicaristoparaoutrapessoaemvoz alta.Vocêaprenderámaisrápidoetalvez observeidéiasquevocênãohaviapercebido queestavamali enquantolia. Q)Ouça seucérebro. Observeseo seucérebronãoestáficando sobrecarregado.Sevocêsepegarpassando amãonasuperficiedo livro ouesquecendo o queacabaradeler,éhoradeuma pausa.Umavezquevocêultrapasseum determinadoponto,vocênãoaprenderámais rápidosetentar"enfiar"maisinformação nacabeçaepoderáatécomprometero processo. ®Sinta algo! Seucérebroprecisasaberqueistoé importante.Envolva-secomashistórias. Crie suasprópriaslegendasparaasfotos. Darumsorrisoamareloquandoumapiadanãotemgraçaaindaémelhordoquenão esboçarreação. ®FaçaoTestePreparatórioFinal sóDEPOIS deacabaro livro. Sevocêfizero testemuitocedo,vocênão teráumaidéiaclaradasuapreparaçãopara o exame.Espereatésentirquevocêestá quaseprontoeentãofaçao testeem,no máximo,135minutos- o tempoverdadeiro doSCWCD. você está •• XXV Use a Cabeça JSP oque você precisapara este livro: Além do seucérebroeumlápis, vocêprecisado Java, do Tomcat5 e de um computador. Vocênãoprecisadenenhumaoutraferramentadedesenvolvimentocomoo IntegratedDevelopmentEnvironment(IDE). Definitivamente,recomendamos quevocênãousenadaalémdeumeditorsimplesatéterminaro livro.Um IDE quereconheceservleteJSP poderáprivá-lo dealgumdetalherealmente importante(equecairánaprova).Por isso,émelhorvocêevitardesenvolver todoo beanmanualmente.Umavezquevocêrealmenteentendao queestá acontecendo,poderáutilizarumaferramentaqueautomatizealgunsdos passosparaacriaçãoedistribuiçãodoservlet/JSP.Sevocêjá sabecomousar oAnt, poderáusá-loapóso capítulo3paraajudarnadistribuição.Porém,não recomendamosusaroAnt atéquevocêtenhamemorizadocompletamentea estruturadedistribuiçãodaaplicaçãoweb. OBTENDO O TOMCAT --------, Casoaindanãopossuao Java SE v1.5ou superior,vocêvai precisar(depreferência1.4). Sevocênãotemaindao Tomcat5, obtenha-oem: http://tomcat.apache.org/ Selecione"Tomcatv5.5"nomenuDownloadsno ladoesquerdo dahomepage. • Pagineatéaseção"BinaryDistributions"(DistribuiçõesBinárias) efaçao downloaddaversãoescolhida.Senãosouber,então, selecioneadistribuição"Core"(Básico);étudoquevocêprecisa. Salveo arquivodeinstalaçãoemumapastatemporária. Instaleo Tomcat. ParaWindows,dêumduplo-cliqueno arquivoinstall.exeesiga asinstruçõesdo assistentedeinstalação. Paraosoutrossistemas,descompacteo arquivodeinstalação no diretórioondevocêquerqueo Tomcatresida. Parafacilitarasinstruçõesdo livro,renomeiepara"tomcat"o diretóriohomedoTomcat(ouconfigureumcognome"tomcat" queaponteparao homeverdadeirodoTomcat). ConfigureasvariáveisdeambienteparaJAVA_HOME e TOMCAT HOME, damesmaformacomovocênormalmente faz emsuamáquina. Vocêdeveterumacópiadasespecificações,emboranão precisedelasparapassarno exame.Até o lançamentodeste livro,asespecificaçõeseram: Servlet2.4(JSR #154) http://jcp.org/eng/jsr/detail?id=154 JSP 2.0(JSR #152) http://jcp.org/eng/jsr/detail?id=152 JSTL 1.1(JSR #52) http://jcp.org/eng/jsr/detail?id=52 Vá atéapáginaJSR ecliqueemDownloadPageparao lançamentomaisrecente. Testeo Tomcatrodandoo scripttomcat/bin/startup(startup. shparaossistemasLinux/Unix/OSX). Digitenabarrade endereçosdoseubrowser: http://localhost:8080/evocêveráapáginainicialdoTomcat. XXVI .~ ... Java2 StandardEdition 1.5 Tomcat5 O exameabrangeas seguintesespecificações: •Servlets2.4 ·JSP 2.0 •JSTL 1.1 Coisas de última hora que você precisa saber: Istoéumaexperiênciadeaprendizadoenãoumlivro de referência.Nós retiramosdeliberadamentetudoquepudesse atrapalharo caminhodo aprendizado,independentementedo queestejamostrabalhandono livro.E, desdeo primeiroinstante, comecedocomeço,pois o livro faz consideraçõesquantoàquilo quejá foi vistoeaprendido. Nós usamosdiagramassimpleseparecidoscomUML. Emboraexistaumagrandechancedevocêjá saberUML, istonão écobradono exameenãoéumpré-requisitoparao livro.Então, vocênãoteráquesepreocuparemaprenderservlets,JSP, JSTL e UML aomesmotempo. Nós nãocobrimostodososdetalhesminuciososda especificação. O exameémuitodetalhado,mas,nóstambémsomos.Porém,se existeumdetalhenaespecificaçãoquenãoécobradono exame,só o citaremossefor importanteparaamaioriadosdesenvolvedoresde componentes.O quevocêprecisasaberparacomeçaradesenvolver componentesweb(servletse JSPs), eo queprecisaparapassarno exame,cobrecercade85%.Nós incluímosalgumascoisasquenão caemnaprova,massinalizamosparaquevocênãosepreocupeem memorizá-Ias.Nós criamoso verdadeiroexame,portanto,sabemos ondevocêdeveráconcentrarsuaenergia!Sehouverapossibilidade deummínimodetalhefiguraremumaquestãodaprova,masseo esforçoparaaprendê-Iorealmentenãovalhaapena,provavelmente ouo omitiremos,ouo abordaremossucintamente,ouo colocaremos emumaquestãodotestepreparatório. As atividadesNÃO sãoopcionais. Os exercícioseasatividadesnãosãomerosadicionais;elessão partedoconteúdoprincipaldo livro.Algunsestãoláparaajudarna memorização,outrosparaajudarnacompreensão,enquantooutros o ajudarãoa aplicaro quevocêaprendeu.Não pulenada. A redundânciaéintencionaleimportante. UmacoisaqueéclaramentediferenteemumlivrodasérieUsea Cabeça!équenósqueremosmuito,muito,muítoquevocêentenda. E gostaríamosquevocêterminasseo livro lembrandoo que aprendeu.A maioriadasinformaçõesedoslivrosdereferênciasnão tem,necessariamente,aretençãoealembrançacomoobjetivos,mas aquivocêveráalgunsconceitosapareceremmaisdeumavez. Os códigos-exemplossãoosmaisresumidospossíveis. Nossosleitorestêmrelatadoo quantoéfrustranteler minuciosamente200linhasdecódigosprocurandoporaquelas duaslinhasqueelesprecisam.A maioriadosexemplosdestelivro éexibidadentrodosmenorescontextospossíveis,paraqueaparte quevocêprecisafiqueclaraesimples.Não esperequeo código sejarobustooucompleto.Estaésuatarefaparaquandoterminaro livro.Os exemplosaquisãoescritosespecialmenteparaaprendere nemsempresãototalmentefuncionais.Algunsexemplosdecódigo parao livro estãodisponíveisemwww.altabooks.com.br introdução fJS{Ufl6S VI?, fJMI-. m~Ji/tllt:M.,lt~f!h!4,(~ Diretor getMovies getOscars ( ) getKevin BaconDegrees() você está aqui ~XXVII fazendo a prova Sobre o exame SCWCD (para Java EE 1.5) oexameSCWCD atualizadoé chamadode"Sun CertifiedWebComponentDeveloper for Java Platform,EnterpriseEdition 5" (CX-310-083),masnão fiqueconfusocom o título.O exameatualizadoaindaé designadoparao Java EE vIA, parao servletv2A e asespecificaçõesJSP v2.0. PrimeirotenhoquepassarnoSCJP? Sim.O exameWebComponentDeveloper,exameBusinessComponentDeveloper, exameMobileApplicationDeveloper,exameWebServicesDevelopereexame DeveloperrequeremquevocêsejaumSunCertifiedJavaProgrammer. Quantasquestões? Vocêterá69questõesquandofizeroexame.Ninguémtêemasmesmas69questões;existem muitasversõesdiferentesdoexame.Mastodastêmomesmograudedificuldadeeomesmo equilíbriodetópicos.No examereal,espereverpelomenosumaquestãodo objetivode cadaexameeexistemalgunsobjetivosnosquaisvocêterámaisdeumaquestão. Quantotempotenhoparacompletaroexame? Vocêtemtrêshoras(180minutos).A maioriadaspessoasnãoachaqueissoéumproblema, pois essasquestõesnãosãolongas,complicadas,complexas.A maioriadasquestõesé muitocurta,temmúltiplaescolhaevocêsabearespostaounão. Comosãoasquestões7 Elas sãoquaseexatamentecomoasnossasperguntassimuladasdoexame,comuma grandediferença- o examereal informa-oquantasrespostasestãocorretas,nósnão. Contudo,vocêveráalgumasperguntasdotipoarrastaresoltarquenãopodemosfazer aqui.Mas asquestõescomarrastaresoltarsãoapenaso modointerativodecoincidir umacoisacomoutra. Quantastenhoquerespondercorretamente? Vocêdeveter49questõescorretas(70%)parapassarno exame.Quandoterminar deresponderatodasasquestões,mantenhao cursordomousesobreo botãoDone (Terminado)atéquetenhacoragemdeclicá-Io.Em cercadeseisnanossegundos,você saberásepassou(claro,vocêpassará). Por queosexamessimuladosnolivronãoinformamquantasopçõesescolherparaa respostacorreta? Queremosquenossosexamessejamapenasumpoucomaisdifíceis queo examereal, para lhe dar uma idéia mais verdadeiraparasaberse você estáprontopara fazer o exame.As pessoastendematernotasmaisaltasnosexamessimuladosdo livro porque refazemo mesmotestemais de umavez e não queremosquevocê tenhauma falsa sensaçãode suaaptidãopara o exame.Os leitorestêminformadoque a pontuação conseguida no examereal é muito próxima da pontuaçãoque eles têm no exame simuladofinal nestelivro. XXVIII introdução oqueacontecedepoisdefazer o exame? Antesdedeixaro centrodeteste,obtenhao relatóriodeseuexame.Ele mostraum resumodesuapontuaçãoemcadaáreamaioresepassououfalhou.Guarde-o!Ésua provainicial dequevocêfoi certificado.Em poucassemanasdepoisdoteste,você receberáumpequenopacotedaSunEducationalServicesqueinclui seucertificado impressoreal,umacartadefelicitaçãodaSuneumadorávelalfinetedelapela informandoSunCertifiedWebComponentDeveloperemumafontetãopequenaque vocêpoderiadeclararsercertificadoemqualquercoisaquequisesseeninguémpoderia lerparasabera diferença.Não incluiabebidaalcoólicaquevocêestaráquerendodepois depassarno exame. Quanto custaecomomeregistro? O examecustaUS$200.E épor issoquevocêprecisadestelivro...paraassegurar quepassaránaprimeiravez.Vocêregistra-seatravésdo SunEducationalServices, fornecendoo númerodeseucartãodecrédito.Em troca,receberáumnúmerode voucher,queusaráparaagendarumencontroemumPrometricTestingCentermais próximodevocê. Paraobterdetalheson-lineecomprarumvoucherdoexame,comeceem:bttp://www.sun. com/training/certificationi.SeestivernosEstadosUnidos,estarámarcado.Senão,poderá selecionarumpaísnabarrademenusàdireita. Como éo softwaredo exame? É bemsimplesdeusar- vocêtemumaquestãoeresponde-a.Senãoquiserresponder, poderápulá-Iaevoltarparaelamaistarde.Searesponder,masnãoestivercertoe quiservoltarparaelasetivermaistempo,poderá"marcar"umaquestão.Assim que tiverterminado,veráumatelaquemostratodasasquestõesquevocênãorespondeuou marcou,paraquepossavoltarparaelas. Bem no início do exame,vocêobteráum pequenotutorialsobrecomousaro software, ondeconseguirumpequenotesteprático(nãosobreServlets).O tempogastonotutorial nãocontacomoo tempogastono exameSCWCD. O relógionãoiniciaráatéquevocê tenhaterminadoo tutorialdo softwaredeexameeestiverprontoparacomeçar. Ondepossoencontrarumgrupodeestudoequantotempolevaráparamepreparar? O melhorgrupodeanáliseon-lineparaesteexameéaquelequeos autores presidem!(Deus,quaissãoasprobabilidades?)Pareemj avaranch.comeváparaBig Moose Saloon(é ondeestãotodosos fórunsdediscussão).Vocênãopodeperder. Semprehaveráalguémpararespondersuasperguntas,inclusivenós.JavaRanché a comunidadeJava maisamistosana Internet,portanto,vocêserábem-vindonão importandoo nível emqueestiverno Java. Sevocêaindaprecisartero SCJP, iremos ajudá-Iocomeletambém. Quantotempolevaparaficarprontoparao examedependemuitodequantosservlets eexperiênciaJSP vocêtem.Sevocêfor novo.nos servletseno JSP, poderáprecisarde 6 a 12semanas,dependendodequantotempopodededicara cadadia.Aquelescom muitosservletsrecentese experiênciaJPS geralmentepoderãoestarprontosematé trêssemanas. você está ~ XXIX a equipe de revisores Betatesters& RevisoresTécnicos IV';" 1"+(;5f'~f~d", ("'4S+õ'ó ''''Pórhwl-e&1/4",1-" "$"'1I+r"s) /1-",1'+L"",dhe XXX introdução lA"fi.iS d"'$f•.•ude ~a,beld$!JT'rt.b'Jc'(';s f>4!JJ'" Céwsa deshItvrcó, -I de:J""'5 ---.----/ A"drew1Lf.""k/,{Jtlse (~ fl.ee,l-ish lA.adafta J.tU'ct'~J.t.f<} Outras pessoas a quem ~: Na O'Reilly: NossosmaioresagradecimentosaMike Loukides naO'Reilly, por iniciartudoeajudara darformaaoconceitoUse a Cabeçaem umasérie.AdoramosterumeditorqueéumVerdadeiroJava.E um grandeagradecimentoà forçamotrizpor trásdoUse aCabeça,Tim O'Reilly. Felizmenteparanós,elesempreestápensandono futuro egostadeserumainfluênciadestruidora.ObrigadoaKyle Hard "a mamãedasérie"Use a Cabeçainteligentepordescobrircomoo Use a Cabeçaencaixa-senorestodoslivrosdecomputador. Nossosrevisoresintrépidos: Tudobem,então,o livro levouumpoucomaisdetempodo que tínhamosplanejado.Mas semo gerentederevisãoJavaRanch Johannes deJong, eleteriaficadoassustadoramenteatrasado.Você énossoherói,Johannes.E nossosagradecimentosespeciaisa Joe Konior cujo feedbackemcadacapítulofoi quasedomesmotamanho docapítulo.Estamosprofundamenteagradecidospeloesforço inexoráveleexperiência(ealegria)dePhilippe Macquet.Todos ostrêsautoresadoram-notantoquequeremoscasarcomele...mas issoseriaestranho.E estamosmuitogratosaAndrew Monkhouse pelofeedbacktécnicoeajudanastraduçõessutisdoinglêsparaa línguaaustraliana.Jef Cumps, suainterpretaçãoMP3 dacanção "setHeader"foi impressionante(excetotalvezpor serumpoucoemo) eseuscomentáriostécnicosforamrealmenteúteis. DaveWood trabalhoucomafincoemtudoefoi carinhosoaoapontar paraasprimeiraspáginasedizer:"Issonãoéo estiloUsea Cabeça". TambémtivemosumfeedbackexcelentedosmoderadoresJavaRanch Jason Menard, Dirk "cara depeixe"Shreckmann,Rob Ross, Ernest Freidman-Hill eThomasPaul. E comosempre,agradeço especialmenteaochefejavaranch.com,Paul Wheaton. Agradecimentosespeciaisaosseguintesrevisorestécnicospela segundaedição:Bear Bibeault,TheodoreCasser,UlfDittmer, PreetishMadalia, SergioRamirez, Oliver RoeU,Neeraj Singhal e Collins Tchoumba. Perguntasdoexaminesimulado Sevocêseencontrarbalançandoa cabeçaemumaquestãosimulada JSP particularmentecapciosa,nãonosculpe- culpeMarc Peabody! ObrigadoMarcporajudaramantertodososcandidatosSCWCD emalerta.Marc passaumaquantidadeenormedeseutempolivre moderandono JavaRanch,ondeéconhecidoporestimularos usuáriosRancha construirmisturashorríveisdesuastecnologiasJava EE inocentes. introdução você está ~ XXXI mais reconhecimentos Tem mais gente ainda* Por Bryan Basham Eu poderiacomeçaragradecendoà minhamãe,masissojá foi feito antes... Meu conhecimentoem desenvolvimentowebcomJava temcomobasealgumasaplicaçõesdemédiaescalaqueescrevi,mas estabasefoi melhoradaerefinadaporanosdedebateemJavacomoinstrutordaSun,usandoume-mail comumnomefictício.Emparticular,gostariadeagradecera SteveStelting,VictorPeters,Lisa Morris, Jean Tordella,Michael Judd, Evan Troyka e Keith Ratliff. Muitas pessoasajudarama lapidarmeu conhecimento,masestesseisforamasfacasquemelhormeesculpiram. Comoemtodososprojetosdelivro,osúltimostrêsmesesforammuitodificeis.Gostariadeagradeceràminha noiva,KathyCollina,portersidopacientecomigo.Eu queroagradeceraKarmaeKiwi (nossosgatos)pelas sessõesdelambidastardedanoiteeaspancadasnoteclado. Por último,e maisimportante,tenhoqueagradecerà Kathy e ao Bertpor sugeriremquelevássemos adianteo projeto.KathySierraémesmoúnicanomundo.Seuconhecimentoemmetacogniçãoedesign educacionalsó se comparamà suaessênciacriativaquetransbordanos livros destasérie.Eu tenho trabalhadocomeducaçãohá cincoanosepraticamentetudoo queaprendifoi coma Kathy...Oh, não sepreocupecomminhamãe;elareceberáumagrandededicatóriaemmeupróximoUse a Cabeça!.Eu teamo,mãe! Por KathyeBert Issofoitãosentimental,Bryan,ohhhh...(NãoqueaKathynãogostederasgarumaseda).Mas,concordamos quandofalasobresuanoiva.Masnãoporelatersentindosaudadessuas,enquantojogavaUltimateoverãotodo enóstrabalhávamosfeitocachorroemnossosPowerbooks1.Masvocêrealmentefezdissoumaexperiência recompensadora,Bryan,ehojeé o melhor(NA)co-autorquejá tivemos!Chegaquasea assustaro quanto vocêécalmoefelizotempotodo. Todosnósadoramosa equipequetrabalhaduronosexamesdecertificaçãodaSun,emespeciala Gerente deCertificaçãoemJava,EvelynCartagena.Queremosagradecertambématodososcolegasqueajudarama desenvolverasespecificaçõesdosJSRs paraServleteJSP. *ogrande número de agradecimentos éporque estamos testando uma teoria de que todos os mencionados na seção de agradecimentos do livro comprarão pelo menos uma cópia, talvez mais, contando os parentes e tudo. Se você quiser estar na seção de agradecimentos do nosso próximo livro, e se tiver uma família grande, escreva-nos. 1 Ponto de esclarecimento: O Bryan foi o único co-autor que nós tivemos, mas isto não diminui em nada a nossa intenção. XXXII Por que usar Servlets & JSPs? As aplicações web estão na moda. Claro, as aplicações GUI podem usar aquelas coisas exóticas do Swing, mas quantas aplicações GUI você conhece que são usadas por milhões de usuários em todo o mundo? Como desenvolvedorde aplicações web, você não precisará se prenderaos problemas de distribuiçãopresentes em toda aplicação standalone e irá distribuirsua aplicação a qualquer pessoa que possua um browser. Porém, para construiruma aplicação web poderosa mesmo, você precisa do Java. Dos servlets. Dos JSPs. Pois as velhase estáticas páginas HTML são tão, digamos, "1999".Hoje, os usuários esperam por sites dinâmicos, interativos e customizáveis.Aqui, você aprenderá como mudardo site na web, para a aplicação na web. este éum novo ca~)ítuio objetivos do exame oficial da Sun Visão geral dos Servlets & JSP 1.1 ParacadaumdosMétodosHTTP (como GET, POST, HEAD eassimpordiante): DescreverosbeneficiosdoMétodo HTTP DescreverasfuncionalidadesdoMétodo HTTP Listarostriggersquepodemlevarum Cliente(geralmenteumbrowser)ausar o método Tambémjaz partedo Objetivo1.1,masnãoserá abordadonestecapítulo: Identificaro métodoHttpServletque correspondaaoMétodoHTTP 2 capitulo1 Notas sobre a Abrangência: Os objetivosdestecapítulosãoabordados completamenteemoutrocapítulo,então, considereestecapítulocomoumabase, emprimeiramão,para o quevirá adiante. Em outraspalavras,nãosepreocupe emterminarestecapítulosabendo(e lembrando)de itensespecificosdestes objetivos;apenasuseistocomoumabase. Sevocêjá dominaestesassuntos,poderá simplesmentedar umaolhadarápidae passarpara ocapítulo2. Vocênãoencontraránenhumaperguntano testepráticosobreestesassuntosatéque vocêchegueao capítulomaisespecifico, ondeelesserãoabordados. introduçãoearquitetura rodos queretM UtMwebsite Vocêtemumaidéiafantásticaparaumwebsite.Paraaniquilar comosconcorrentes,vocêprecisadeumaarquiteturaflexívele escalonável.Vocêprecisadeservletse JSPs. Antesdecomeçarmosa construção,vamosdarumaolhadanarede mundialdecomputadores,aumadistânciadeaproximadamente 40kpés.O quemaisnosimportanestecapítuloécomoosclientes eservidoreswebsecomunicamentresi. Provavelmente,asmuitasdaspáginasa seguirserãoumarevisão paravocê,principalmentesevocêjá éumdesenvolvedor. Contudo,teremosa chancededefiniralgumasdasterminologias queusaremosno decorrerdo livro. A- we!I c4"Sls-!--f:f!1t\ ;l!t.;;es declte".f-es (,/sa"dlJ brlJWSfJ'SCtl""lJ lJ llA.o;llla {}V6 Sa.lard fi! serllt;/{}rff!S(;'6;/0.";/6 apUctlj;;es C61t\tl6 A-ptlct.e); ClJ"ec.f-a;/lJStl+NJ.V;S ;/e redes ClJlt\Iltl e wtreless. 1JI)SS6 "''de+tv6 ; ClJ"s.f-I'Vll' Vlt\tltlpllca{ã6ave lJS clle,,-I-es 44 red41' ;/6 It\V,,;/lJp6SS8..."tlcessal'. í "ôS +6N78.1''''''Ses.f-vpt;/lJ..."e,,-I-erlcf/'JS. Cliente aterra você está aquí I; 3 servidor Web o que o seu servidor web faz? Um servidorwebrecebeumasolicitaçãoedevolvealgopara o cliente. Um browserpermiteaousuáriosolicitarum recurso.O servidor pegaa solicitação,encontrao recursoeretomacomalgoparao usuário.AlgumasvezesesterecursoéumapáginaHTML. Outras, umafigura.Ou umarquivodesom.Ou atémesmoumdocumento PDF. Não importa- o clientesolicitaumacoisa(recurso)eo servidora enviadevolta. A menosqueo recursonãoestejalá.Oupelomenos,nãoestáonde o servidoresperavaencontrá-Io.Certamente,vocêjá estábem familiarizadocomo erro"404NotFound"- arespostaquevocêrecebe quandoo servidornãopodeencontraro queeleachaquevocêsolicitou. Quandodizemos"servidor",estamosquerendodizerouamáquina física(hardware),oua aplicaçãodoservidorweb(software).Ao longodo livro, sea diferençaentreo hardwareeo softwaredo servidorimportar,nósdiremosexplicitamentea qualdosdois (hardwareou software)nosreferimos. /} sali'cl.fa{i6 JÍ6 clle~ C611#1VI() l1ólVlee el1Jel"eS6 (li. (J}t.f-);JIJ.3l1t1fJ alie fJ cltewh! es.f: fl"6ClIl"lJ.l1Ja. ~ C3"~ ~ ~ ~~ \ /} l"espas.ffJ. Ja sel"lI,i/t'J1"C6#1#1VIa J.oclIlVlel1.favel"JaJell'tJ !ve tJ dtewh stJlicr.f6l1 (6V VIVIC:iiil51) de el"l"õ se I) feJti/6 1146fvJel'sel" fl"l)cessad6). bel"fi./lVlel1h; 6 sel'vti/tJl" hlVl IVIlIt-.f6C6#1htdtJ fbJe seI' 1Vlfi.I1JÍIí.Jbffi.NJ. tJ / 1__.1lISVfJ.l't'"b.tsh (;tJ#1-rrtllJfJ f6Je ser f~''''fJ.S; JPíbs e <':Jv.fl"<':Jsl'eCVI'SfJs. 4 1 introduçãoearquitetura oqueUtM cliettteweb faz? Um clientewebpermiteao usuário fazer solicitaçõesao servidor,exibindopara eleo resultadodo pedido. Quandofalamosemclientes,no entanto,geralmentequeremos dizeraomesmotempoo usuárioeo browser(ouumdosdois) . O browseréo software(comoo Netscapeouo Mozilla) quesabe secomunicarcomo servidor.A outragrandetarefadobrowseré interpretaro códigoHTML eexibirapáginaaousuário. Então,apartirdeagora,quandousarmoso termocliente, geralmentenãonospreocuparemosseestamosfalandodousuário oudobrowser.Em outraspalavras,o clienteéo browserjazendo aquiloqueo usuáriosolicitou. ServidorBrowser oservidor encontra a páginasolicitada. G1J------=7 o browser formato a solicitação e a envia para o servidor. Usuário o usuário clica em um link no browser. ~ •.'P: ~ ;\"1'"I I .I obrowser consegue o HTML e o traduz em formato visual para o usuário. oservidor formato a resposta e a envia para o cliente (browser). -~I~I Servidor você está aqui ~ 5 HTMLeHTTP Os clietttese osservidoresconhecel\tHfML eHffF HTML Quandoumservidorrespondea umasolicitação,elegeralmente enviaalgumtipodeconteúdo parao browser,paraqueeste possaexibi-Io.Os servidores geralmenteenviaminstruções parao browserescritasem HTML (HyperTextMarkup Language).O HTML diz ao browsercomoapresentaro conteúdoaousuário. Todososbrowserssabemo que fazercomo HTML, embora algumasvezesumbrowser maisantigopossanãoentender partesdeumapáginaquetenha sidoescritausandoasversões maisrecentesdoHTML. HTTP A maioriadasconversasque ocorrenawebentreclientese servidoresémantidaatravésdo protocoloHTTP, quepossibilita conversasderequesteresposta simples.O clienteenviauma solicitaçãoHTTP eo servidor retomaumarespostaHTTP. Conclusão:sevocêéum servidorweb,vocêfala HTTR Quandoumservidorenviauma páginaHTML aocliente,o faz usandoo HTTP. (Vocêverá osdetalhesdecomotudoisto funcionanaspróximaspáginas.) (ParaSuaInformação: HTTP significaProtocolode TransferênciadeHipertexto.) 6 capitulo1 o B1ML Int9tmaa9 bt9"'v\TsetC9m9e)Úblt9 ;d ; cc9nteU9 a9 Usuatl9. o BTTP é 9 pt9t9c919'Lue95 clIentese 9Sset""Id9tesusam patqse C9munkatem. o set""ld9tUSq9 BTTP pata en""'i!U'9 B1ML íW clIente. introduçãoe arquitetura G-uiarápido de HfML Quandovocêdesenvolveumapágina,vocêusao HTML para descreverqueaparênciaapáginadeveterecomodevesecomportar. oHTML temdúziasdetagsecentenasdeatributosdetag.O objetivodoHTML é,apartirdeumdocumentotexto,adicionar tagsquedirãoaobrowsercomoformatá-Io.Abaixo estãoastags queusaremosnosdiversoscapítulosa seguir.Sevocêprecisarde umconhecimentocompletoemHTML, recomendamoso livro HTML &XHTML TheDefinitiveGuide. Tag Descrição <!- ~> ondevocêpõeseuscomentários <a> âncora- geralmenteparacolocarumhyperlink <align> alinhaoscomentáriosà esquerda,à direita, defineum tipodeentradaemumformulário ) (1'éc/IliCQ.llle/ll+ej Q.S <.ce/ll+el'") e <.aIi5/1l")Cf).II'f).1IIt elll fÀesustJ ctJll'Ia 'i.0)lIItas eS+Q.lllttJs uSQ./IlfÀtJ-as elllt /IltJSStJS eXt!.l!'\fi(JS; sel'elllt 1t'141"$ sil!'\fles fÀt. • StJ4S st.l'elt'l llilfJ.S l'espec+tv4S/ a.fép61'ZUe Il •es-raasvl IfrM~,) umnovoparágrafo o cabeçalhodeprimeironível defineos limitesdoheaderdodocumento defineoslimitesdo documentoHTML umcampoparaa entradadedados) pularlinha centralizadooujustificado centralizao conteúdo '" defineum formulário (quegeralmenteoferece defineos limitesdocorpodo documento <html> <input type> <hl> <p> <head> <form> <center> <br> <body> <title> o títulodo documentoHTML você está 7 escrevendo HTML oquevocêescreve... (oHfMU Imaginequevocêestácriandoumapáginadelogin.O HTML simplespoderiaseparecercomisto: <html> <!- Um HTML exemplo - > 4::--{J1f\ Ce.lf!ifl1+:1'/4/frML <head> <hl align="center">Skyler's Login Page</hl> <img src~"SKYLER2.jpg" width="130" height="150"/> ® © <title>A Login Page</title> </head> <body> <p align="right"> tt+~<.I~>es+: fJ.11/"I1t.adfJ.del1+l't:. de viria +~<.a.lijl1>de tfJ.I':51'fJ.1t:.; 4 11Ít\de cõ/e.C41'ti 1Ít\~elf!iIrItu'sõVIf!ifl14SlJl1de 3vel'flrlõ.s'. (Lelrlbl'e- se; fJ.+~<'Q.1I511>CfJJv flrl JfSVS(J; lf!iitSt JeciÇ/ihl.lJS vSQ-la tlJl' ser sl~/es Jer seI' !Ma) Name: <input type~"text" name~"paraml"/><br/> </p> @ () sel"vld pal'a. ó 3Va./r el1i1I&lI'f!1rI6Sa. s()llct+fJ.f'li4. <form action="date2"> A's +~S sel'velrl ~tfJ.f'fI. tV/lU' h"l1t.as. </form> <center> </center> <input type="SUBMIT"I> Password: <input type="text· 'ame="param2" I><brI><brI><brI> "-- ()ptJl"+Vl1alrlel1+eJ1a./aN;lrIlJs ""(/,1"$I IÓI"IrIVIQI'14S;irias pal'a I'esvlrlir; ó 1JI'IJIf;Isel' cgp+VI'fJ.1'éI l"I1pV+JIJ VSV:1"14e l"e+IJI"I1:-I", Qtl sel'vtJIJI'.® </body> </html> ......•••.•.....•.••••.....••........•.•..............••.........••........•.• : o : : Vocêsóvaiprecisardosconhecimentosmaisbásicos : : emHTML. :· .· .· .· .· . : 0.HTML "pipoca" durantetodo o exame.Mas você não : : estásendotestadoemHTML. No entanto,você vai sedepararcom o : : HTML nocontextodeváriasperguntas.Portanto,vocêprecisaráaomenos : : deumaidéiadoqueestáacontecendoquandovir umHTML simples. :· .· . .............................................................................. 8 capítulo1 oqueo browser cria... obrowserlê todoo códigoHTML, criaapáginaeatransforma emimagemparao usuário. I introduçãoearquitetura ® @----.:'\Iame: Password: ® você está 9 oprotocolo HTTP oqueéo protocoloHffP? Principais eleme solicitação: ntos do fluxo de ~ O métodoRTTP _ executada) (aaçaodeser ~ A página qu ' eseraacessada( ~ Osparâmetrosdo[o' , . umaURL) argumentospara nn?lano (como ummetodo) oHTTP rodanotopodoTCP/IP. Sevocê nãoestáfamiliarizadocomestesprotocolos derede,temosaquiumcursorápido:O TCP éresponsávelporgarantirqueumarquivo enviadodeumnó daredeparaoutrochegue íntegroaoseudestino,aindaqueo arquivo estejadivididoemblocosnomomentodo envio.O IP éo protocolodesustentação quetransfere/roteiaosblocos(pacotes)de umhostparao outrono seucaminhoatéo destino.Ou seja,o HTTP éoutroprotocolo deredequetemcaracterísticasespecíficas paraweb,maseledependedoTCP/IP para obtera solicitaçãoearespostacompletasde umlugarparao outro.A estruturadeuma conversaHTTP éumaseqüênciasimplesde Solicitação/Resposta;umbrowsersolicitae umservidorresponde. solicitaçãoHTTP ~ resposta HTTP Servidor Principais elementos do fluxo de resposta: ~ Um códigodestatus(~ocasodeuma solicitaçãobemsuced1da) i ~ Tipo deconteúdo(texto,imagem,HTML, \ etc.)~ O conteúdo(oHTML real,a imagem,etc.) Vocênãoprecisamemorizara especijicaçãodoHTTP. Sevocêquermesmosaber(felizmente,o examenãoesperaque vocêqueira),o protocoloHTTP segueo padrãoIETF, RFC 2616. O ApacheéumexemplodeservidorWebqueprocessasolicitações HTTP. O Mozilla éumexemplodebrowserquedáaousuárioo mecanismopara realizarsolicitaçõesHTTP evisualizarosdocumentosretomadospeloservidor. .......................................................................... ······· ······...................................................................................... 10 introduçãoearquitetura oHfML éparte da respostaHffF UmarespostaHTTP podecontero HTML. O HTTP acrescentaa informaçãodoheadernotopodequalquerquesejao conteúdoda resposta(emoutraspalavras,aquiloqueretomadoservidor).Um browserHTML usaaquelainformaçãodeheaderparaajudarno processamentodapáginaHTML. Considereo conteúdodoHTML comoumdadoquefoi coladodentrodeumarespostaHTTP. solicitação HTTP </head.> <bOdy> <img src==... > </bOdy> </htm.l> respostaHTTP 1 Servidor ~val'Jdóó bl"ówsel"el'Jcól'J-!-I"Qvll'la -!-~de Iw..~e...,elejel"a óV+l"a sóllct-!-a{ióltrrp pal"14,,. bvscal" 6 l"ecvl"sóespecllteadlJ.AJes-h/ ca.SIJ;6bl"ówsel"!al"a.Vll'la.SejVl'Jda sóllcl+a.{ióI/rrp pal"aób-h" a 1w..4jell'ldescl"i+. l'Jaf~ <1"""5>. ~Va.l7d46 bl"ówsel"el'Jumfl"a a +f4j <"+11'I1>de abel"-!-v"4;ele el7+l"a.ell'llI'Iód6 depI"4CeSSall'le~4d6 I/rK.4.L e ex'-!!ea/ / p~lP;a ." t/SVfJ.I"it>. você está 11 Métodos HTTP Se esta éa resposta, o que consta na solicita cão? A primeiracoisaquevocêencontraráéo nomedométodoHTTP. Estesnãosão métodosJava,masa idéiaé semelhante.O nomedométodoinformaaoservidor o tipodesolicitaçãoqueestásendofeitaecomoo restodamensagemserá formatada.O protocoloHTTP possuidiversosmétodos,masosquevocêusará commaisfreqüênciasãoo GET eo POSTo o usuáriodica em umIinkparauma novapágina. ~ J Usuário Browser obrowserenviaumHTiP GET ao servidor,pedindoaoservidorque CONSIGA a página. POST O browserenviaumHTiP POST ao servidorpassandoparao servidoro queo usuáriodigitounoformulário. Browser O usuáriodigitaemum 11I formulárioe dica no ·i!':1lt botãoenviar. ~ I Usuário 12 capítulo1 introduçãoearquitetura o&Ef éumasimplessolicita~o,o POSf podeenviardadosdo usuário oGET éo métodomaissimplesdoHTTP eseuprincipal trabalhonavidaépediraoservidorqueconsigaum recursoeenviá-Iodevolta.Talrecursopodeseruma páginaHTML, umJPEG, umPDF, etc.Não importa.O objetivodoGET éconseguiralgumacoisadoservidor. O POST éumasolicitaçãomaispoderosa.É comose fosseumGET++.Como POST, vocêpodesolicitar algoe,aomesmotempo,enviarosdadosdeum formulárioparao servidor(maisadiantenestecapítulo, veremoso queo servidorpodefazercomessesdados). Nã9ex1stemretguntasidl9téls r: E com relação aos outros métodos HTTP além do GET e do POST? 1\: Estes são os dois métodos mais usados por todo mundo. Mas, existem alguns raramenteusados (e os Servlets podem tratá-Ios),tais como HEAD, TRACE, PUT, DELETE, OPTIONS e CONNECT. Você realmente não precisa saber muitosobre estes outros para o exame, embora você possa encontrá- los em alguma pergunta. O capítulo A Vida e a Morte de um Servlet aborda o resto dos detalhes dos métodos HTTP que você poderá precisar. Espere um momento... Eu poderia jurar que vi solicitações GET que enviavam alguns dados por parâmetros ao servidor. você está 13 HTTPGET É verdade...vocêpodeenviaralgutlsdadosCOI11 o HffF G-Ef Mas vocêpodenãoquerer.As razõesparausarmoso POST no lugardo GET incluem: G) O totaldecaracteresno GET érealmentelimitado(dependendodo servidor).Seousuáriodigitar,digamos,umtrechoextensoemuma caixadeentradadotipo"Procurar",o GET podenãofuncionar. @)Os dadosquevocêenviaatravésdoGET sãoanexadosàURL, lá emcima,nabarradeendereçosdobrowser;portanto,seja o quefor,ficaráexposto.Melhornãocolocarasenhaououtra informaçãosensívelcomopartedeumGET! ®Devidoaoitem2 acima,o usuárionãopodeadicionaraosseus favoritosapáginaqueenviaumformulário,sevocêusaro POST emlugardoGET. Dependendodesuaaplicação,vocêpodequerer ounãoqueosusuáriossejamcapazesdearmazenarapágina resultantedoenviodeumformulário. A- (J}t.l-(JI"ij'~Q,1f4",l-es dcs pQ,('~dl"cs ex·f.ras. U7" A- . sepQ,('Q,c cQ,/fI!,I;.,I.ed{JS pal"~e+('cs Ccs dadtls ex+rQ,s). () +tl+1).1de dadlJs ôlle vtlcêpede (;"'1/1"41" a+l"Q,vésdlJ tf:ré IIÍf'\l+ad6 e explis+6 f4alll e/fl!,clÍf'\a11(J!Jr(Jwser; para +"dlJ /fI!,v'Id(Jver, JfI'I+(JS; f(J('/fI!,o./fI!,(J, s+rl~j da (JJel- ófle é el1vi'4daCtl/fl!,a st:.lici+a{i.ó. 14 capítulo1 introduçãoearquitetura At1atotMia de utMa solicitação HffF G-Ef ocaminhoatéorecursoequaisquerparâmetrosadicionadosàURL estãoincluídosna"linhadesolicitação". Os l.eo.df!J"sdO. S("tcl-h'yã", () calVlií'l!."paJ"a " \ A- veJ"são do Pf'tJ-flJcõ/t, õNtcVJ"S/i '10sf!f'vldcJ". ~ bl"cwseJ" es-f: SfJ!iél..fa'ldlJ. ~~ \).. GET / seiect! seiectbeer'l'aste. J sp·?co.tor=aarK!itaste=mal ty HTTP/ 1.1 Host: www.wickedlysmart.com User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:l.4) Gecko/20030624 Netscape/7.1 Accept: text/xml,application/xml,application/xhtml+xml,text/ html;q~0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/ gif;q=0.2,*/*;q~0.1 Accept-Language: en-us,en;q~0.5 Accept-Encoding: gzip,defiate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive:
Compartilhar