31
"Sôci'êdade de Ensino Sunerior da PamffJa Elogios antecipados para o Use a Cabeça! Servlets & JSpTM "Este livro, Use a Cabeça! Servlets & JSP, é tão bom quanto o Use a Cabeça! EJB, que me fez rir E me garantiu 97% de aproveitamento na prova!" - Jef Cumps, Consultor de J2EE, Cronos "Para nossas aulas de Servlet/JSP, nós compramos mais de dez livros, sem encontrar nenhum, de fato, satisfatório para nossas necessidades de ensino ... Até que encontrarmos esta 'jóia' pedagógica que você tem agora nas mãos! Os livros da série Use a Cabeça! nos tornaram melhores professores." - Philippe Maquet: Instrutor Sênior da Loop Factory, Bruxelas Elogios para o Use a Cabeça! EJBTM e para o formato da série Use a Cabeça! "A tecnologia Java está em todos os lugares - em telefones celulares, carros, câmeras, impressoras, jogos, PDAs, ATMs, smart cards, bombas de gasolina, estádios, equipamentos médicos, webcams, servidores, você escolhe. Se você desenvolve software e não conhece Java, definitivamente, está na hora de você mergulhar de cabeça - Use a Cabeça!." - Scott McNealy, Chairman, Presidente e CEO, Sun Microsystems (Nota do departamento de marketing: isto foi o melhor que você conseguiu do Scott? Veja se consegue fazer com que ele acrescente algo do tipo: "Se nós tivéssemos os livros da série Use a Cabeça! há dois anos, ainda podíamos ter aquela ilusão...'~). "Um livro incrivelmente agradável. Dividido e interconectado como uma rede de conhecimentos. Como professor da Purdue University, com especialização em desenvolvimento avançado de software utilizando tecnologias baseadas em Java, estou em constante busca por materiais de apoio que ofereçam motivação e uma linguagem compreensiva direcionada para o exame, mas que ao mesmo tempo não desestimulem os alunos. O livro 'Use a Cabeça! EJB' preenche estes requisitos facilmente! Livros como estes são extremamente raros. Incluí este livro como um dos textos essenciais para as futuras turmas do curso de graduação avançada que eu dou de 'Desenvolvimento de Aplicações para Empresas'. Parabéns para os autores; continuem com o excelente trabalho!" - Professor Dan Gill, Departamento de Tecnologia de Computadores, Purdue University. "Além do estilo envolvente que o levará do nível de leigo ao status de guerreiro aclamado no Java, o livro Use a Cabeça! Java traz um grande número de questões práticas, que outros títulos tratam como o temível 'exercício para o leitor ... ' Ele é inteligente, irônico, descolado e prático - existem poucos livros com estas características e que são capazes de ensinar sobre serialização de objetos e protocolos de execução em rede ao mesmo tempo." - Dr. Dan Russel, Diretor de Pesquisas Experimentais e Científicas com Usuários, IBM Almaden Research Center (e professor de Inteligência Artificial na Stanford University). Que maneira maravilhosa de aprender!!! EU NÃO CONSIGO LARGAR ESTE LIVRO!!! Meu filho de 3 anos acordou à Ih40 da manhã, e eu o colÇ>queide volta na cama segurando o livro e uma lanterna, e continuei lendo por mais uma hora. - Ross Goldberg "O Use a Cabeça! Java, escrito por Kathy e Bert, dá às suas páginas impressas uma aparência GUI como você jamais viu. De um jeito diferente e descolado, os autores transformam a aprendizagem em Java em uma empolgante experiência, do tipo 'qual será a próxima surpresa?'" .- Warren Keuffel, Revista Software Development.

JSP.SERVLET0001

Embed Size (px)

Citation preview

Page 1: JSP.SERVLET0001

"Sôci'êdade de Ensino Sunerior da PamffJa

Elogios antecipados para o Use a Cabeça! Servlets & JSpTM

"Este livro, Use a Cabeça! Servlets & JSP, é tão bom quanto o Use a Cabeça! EJB, que me fez rir Eme garantiu 97% de aproveitamento na prova!"

- Jef Cumps, Consultor de J2EE, Cronos

"Para nossas aulas de Servlet/JSP, nós compramos mais de dez livros, sem encontrar nenhum, de fato,satisfatório para nossas necessidades de ensino ... Até que encontrarmos esta 'jóia' pedagógica quevocê tem agora nas mãos! Os livros da série Use a Cabeça! nos tornaram melhores professores."

- Philippe Maquet: Instrutor Sênior da Loop Factory, Bruxelas

Elogios para o Use a Cabeça! EJBTM e para o formato da série Use a Cabeça!

"A tecnologia Java está em todos os lugares - em telefones celulares, carros, câmeras, impressoras,jogos, PDAs, ATMs, smart cards, bombas de gasolina, estádios, equipamentos médicos, webcams,servidores, você escolhe. Se você desenvolve software e não conhece Java, definitivamente, está nahora de você mergulhar de cabeça - Use a Cabeça!."

- Scott McNealy, Chairman, Presidente e CEO, Sun Microsystems

(Nota do departamento de marketing: isto foi o melhor quevocê conseguiu do Scott? Veja se consegue fazer com que eleacrescente algo do tipo: "Se nós tivéssemos os livros da sérieUse a Cabeça! há dois anos, ainda podíamos ter aquela ilusão...'~).

"Um livro incrivelmente agradável. Dividido e interconectado como uma rede de conhecimentos.Como professor da Purdue University, com especialização em desenvolvimento avançado de softwareutilizando tecnologias baseadas em Java, estou em constante busca por materiais de apoio queofereçam motivação e uma linguagem compreensiva direcionada para o exame, mas que ao mesmotempo não desestimulem os alunos. O livro 'Use a Cabeça! EJB' preenche estes requisitos facilmente!Livros como estes são extremamente raros.

Incluí este livro como um dos textos essenciais para as futuras turmas do curso de graduação avançadaque eu dou de 'Desenvolvimento de Aplicações para Empresas'. Parabéns para os autores; continuemcom o excelente trabalho!"

- Professor Dan Gill, Departamento de Tecnologia deComputadores, Purdue University.

"Além do estilo envolvente que o levará do nível de leigo ao status de guerreiro aclamado no Java, olivro Use a Cabeça! Java traz um grande número de questões práticas, que outros títulos tratam comoo temível 'exercício para o leitor ... ' Ele é inteligente, irônico, descolado e prático - existem poucoslivros com estas características e que são capazes de ensinar sobre serialização de objetos e protocolosde execução em rede ao mesmo tempo."

- Dr. Dan Russel, Diretor de Pesquisas Experimentais eCientíficas com Usuários, IBM Almaden Research Center (eprofessor de Inteligência Artificial na Stanford University).

Que maneira maravilhosa de aprender!!! EU NÃO CONSIGO LARGAR ESTE LIVRO!!! Meufilho de 3 anos acordou à Ih40 da manhã, e eu o colÇ>queide volta na cama segurando o livro e umalanterna, e continuei lendo por mais uma hora.

- Ross Goldberg

"O Use a Cabeça! Java, escrito por Kathy e Bert, dá às suas páginas impressas uma aparência GUIcomo você jamais viu. De um jeito diferente e descolado, os autores transformam a aprendizagem emJava em uma empolgante experiência, do tipo 'qual será a próxima surpresa?'"

.- Warren Keuffel, Revista Software Development.

Page 2: JSP.SERVLET0001

(

Parabéns pelo formato Use a Cabeça!

"É rápido, irreverente, divertido e envolvente. Cuidado - você pode realmente aprender alguma coisa!"- Ken Arnold, ex-Engenheiro Sênior da Sun Microsystems

e co-autor (com James Gosling, criador do Java) do livro"The J ava Programming Language"

"Eu passei no exame SCBCD com 94% de aproveitamento. Realmente, o 'P! EJB' é demais! Eu li olivro todo em 10 dias ..."

- Basavaraj Devershetty

" ... a única maneira de saber o valor de um tutorial é saber se ele realmente ensinará bem. Use a

Cabeça! Java é excelente para ensinar. Tudo bem, eu pensei que ele fosse bobinho ... mas, me dei contade que estava aprendendo os tópicos totalmente, à medida que avançava pelo livro.""O estilo do Use a Cabeça! Java tomou meu aprendizado, digamos, mais fácil."

- slashdot (análise do site honestpuck)

"Eu jamais poderia imaginar que alguém pudesse rir enquanto lesse um livro de TI! Usando o materialdo Use a Cabeça! EJB eu consegui uma ótima pontuação (91 %) e estabeleci um recorde mundialcomo o mais jovem SCBCD, com 14 anos de idade."

- Afsah Shafquat (o mais novo SCBCD do mundo)

"Esse livro é tão bacana que me deu vontade de CHORAR! Estou chocado."- Floyd Jones, Escritor Técnico Sênior/Garoto da piscina, BEA

"Se você quer aprender Java, não procure mais: bem-vindo ao primeiro livro técnico comcaracterísticas GUI! Com seu formato revolucionário e elaborado com perfeição, o livro oferecevantagens que outros títulos sobre Java simplesmente não conseguem ... Prepare-se para um passeiorealmente extraordinário pelo universo Java."

- Neil R. Bauman, Diretor Executivo e capitão da GeekCruises (www.GeekCruises.com)

"Se existe alguém no mundo familiarizado com o conceito do 'Use a Cabeça!', este sou eu. Este livroé tão bom que eu me casaria com ele na TV!"

- Rick Rockwell, comediante.

O noivo original do programa "Quem Quer Se Casar comum Milionário?" ("Who Wants to Marry a Millionaire"),da FOX Television

"O Use a Cabeça! Java é como o Monty Python meets the gang offourl ...o texto está tão bemdividido entre quebra-cabeças e histórias, questionários e exemplos, que você obtém uma abrangênciaquehenhum livro de informática conseguiu até agora."

- Douglas Rowe, Comunidade de Usuários de Java, Columbia.

"'Use a Cabeça! Java' ... dá um novo significado à frase de marketing da O'Reilly: 'Existe umO'Reilly para isso'z. Eu o escolhi, pois muitas outras pessoas que eu admiro o classificaram como'revolucionário' e eu descrevi uma técnica totalmente diferente para este livro. Eles estavam (estão)certos ... Sem fugir do típico formato da O'Reilly, eles conseguiram um formato científico, mas bemaceito. O resultado é divertido, irreverente, atuiü, interativo e brilhante ... A sensação de ler este livro éa de estar sentado bem próximo aos alto-falantes em uma sala de reunião, aprendendo - e rindo - comos colegas ... Se você quer ENTENDER Java, compre logo o seu."

- Andrew Pollack, www.thenorth.com

Page 3: JSP.SERVLET0001

Sociedade de Ensino Superbr da Paat1ira

"Lembra quando você estava no jardim de infância? Não? Bem, e quando você aprendeu pela primeiravez o alfabeto? É dificillembrar? Bem, não faz mal. Lendo o Use a Cabeça! lava, você vai voltara se divertir enquanto aprende ... Para aqueles que se interessam por aprender novas linguagens deprogramação e não vieram da área de ciência da computação ou da programação, este livro é umapreciosidade ... Ele torna divertido o aprendizado de uma linguagem dificil de computação. Espero queexistam mais autores interessados em quebrar o velho e corriqueiro modelo 'tradicional' do estilo deescrever. Aprender linguagens de computação deveria ser prazeroso e não oneroso."

- Judith Taylor, Comunidade de Usuários da Maeromedia,Southeast Ohio.

"Há poucos dias, recebi minha cópia do Use a Cabeça! lava, de Kathy Sierra e Bert Bates. Eu aindaestou no começo do livro, mas o que me encantou foi que, mesmo estando com sono naquela primeiranoite, me peguei pensando: 'tudo bem, só mais uma página e vou dormir.'"

- JoeLitton

"FINALMENTE, um livro de lava escrito tal qual eu escreveria se tivesse sido eu.Falando sério, este livro simplesmente arrasa qualquer outro livro de software que eujá li... É muitodificil escrever um bom livro ... É preciso muito tempo para explicar os assuntos, em uma seqüêncianatural e cujo foco é o leitor. É muito trabalho. Muitos autores, notoriamente, não estão prontos para odesafio. Parabéns à equipe do Use a Cabeça! EJB por este trabalho primoroso!

P.S. Quando vai sair o projeto Use a Cabeça! l2EE? E o Use a Cabeça! Desenvolvedor deComponentes para a Web? E como eu faço para que meu videocassete grave umjogo de futebolenquanto estou trabalhando?"

- Wally Flint

"Se você é relativamente um iniciante em programação e está interessado em lava, eis o seu livro ...Abordando tudo - desde objetos para a criação de interfaces gráficas de usuário (GUl),tratamento deexceções (erros), redes (sockets) e multitarefas, até como agrupar suas pilhas de classes em um únicoarquivo de instalação -, este livro é completíssimo ... Se você gostar do estilo, estou certo de que irá adorar olivro assim como eu. Espero que a série Use a Cabeça! possa ser estendida a vários outros assuntos!"

- LinuxQuestions.org

"Quando eu li o 'Use a Cabeça! lava', do mesmo autor, eu pensei que é impossível escrever outrolivro (aquele sobre EJB também) de uma forma tão brilhante. Porém, agora eles nos surpreenderamcom este livro ainda mais legal. Os livros da série Use a Cabeca! tornaram-se algo necessário(QUASE UMA EXIGÊNCIA) em todos os assuntos. Eu queri~ ser uma criança para poder aprendertudo da maneira como ensina este livro."

- Anshu Mishra

Eu trabalhei com EJB há cerca de 4 anos e o achei uma bagunça às avessas. Depois de ler asespecificações 2.1 e 2.0, eu descobri que é apenas uma t*** 3 fumegante que ficou maior. Seu livrorespondeu à maioria das incontáveis perguntas que martelavam meu cérebro de amendoim e permitiu­me passar na prova com uma pontuação de 92% ...Vencendo facilmente aquele colega de 14 anos de idade por 1 ponto. :-) Muito obrigado.

- Jim Steiner

"Eu me VICIEI nos contos do livro, nos códigos com anotações, nas entrevistas preparatórias e nosexercícios para o cérebro."

- Miehael Yuan, autor, Enterprise J2ME

Page 4: JSP.SERVLET0001

se a Cabeca Servlets & JSPTM...:>

Segunda Edição

Não seria fantástico se existisse

um livro sobre Servlets quefosse mais interessante do queapagar spam da sua caixa demensagens? Talvez isso seja

uma ilusão ...

Bryan BashamKathy Sierra

Bert Bates

Rio de Janeiro.2008

Page 5: JSP.SERVLET0001

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 First Servlets and JSPTM, 2st Edition © 2008 O'Reil/yMedia,lnc. ISBN: 978-0596102340 This translation is published and sold by permission ofO'Reil/yMedia, Inc., the owner of ali rights to publish and sell the some.

Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, semautorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem osmeios empregados: eletrônico, mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforçofoi feito para fornecer a mais completa e adequada informação, contudo a editora e o(s) autor(es) nãoassumem responsabilidade pelos resultados e usos da informação fornecida. Recomendamos aosleitores testar a informação, bem como tomar todos os cuidados necessários (como o backup), antes daefetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra midia.

Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de errostécnicos ou de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de

software, interpretação ou mesmo quando alguns deslizes constam na versão original de alguns livrosque traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br. a seção Erratas, onderelataremos, com a devida correção, qualquer erro encontrado em nossos livros.

Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, sejaexpressa ou implícita.

Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercialsão de responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podemter sido utilizados, e desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando aolucro, favorecimento ou desmerecimento do produto/fabricante.

Produção Editorial: Editora Alta Books

Coordenação Editorial: Roberto Baptista Barroco

Tradução: Eveline Vieira MachadoRevisão: Fernanda Rigamond

Revisão Técnica: Helder Borges

Diagramação: Equipe Alta Books

Impresso no Brasil

o código de propriedade intelectual de 10 de Julho de 1992 proibe expressamente o uso coletivo semautorização dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta práticageneralizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a pontode impossibilitar os autores de criarem novas obras.

Editora Alta Books

Rua Viúva Claudio, 291 - JacaréRio de Janeiro - RJ CEP 20551-010

Tel: 21 3278-8069 Fax: 21 3277-1253www.altabooks.com.br

[email protected]

Page 6: JSP.SERVLET0001

Esse livro é dedicado a todos aqueles que decidiram que EL implicit object

Page 7: JSP.SERVLET0001

os autores

Os "procurados" da série Use a Cabeça! (e deste livro)Beart Bates Bryan Basham

Bert é um antigo desenvolvedore arquiteto de software, masum período de 10 anos eminteligência artificial o fezse interessar por teoria daaprendizagem e treinamentovia computador. Ele passou aprimeira década de sua carreiracomo desenvolvedor viajandopelo mundo e ajudando clientescomo a rádio Nova Zelândia,o The Weather Channel e arede de entretenimentos Artsand Entertainment Network

(A&E) em suas transmissões.Atualmente, ele é membro daequipe da Sun responsável pelodesenvolvimento de diversos

exames de certificação em Java,incluindo o recente SCWCD.

Bert é um antigo e incorrigívelaficionado pelo GOl e vemtrabalhando há bastante

tempo em um programa. OJava há de se tomar uma

linguagem expressiva osuficiente para que ele finalizeseu projeto. Ele é um bomguitarrista e, atualmente, estáexperimentando o banjo.Sua mais recente aventura

foi a compra de um cavaloislandês, o que deverá trazernovos desafios aos seusconhecimentos na área detreinamento ...

VIII

Kathy gosta de teoria daaprendizagem e assuntosrelacionados à mente desde a

época em que era designer dejogos (ela escreveu jogos paraa Virgin, MGM e Amblin') edesenvolvedora em I.A2 Grande

parte do formato da série Usea Cabeça! foi desenvolvidoenquanto lecionava InteratividadeUsando Novas Midias, no

programa de extensão deEstudos em Entretenimentoda Universidade da Califómia

(DCLA). Recentemente, setomou instrutora-chefe da

Sun Microsystems e ensina osinstrutores de Java a divulgaremas mais novas tecnologiasdesta linguagem. Além disso,desenvolve diversos exames

para certificações Sun, incluindoo SCWCD. Junto com Bert

Bates, ela tem aplicadoextensivamente os conceitos da

série Use a Cabeça! no ensinode milhares de desenvolvedores.Ela fundou uma das maiorescomunidades em Java no

mundo virtual, a javaranch.com, premiada em 2003 e 2004com o Prêmio Produtividade emDesenvolvimento de Software.

Ela adora correr, esquiar, montara cavalo, andar de skate eciências esotéricas.

Bryan tem mais de vinteanos de experiência emdesenvolvimento de software,incluindo um período comsoftware de automaçãoavançada usando técnicasde I.A na NASA Eletambém atuou em uma

consultoria, desenvolvendoaplicações comerciais em 00personalizadas. Atualmente,Bryan é Desenvolvedor deCursos da Sun, com ênfasenos princípios de design emJava e em 00. Ele já trabalhouem diversos cursos de Java

da Sun, incluindo JDBC,J2EE, Servlets e JSP, além deDesenvolvimento de Softwareutilizando 00. Ele foi também

o primeiro designer dos examesSCWCD, nas versões originale atual.

Bryan pratica o Zen Budismo,joga Ultimate Frisbee, adorasom e pratica o ski telemark.

Page 8: JSP.SERVLET0001

conteúdo

(Sumát19)

Introdução XIX

Por que usar Servlets & JSPs: uma introdução 1

Arquitetura da aplicação web: visão geral de alto nível 37

Minitutorial do MVC: praticando com o MVC 67

Sendo um servlet: request e resposta 93

Sendo uma aplicação web: atributos e listeners 147

Estado de conversação: sincronizando o bean/entidade 223

Sendo um JSP: escrevendo códigos em JSP 281

Páginas sem scripts: escrevendo JSPs sem scripts 343

As tags customizadas são poderosas: usando a JSTL 439

Quando nem a JSTL é o bastante: desenvolvendo tags customizadas 499

Distribuindo sua aplicação web: distribuição da aplicação web 601

Mantenha em segredo, mantenha seguro: segurança da aplicação web 649

O poder dos filtros: wrappers efiltros 701

Padrões de Design Enterprise: padrões e Struts 737

Apêndice A: TestePreparatório Final 791Índice 865

IntroduçãoSeu cérebro pensando em Servlets. Aqui está você tentando aprender algo, enquantoseu cérebro lhe presta o favor de certificar-se de que tal aprendizado não seráinterrompido. Ele pensa, "é melhor reservar espaço para coisas mais importantes, comoqual animal selvagem evitar e se esquiar sem roupa é ruim mesmo". Então, como vocêvai induzi-lo a pensar que sua vida depende do conhecimento em Servlets?

A quem se destina este livro?

Nós sabemos o que seu cérebro está pensando

Metacognição

Domine seu cérebrp

O que você precisa para este livro

Passando no exame de certificação

Os revisores técnicos

Agradecimentos

XX

XXI

XXlll

xxv

XXVI

XXVlll

XXX

XXXI

IX

Page 9: JSP.SERVLET0001

1Por que usar servlets & JSPs?As aplicações web estão na moda. Quantas aplicações GUI você conhece que

são usadas por milhões de usuários em todo o mundo? Como desenvolvedor de

aplicações web, você não precisará se prender aos problemas de distribuição

presentes em toda aplicação standalone e irá distribuir sua aplicação a qualquer

pessoa que possua um browser. Mas você precisará dos servlets e dos JSPs, pois

as velhas e estáticas páginas HTML são tão, digamos, "1999". Saiba como mudar

do sUe na web, para a aplicação na web.

Principais elementos do 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 elementos do fluxode solicitação:• O método HTTP (a ação de

se~ executada)• A~<rinaqueseráacessada

(umaURL)• Osp:mi:mctrosdofurmulãrio(curoo

argtIIIlell!oSparamnrnéloOO)

solicitação HTTP

Servidor

Objetivos do Exame 2

O que os servidores web e os clientes fazem e como conversamentre si 4

Guia rápido de HTML 7

O que é o protocolo HTTP? 10

A anatomia das solicitações HTTP GET ePOST e das respostas HTTP 16

Localizando páginas web usando URLs 20

Servidores web, páginas estáticas e cm 24

Desmistificando os Servlets: escreva, distribua e rode um servlet 30

JSP foi o que aconteceu quando alguém apresentou o Java ao HTML 34

Arquitetura da aplicação web

2Os servlets precisam de ajuda. Quando uma solicitação chega, alguém tem

que instar o servlet ou, pelo menos, alocar uma thread para tratar a solicitação.

Alguém tem que chamar ou o método doPostO ou o método doGetO do servlet.

Alguém precisa levar a solicitação e a resposta para o servlet. Alguém precisa

gerenciar a vida, a morte e os recursos do servlet. Neste capítulo, vamos estudar o

Container e dar uma primeira olhada no padrão MVC.

(Controlador '\

iJSP 1

38

39

44

46

50

54

64

65

Objetivos do Exame

O que é um Container e o que ele oferece?

Como fica o código (o que toma um servlet um servlet)

Nomeando os servlets e mapeando-os a URLs usando o DD

História: Bob Constrói um Site de Encontros (introdução ao MVC)

Visão geral e exemplo de MVC (Model- View-Controller)

Um Deployment Descriptor (DD) "funcionando"

Ba",o de Como o J2EE cabe nisso tudoDad,,,

1,Modelo

JCVQ

antigo

Serv!et

View

JSP

x

Page 10: JSP.SERVLET0001

conteúdo

3Minitutorial do MVC

Criando e distribuindo uma aplicação MVC. Chegou a hora de colocar amão na massa e escrever um formulário HTML, um controlador de servlet, um

modelo (classe Java simples), um deployrnent descriptor XML e uma view em

JSP. É hora de criar, distribuir e testar. Antes, porém, você deverá configurar

seu ambiente de desenvolvimento. Em seguida, você terá que configurar o seu

ambiente de distribuição, de acordo com as especificações do servlet e do JSP,

e as exigências do Tomcat. Concordo, esta é uma aplicação pequena ... Porém,

quase NÃO existe aplicação que seja tão pequena e use o MVC.Especffico para o Tomcat

Este nome de diretÓf'io

também representa o •context r::::aroot" que o Torncat usa quando ~ Esta parte da estruturaestó resolvendo URLs. Nós ! de diretórios é exigido

exploraremos este conceno ;~ '-; pelo Tomcat e d~ve estarem maiores detalhes no l;;;J j diretamente ablllxo docopít1Jlosobre Distribuição. I {' seu diretóno home.

-~8)~_OOOmedaapricação.

parteda •• pecifj~ção~l

dos Servlets j- '-'\ l§l ,!J.

! _ ~" Este arquivo web.xmJ1"""" ~ h~TEMQ~Eestareml ___ _ z;; WEB-INF

Específico da 8,- -•.: ~ A estrutura deste pacote éAplicação

~; _~_". :~:~~~~u:n=;~o- - .' .' A menos que você esteja

1 _~ _ i _~ ~~(~:~~a~:e~t~i:O.. ,' - , -- _ - - maIs tarde). você DEVE colocar o

i [pacote de estrutura de diretóriosg 8 irnediatamente abaixo de WEB-

~> _si"", INF/classes.

Objetivos do Exame 68

Vamos construir uma aplicação MVC: primeiro o design 69

Criando os ambientes de desenvolvimento e distribuição 72

Criando e testando o HTML para o formulário inicial

Criando o Deployment Descriptor (DD) 77

Criando, compilando, distribuindo e testando o servlet de controle 81

Design, criação e teste do componente modelo 82

Otimizando o controlador para chamar o modelo

Criando e distribuindo o componente view; (isto é um JSP) 87

Otimizando o servlet de controle para chamar o JSP 88

4Sendo um servlet

Servlets vivem para servir clientes. A função de um servlet é receber uma

solicitação do cliente e devolver uma resposta. A solicitação talvez seja simples:

"traga-me a página de Boas-vindas". Ou pode ser complexa: "Finalize o

processo do meu carrinho de compras."A solicitação carrega dados cruciais e

o código do seu servlet tem que saber como encontrá-Ios e utilizá-Ios. E ele tem

que saber como enviar uma resposta. Ou não ...

o servlet usa os dados

NÃO Idempotente do POST para atualizar

<_ .... ~:":: .... ObanCOde .....d.•..QdOS.~ LJ wz -----8..~~ WW'. D~ M /servletCliente ':::~ irO servJet envia de volta uma resposta

~ com uma página gerada em HTML

Objetivos do Exame 94

Os Servlets são controlados pelo Container 95

Cada solicitação roda em uma thread separada! 101

A verdadeira função do servlet no tratamento das solicitações 105

A história da solicitação não-idempotente 112

O que determina se você recebeu uma solicitação GET ou POST? 117

Enviando e usando parâmetro( s) 119

Então, essa foi a Solicitação ... vejamos agora a Resposta 126

Você pode configurar headers de resposta, você pode adicionar

headers de resposta 133Redirecionamento de servlets faz o browser trabalhar 136

Revisão: HttpServletResponse 140

XI

Page 11: JSP.SERVLET0001

5Sendo uma aplicação webNenhum servlet vive sozinho. Nas aplicações web atuais, vários componentes

trabalham em conjunto por um objetivo. Temos os modelos, os controladores

e as views. Temos os parâmetros e os atributos. Temos as classes helper. Mas,

como juntar os pedaços? Como permitir que os componentes compartilhem

informações? Como você oculta informações? Como você torna uma informação

thread-safe? Seu trabalho pode depender destas respostas.

Atributos de SOUctTAÇÃO

9rset

Objetivos do Exame 148

Os Parâmetros Init dão uma força 150

Como um JSP consegue obter os parâmetros init do servlet? 155

Os parâmetros init do contexto dão uma força 157

Comparando o ServletConfig com o ServletContext 159

Ela quer um ServletContextListener 166

Tutorial: escreva um ServletContextListener simples 168

Compile, distribua e teste o seu listener 176

A história completa, uma análise do ServletContextListener 178

Listeners: eles não servem apenas para os eventos de contextos 180

O que é exatamente um atributo? 185

AAPI Atributo 189

O escopo de contexto não é thread-safe! 192

Como tomamos os atributos do contexto thread-safe? 194

Testando a Sincronização 195

Os atributos de Sessão são thread-safe? 198

Os males do SingleThreadModel 201

Apenas os atnbutos da Solicitaçãoe as variáveis locais são thread-safe! 204

Atributos da Solicitação e request dispatching 205

,,,

~set

Acessível apennspamoquelescomoc:essoQ_HttpSessionespecifico

XII

Page 12: JSP.SERVLET0001

6

conteúdo (sumário)

Estado de conversaçãoOs servidores web não têm memória curta. Assim que eles lhe enviam umaresposta, eles esquecem quem você é. Na próxima vez que você fizer umasolicitação, eles não o reconhecerão. Eles não se recordam do que você solicitouno passado e nem do que eles enviaram como resposta. Nada. Porém, algumasvezes você precisa manter o estado de conversação com o cliente durante váriassolicitações. Um carrinho de compras não funcionaria se o usuário tivesse queescolher seus produtos e finalizar a compra de uma única vez.

06of.if-f,-",",,-!--r.~""~'­~"ú'ú ..•.•."'~=

Objetivos do Exame

Esperamos que seja uma conversa (como as sessões

funcionam)

IDs de sessão, cookies e outros fundamentos das sessões

Reescrita de URL: uma alternativa

Quando as sessões envelhecem; dando adeus às sessões ruins

Posso usar cookies para outras coisas além das sessões?

Os principais momentos de um HttpSession

Não se esqueça do HttpSessionBindingListener

A migração da sessão

Exemplos de listener

224

226

231

237

241

250

254

256

257

261

Sendo um JSP

Um JSP torna-se um servlet. Um servlet que você não cria. O Container olhao seu JSP, o traduz em código-fonte Java e o compila em uma classe servlet deJava completa. Porém, você tem que saber o que acontece quando o código quevocê escreveu em JSP se transforma em código Java. Você pode escrever códigosJava em JSP, mas será que você deveria? E se não for um código Java, o quevocê pode escrever? Como ele jaz a tradução para o código Java? Veremos seisdiferentes tipos de elementos JSP ~ cada um com seu próprio propósito e, sim,sintaxe única. Você aprenderá como, por que e o que escrever no seu JSP. E vocêaprenderá o que não escrever.

~',. ., ._.~.

Objetivos do Exame

Criando um JSP simples usando o "out" e uma

diretiva de página

Expressões, variáveis e declarações em JSP

Hora de ver. um servlet gerado a partir do JSP

A variável out não é o único objeto implícito

">.,. O Ciclo de vida e a inicialização de um JSPMyISP-.J<pSc1vlet

Já que estamos falandosobre isso ... as três diretivas

Scriptlets considerados perigosos? Eis a EL

Mas, espere ... ainda não vimos as ações

282

283

288

296

298

306

314

317

323

XIII

Page 13: JSP.SERVLET0001

8Páginas sem scripts

Fuja do scripting. Será que seus webdesigners precisam mesmo saber Java?

Será que eles pensam que quem programa Java para servidores tomar-se-á,

digamos, designer gráfico? E mesmo que a equipe seja só você, você quer

mesmo um monte de bits e pedaços de códigos Java nos seus JSPs? Você sabe

o que significa "um pesadelo na hora da manutenção"? Escrever páginas sem

scripts não só é possível, como também é mais fácil e mais flexível com a nova

especificação JSP 2.0, graças à nova Expression Language (EL). Padronizada

depois do JavaScript e do XPATH, os webdesigners sentir-se-ão em casa com a

EL. E você também vai gostar (assim que você se acostumar). Porém, existem

algumas armadilhas ... a EL se parece com o Java, mas não é. Às vezes, a EL se

comporta de forma diferente de como comportar-se-ia a mesma sintaxe no Java.

Portanto, fique atento!

XIV

.""'<0""" .•.••••.••• '''<1''''<:;

'9"",'~.,,<!~~",-,.~.". _~d~.

Objetivos do Exame 344

Quando os atributos são beans 345

Ações-padrão: useBean, getProperty, setProperty 349

Você sabe fazer referências polimórficas para beans? 354

atributo param dá uma ajuda 360

Convertendo propriedades 363

A Expression Language (EL) salva o dia! 368

Usando o operador ponto (.) para acessar propriedades

e mapear valores 370

O [c:catch] dá a você mais opções (Lists, arrays ...) 372

Mais detalhes dos operadores ponto e [ ] 376

Os objetos implícitos da EL 385

Funções EL e tratando o "null" 392

Os pedaços reutilizáveis do template - dois tipos de "include" 402

A ação-padrão <jsp:forward> 416

Ela não conhece as tags JSTL (uma visão rápida) 417

Revisando as ações-padrão e o include 417

Page 14: JSP.SERVLET0001

9

conteúdo

As tags customizadas são poderosasEm alguns casos, você precisa de mais do que a EL ou ações-padrão. E se

você quisesse fazer um loop através dos dados de um array, exibindo em seguida

um item por linha em uma tabela HTML? Você sabe que poderia escrever isso em

dois segundos, usando um loop for em um scriptlet. Mas você está tentando evitar

os scripts. Sem problema. Quando a EL e as ações-padrão não forem suficientes,

você pode usar tags customizadas. Elas são tão fáceis de usar em um JSP quanto

as ações-padrão. Melhor ainda, alguém já escreveu boa parte das tags de que você

mais provavelmente precisará, e as juntou na JSTL (JSP Standard Tag Library,

ou Biblioteca de Tags JSP Padrão). Neste capítulo, aprenderemos a usar tags

customizadas, e no capítulo seguinte, aprenderemos a criar as nossas próprias tags.

Objetivos do Exame 440

Fazendo loops sem scripts; <c:forEach> 446

Controle condicional com o <c:i:f> e o <c:choose> 451

Usando as tags <c:set> e <c:remove> 455

Com a <c:import>, há três maneiras de incluir conteúdo 460

Customizando o que você inclui 462

Fazendo o mesmo com <c:param> 463

A <c:url> para todas as suas necessidades de hyperlink 465

Crie suas próprias páginas de erro 468

A tag <c:catch>. Semelhante a try/catch ... mais ou menos 472

E se você precisar de uma tag que NÃO esteja na JSTL? 475

Preste atenção ao <rtexprvalue> 480

O que pode existir no corpo de uma tag 482

O tag handler, o TLD e o JSP 483

A taglib <uri> é apenas um nome, não um local 484

Quando um JSP usa mais de uma biblioteca de tags 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.{(as fi.:N.js. 5i!"'!~5 5tte.j"nll1\ (I:!-""jV;,,!DS 'u fI,+"tJ,,,,+a

V;jr-J<!l /"* exhl'~c.

MatrL,,{Ievoiutions

!«:so,!h"''''f,,''~iro s,'''''J,n---'7'j KillBilIBoondockSaints

Àmelie

ReturnoflheKingMeanGirls

xv

Page 15: JSP.SERVLET0001

10

11

Quando nem a JSTL é o bastante ...

Em alguns casos, a JSTL e as ações-padrão não são suficientes. Quando vocêprecisa de algo customizado, e não quer voltar aos velhos scripts, você pode escrever osseus próprios tag handlers. Dessa maneira, os seus desenvolvedores de páginas poderãousar a sua tag nas suas páginas, enquanto todo o trabalho duro é feito nos bastidores, nasua classe tag handler. Mas há três maneiras diferentes de se criar os seus próprios taghandlers, então, há muito o que aprender. Dessas três, duas foram introduzidas com oJSP 2.0 para tomar a sua vida mais fácil (Simple Tags e Tag Files).

Objetivos do Exame 500

Tag Files: iguais ao include, só que melhores 502

Onde o Container procura por Tag Files 509

Tag handlers simples 513

Uma tag Simples com um corpo 514

E se o corpo da tag usar uma expressão? 519

Você ainda precisa saber sobre os tag

handlers Clássicos 529

Um tag handler Clássico bem pequeno 531

O ciclo de vida Clássico depende dosvalores retomados 536

A interationTag lhe permite repetir o corpo 537

Valores-padrão retomados pela TagSupport 539

A interface DynamicAttribute 556

Com BodyTag, você tem dois novos métodos 563

E se você tiver tags que funcionam conjuntamente? 567

Usando a API PageContext para tag handlers 577

Distribuindo sua aplicação webFinalmente, sua aplicação está pronta para o horário nobre. As suas páginasestão finalizadas, seu código está testado e ajustado, e o prazo de entrega era háduas semanas atrás. Mas, para onde vai isso tudo? Tantos diretórios, tantas regras.Que nome você dá aos seus diretórios? Qual nome o cliente pensa que eles têm? Oque é que o cliente realmente solicita, e como o Container sabe onde procurar?

Referênciaaumbeanlocal

XVI

Objetivos do Exame

Principal tarefa da distribuição: onde entra o quê?

~" Arquivos WAR~ Como o mapeamento de servlets REALMENTE funciona

=~?::::::~;~:::.Configurando arquivos de boas-vindas no DD

Configurando páginas de erro no DD

~ ~ Configurando a inicialização de servlets no DD

__ -êCriando um JSP compatível com XML: um Documento JSP

602

603

612

616

622

626

628

629

Page 16: JSP.SERVLET0001

conteúdo

Objetivos do Exame 650

O Top 4 em segurança de servlets 653Como Autenticar no Mundo HTTP 656

As Dez MelhoresRazõespara realizara sua segurançadeclarativamente 659

Quem implementa a segurança em uma aplicação web? 660

Autorização: funções e restrições 662

Autenticação: quatro sabores 677

OS QUATRO tipos de autenticação 677

Protegendo a segurança dos dados em trânsito: HTTPS em ação 682

Como implementar confidencialidade e integridade de dados casoa caso e declarativamente 684

Mantenha em segredo, mantenha seguro

12

o ~~::::j~~:ma~;~~asmais flexíveis,

G Está no exame.

Sua aplicação web está emperigo. O perigo espreita em cada canto da rede. Você nãoquer os Caras Maus xeretando nas transações da sua loja virtual, roubando númerosde cartões de crédito. Também não quer os Caras Maus convencendo o seu servidorde que eles na verdade são os Clientes Especiais Que Recebem Grandes Descontos.E você não quer ninguém (amigo OU inimigo) olhando dados confidenciais dosempregados. Será que o Jim, do departamento de marketing, precisa mesmo saberque a Lisa, do departamento de engenharia, ganha três vezes mais do que ele?

As Dez Melhores Razões para realizar a Suasegurança declaratwamente

'Iil lJmpaucomais deprátirocomXML 11ÕrJfazmal a 11inguém.

O :~:U~::te, as.~eclaraçõescasamnaturalmente

deparrame;oSd~~ ':mp~O) já existentesno

e Fica multo bem no seu curriculo.

e Permite aos dcsenvoh-edores de aplicações IeUtJlizaremsenlets, mesmo sem acesso ao código-fonte.

O É legal, simplesmente.

o poder dos filtros

13Os filtros lhe permitem interceptar a solicitação. E se puder interceptar asolicitação, você poderá também controlar a resposta. E, melhor de tudo, o servletnem percebe o que aconteceu. Ele nunca ficará sabendo que alguém intercedeuentre a solicitação do cliente e a invocação do método serviceO do servlet peloContainer. O que isso significa para você? Mais férias. Porque o tempo que vocêlevaria reescrevendo apenas um dos seus servlets pode ser despendido, em vezdisso, escrevendo e configurando um filtro com a capacidade de afetar todos os seussetvlets. Adicionar tracking das solicitações do usuário a todos os servlets da suaaplicação? Sem problema. Manipular o output de cada servlet da sua aplicação? Semproblema. E você não precisa nem sequer tocar no código do servlet.

•·181'" ••--_ .•...

a pilha• a pilha9 a pilhaeo Conta;tle<"

""'P<Jn"otrlétodo~i<eOdoS••••leM I""" o

~~::~~~éfircl,m-.e ""tilo,;

",t;rndodo.pilll<l.

a pilhae

Objetivos do Exame

Construindo um filtro para o monitoramento das solicitações

O ciclo de vida de um filtro

Declarando e ordenando filtros

Comprimindo o output com um filtro no lado da respostaa pilhao

~;::o::-,. Os wrappers são demais

êiªª::: O código do verdadeiro filtro de compressãoConta;ner-nMlÜQa

respost"- Código do wrapper de compressão

702

707

708

710

713

719

722

724

XVII

Page 17: JSP.SERVLET0001

14Padrões de Design EnterpriseAlguém já fez isso antes. Se estiver começando agora a desenvolver aplicaçõesweb em Java, você tem sorte. Poderá se beneficiar do saber coletivo das dezenasde milhares de desenvolvedores que já trilharam esse caminho e sobreviverampara contar. Usando tanto os padrões de design específicos do J2EE quantooutros padrões, é possível simplificar o seu código e a sua vida. E o padrão dedesign mais significativo para aplicações web, o MVC, possui até mesmo umframework absurdamente popular, o Struts, que ajudará você a criar um servletFront Controller flexível e de fácil manutenção. Você deve a si mesmo tirarvantagem do trabalho dos outros para que possa despender mais tempo nascoisas mais importantes da vida ...

Objetivos do Exame 738

O poder do hardware e do software por trás dos padrões 739

Revisão dos princípios do design de software... 744

Padrões para dar suporte a componentes de modelos remotos 745

Visão geral da JNDI e da RMI 747

O Business Delegate é um "intermediário" 753

Simplifique os seus Business Delegates com o Service Locator 759

Hora de usar um Transfer Object? 761

Nosso primeiro padrão revisitado ... MVC 762

Sim! É o Struts (e o Front Controller), em poucas palavras 767

Refatorando a aplicação Beer para o Struts 770

Revisão sobre padrões 778

fausa pataº caté

o Teste Preparatório final. É isso, 69 perguntas. A aparência, os assuntosabordados e o nível de dificuldade são praticamente idênticos aos da provaoficial. Nós sabemos.

o1

XVIII

Teste preparatório final

Respostas

índice

791

828

865

Page 18: JSP.SERVLET0001

1 Introdução

Como usar este livro?

Page 19: JSP.SERVLET0001

Use a Cabeça JSP

A quem se destina este livro?Se você responder "sim" a todas estas perguntas:

(1) Você sabe Java? (não precisa ser um guru)

® Você gosta de consertar - você aprende fazendo, ao invés de apenas ler? Você desejaaprender, compreender, lembrar dos servlets e dos JSPs e passar no exame SCWDfor Java EE 1.5?

® Você prefere uma conversa descontraída em uma festa a palestras acadêmicas semgraça e tediosas este livro é para você.

este livro não é para você.

Quem provavelmente deveria manter-se longe deste livro?Se você responder "sim" a alguma destas perguntas:

(!) Você é totalmente inexperiente em Java? Você não precisa estar em um nívelavançado, mas, definitivamente, deve ter alguma experiência. Se não tiver, pegue umexemplar do Use a Cabeça! Java agora mesmo. Hoje! E só então retome a este livro.

® Você é um desenvolvedor Java "forçado" em busca de um livro de consulta?

® Você é um veterano em J2EE em busca de técnicas ultra-avançadas e "como-fazer"específicos para servidores, projetos para empresas e códigos complexos, robustos ereais?

@ Você tem medo de experimentar coisas diferentes? Você prefere fazer um canal noseu dente a misturar listras num tecido xadrez? Você acha que um livro técnico perde acredibilidade se os componentes Java tiverem aparência humana?

este livro não é para você.

xx

Page 20: JSP.SERVLET0001

Nós sabemos o que você está pensando.

"Como este livro de programação pode ser sério?"

"Com tantas ilustrações?"

"Eu consigo realmente aprender desta forma?"

E nós sabemos o que seu cérebro está pensando.

Seu cérebro clama por novidades. Está sempre procurando, examinando eesperando por algo diferente. Ele foi criado assim e o ajuda a se manter vivo.

Atualmente, é pouco provável que você vire o lanchinho de um tigre,mas seu cérebro continuará em alerta. Nunca se sabe.

Então, como seu cérebro faz para lidar com todas as coisas rotineiras,comuns e normais com as quais você se depara? Tudo o que ele puderfazer para impedir que tais coisas interfiram no seu real trabalho:registrar o que interessa. Não faz mal guardar as coisas fúteis; elas nuncapassarão pelo filtro que retém o que "obviamente não importa".

Como seu cérebro reconhece o que é importante? Suponha que você tireum dia para fazer uma caminhada e um tigre pule na sua frente. O queacontece com a sua cabeça e o seu corpo?

Os neurônios disparam. As emoções são ativadas. As reaçõesquímicas explodem.

E é assim que seu cérebro reconhece ...

Isto pode ser importante! Não esqueça!Mas, imagine que você está em casa, ou em umabiblioteca. É um local seguro, acolhedor e semtigres. Você está estudando. Preparando-se paraum exame. Ou tentando aprender um assuntotécnico e difícil, que seu chefe acredita quelevará uma semana, dez dias no máximo.

Só um problema. Seu cérebro está tentandolhe fazer um grande favor. Ele está tentandoassegurar-se de que aquele conteúdo, obviamenteirre1evante, não vá confundir os poucos recursos.Recursos estes que seriam melhores se usados paraarmazenarem coisas realmente importantes. Comotigres. Como o perigo do fogo. Ou como vocênunca mais deveria praticar snowboard de short.

E não existe um jeito simples de dizer ao seucérebro, "Ei cérebro, muito obrigado, mas nàoimporta se o livro é tedioso, ou o quanto estouregistrando agora na escala Richter emocional,eu realmente quero que você guarde estascoisas por aqui."

você está

introdução

~ XXI

Page 21: JSP.SERVLET0001

Use a Cabeça JSP

Então, o que é necessário para se aprender algo? Primeiro, você precisa absorver e depoisse certificar de que não irá esquecer. Não tem nada a ver com enfiar coisas na sua cabeça.Baseando-se nas últimas pesquisas em ciência cognitiva, neurobiologia e psicologiaeducacional, o ato de aprender envolve muito mais que textos em uma página. E nós sabemos oque faz o seu cérebro funcionar.

Alguns princípios de aprendizagem da série Use a Cabeça:Dê ênfase à parte visual. As imagens são muito mais fáceisde serem memorizadas do que palavras soltas e tomam oaprendizado muito mais produtivo (aumenta em até 89% amemória e o aprendizado usando a técnica da transferência). Efacilita a compreensão. Ponha as palavras dentro ou próximasàs respectivas figuras, em vez de no rodapé ou em outra páginae os leitores serão até duas vezes mais capazes de solucionar osproblemas relacionados com aquele conteúdo.

Use um estilo próprio e em forma de conversa. Em estudosrecentes, o desempenho dos alunos nas provas realizadas apósaprenderem a matéria, melhorava em 40% se o conteúdo falassediretamente ao leitor usando a primeira pessoa, com um estiloque simulasse uma conversa em lugar do tom formal. Contehistórias em vez de dar palestras. Use a linguagem coloquial. Eviteser muito sério. Em que você prestaria mais atenção: em umacompanhia interessante na festa ou em uma palestra?

precisa chamar ummétodo no servidor

(~

serviçoremoto RMI

Faça o aluno refletir.Em outras palavras, nada acontece na sua cabeçaa menos que você exercite muito os seus neurônios. O leitor precisa estarmotivado, atraído, curioso e inspirado para resolver problemas, tecerconclusões e gerar um novo conhecimento. E para isso você precisa dedesafios, exercícios e perguntas que estimulem o raciocínio, além deatividades que envolvam ambos os lados do cérebro e os múltiplos sentidos.

Prenda - e segure - a atenção do leitor. Todos nós já pensamos "eurealmente gostaria de aprender isto, mas eu não consigo me manter

abstrac acordado depois da primeira página". Seu cérebro presta atenção a coisasroam () ; que são extraordinárias, interessantes, estranhas, atraentes e inesperadas.

/ Aprender um assunto novo, difícil e técnico não precisa ser chato. Seuf, cérebro aprenderá muito mais rápido se o assunto for interessante.

c.óM !)WI pM'l.fb-rV!i!'5Udi,

Mexa com a emoção do leitor. Agora nós sabemos que sua capacidade derecordar algo depende enormemente do seu conteúdo emocional. Aquilo quevocê se preocupa, você se recorda. Você se recorda quando sente algo. Não,nós não estamos falando de histórias de sofrimento entre um menino e seu

cão. Estamos falando de emoções como a surpresa, a curiosidade, a diversão,o "caramba!. .." e aquela sensação de "Eu sou o cara!" que vem quando vocêconsegue matar uma charada, aprender algo que todos acham difícil ouperceber que sabe uma coisa que o "bam-bam-bam" da engenharia não sabe.

XXII

Page 22: JSP.SERVLET0001

introdução

Metacognição: pensando sobre pensarSe você realmente quer aprender - e aprender maisrápida e definitivamente -, preste atenção em comovocê presta atenção. Pense em como você pensa.Aprenda como você aprende.A maioria de nós não fez cursos de metacognição outeoria do aprendizado enquanto crescia. Esperam queaprendamos, mas raramente nos ensinam a aprender.Supomos que se você está segurando este livro, vocêquer aprender servlets e, provavelmente, não querperder muito tempo. Considerando que você faráa prova, você terá que lembrar do que leu. Logo,precisa entender o que foi lido. Para obter o máximodeste livro - ou de qualquer outro livro ou forma deaprendizado -, dê responsabilidades ao seu cérebro.Faça-o ficar atento a este conteúdo.

O truque é fazer com que seu cérebro encare comoRealmente Importante o novo material que vocêestá aprendendo. Crucial para o seu bem-estar.Tão importante quanto um tigre. Caso contrário,você estará constantemente em conflito, com o seucérebro dando o melhor de si para não assimilar oassunto novo.

Então, como você FAZ para que seu cérebro

considere os servlefs um tigre faminto?

Existem as formas lenta e tediosa e a mais rápida e efetiva. A forma lenta é a pura repetição. É claroque você sabe que será capaz de aprender e relembrar até mesmo o assunto mais estúpido se o ficarrepetindo. Com uma repetição intensa seu cérebro diz, "isto não parece importante para ele, mas elefica olhando para a mesma coisa repetidamente, então eu imagino que deva ser".

A maneira mais rápida é fazer qualquer coisa que aumente sua atividade cerebral, principalmenteatividades de tipos diferentes. O que foi dito na página anterior é uma grande parte da solução efoi comprovado como forma de ajudar seu cérebro a trabalhar em seu favor. Por exemplo, estudosdemonstram que colocando as palavras dentro das figuras que elas representam (em vez de soltas napágina, como uma explicação ou dentro do texto) faz com que seu cérebro entenda como as figuras eas palavras se relacionam, ativando mais neurônios. Mais neurônios ativados significa mais chancesdo cérebro entender que determinado assunto merece atenção e, possivelmente, deve ser registrado.

O estilo interativo também ajuda, pois as pessoas tendem a prestar mais atenção quando percebem queestão em uma conversa, já que se espera que ela;s acompanhem até o final. O interessante é que seucérebro não se importa necessariamente que a "conversa" seja entre você e um livro! Por outro lado,se o estilo de escrever for seco e formal, seu cérebro entenderá isso do mesmo modo que você o fariase estivesse em uma palestra numa sala repleta de participantes indiferentes.

Porém, as figuras e o estilo que simula uma conversa são só o começo.

você está ~ XXIII

Page 23: JSP.SERVLET0001

Use a Cabeça JSP

Eis O que NÓS fizemos:Ro<:hd'~ttltf

W<wd<;::ligners~Quthere ..•

Nós usamos figuras, pois seu cérebro está adaptado ao que é visual,não texto. Para ele, uma imagem vale 1.024 palavras. E quando figurase textos trabalham juntos, nós inserimos o texto na imagem, pois seucérebro funciona melhor quando o texto está dentro daquilo a que se refere, Idiferente de estar numa observação ou escondido em algum lugar no texto.

Nós usamos a repetição. Dizemos a mesma coisa de formas distintas eatravés de meios diferentes - e múltiplos sentidos -, para aumentar aschances de o assunto ser registrado em mais de uma área cerebral.

Nós usamos os conceitos e as figuras de maneira inesperada, pois seucérebro é ativado quando encontra uma novidade. E usamos figuras eidéias com pelo menos algum conteúdo emocional, pois seu cérebro estápredisposto a dar mais atenção à bioquímica das emoções. Aquilo quete faz sentir algo tende a ser mais facilmente lembrado, ainda que estasensação não passe de um pouco de humor, surpresa ou interesse.

Nós usamos um estilo próprio que simula uma conversa, porque seucérebro tende a prestar maior atenção quando acredita que você estáparticipando d~ uma conversa e não assistindo passivamente a umaapresentação. E assim que funciona mesmo quando você está lendo.

Nós incluímos mais de 40 atividades, pois seu cérebro está habituado aaprender e a relembrar mais quando você faz alguma coisa do que quandovocê lê a respeito. E colocamos exercícios dificeis, porém possíveis deserem feitos, pois é como a maioria das pessoas prefere.

Nós usamos métodos diferentes de aprendizado, pois você poderiapreferir os procedimentos passo a passo, enquanto outra pessoapoderia preferir entender primeiro as figuras grandes, enquanto outras,simplesmente ver os exemplos de códigos. Mas, independentemente dasua própria preferência de aprendizado, todos se beneficiam vendo omesmo conteúdo representado sob múltiplas formas.

Nós colocamos assuntos para serem usados por ambos os lados do seucérebro, pois quanto mais você usar do seu cérebro, mais chances terá deaprender e lembrar, além de mais tempo de concentração. Já que colocandopara funcionar um lado do cérebro significa geralmente a oportunidade dooutro lado descansar, você poderá produzir mais por mais tempo.

E nós incluímos estudos de caso e exercícios que apresentam maisde um ponto de vista, pois seu cérebro está adaptado a aprender maisintensamente, quando forçado a fazer avaliações e julgamentos.

Nós inserimos desafios com exercícios eperguntas que nem sempre têmrespostas diretas, pois seu cérebro está mais propenso a aprender e lembrarquando tem que se esforçar por algo. Pense nisso - você não consegue manterseu corpo em forma apenas observando as pessoas na academia. Porem, nósfizemos o melhor possível para garantir que, quando você estiver trabalhandoduro, será pelas coisas certas. E que você não estará desperdiçando nenhumdendrito a mais, tentando entender um exemplo complicado ou analisandoum texto dificil, repleto de jargões, ou então, extremamente resumido.

Nós usamos pessoas nas histórias, nos exemplos, nas figuras, etc. Afinal,você é uma pessoa e seu cérebro dá maior atenção a pessoas do que a coisas.

Nós usamos a técnica do 80/20. Entendemos que se você pretende ser umPhD em JSP, este não deve ser seu único livro. Logo, não falamos sobretudo. Apenas da matéria que você realmente precisará.

XXIV

Page 24: JSP.SERVLET0001

introdução

Eis O que VOCÊ pode fazer paradominar seu cérebro

Então, fizemos a nossa parte. O resto é com você. As dicas a seguir são oponto de partida. Preste atenção no seu cérebro e descubra o que serve e o

Jef!cá/'h , que não serve para você. Experimente novidades.d ! " f: C<J!Y4{1P - ;

~" ,J1?1tJ;«elf'tI. (). "i!I Pó/'r",

(1) Vá devagar. Quanto mais você entender,menos terá que memorizar.Não leia apenas. Pare e pense. Quando olivro perguntar algo, não pule para a resposta.Imagine que alguém esteja realmente lhefazendo a pergunta. Quanto mais você forçar oseu cérebro a pensar, melhores serão as chaTIcesde aprender e recordar.

® Faça os exerCÍcios. Faça suas própriasanotações.Nós os colocamos no livro, mas se nósresolvermos, vai parecer que alguém estáfazendo a ginástica para você. E não bastaolhar os exercícios. Use um lápis. Estáprovado que a atividade fisica, enquanto seestuda, pode melhorar o aprendizado.

@) Leia a seção "Perguntar não ofende".Ou seja, todas elas. Elas não são barraslaterais opcionais. Elas s ão parte doconteúdo principal! Não as pule.

@Antes de ir dormir, faça desta a sua últimaleitura. Ou pelo menos a última que lheexija racioCÍnio.Parte do aprendizado (especialmente atransferência para a memória de longaduração) acontece depois que você fecha olivro. Seu cérebro necessita do seu própriotempo para maior processamento. Se vocêpuser uma informação nova durante estetempo de processamento, o que você acaboude aprender será perdido.

@ Beba água. Muita água.Seu cérebro funcionará melhor se receber

um belo banho. A desidratação (que pode .acontecer bem antes de você sentir sede)reduz a função cognitiva. A cerveja, ou algomais forte, será bem-vinda quando vocêpassar no exame.

® Fale. Em voz alta.Falando, você ativa uma parte diferente docérebro. Se você estiver tentando entender

algo ou aumentar sua chance de recordarmais tarde, leia em voz alta. Melhor ainda,tente explicar isto para outra pessoa em vozalta. Você aprenderá mais rápido e talvezobserve idéias que você não havia percebidoque estavam ali enquanto lia.

Q) Ouça seu cérebro.Observe se o seu cérebro não está ficando

sobrecarregado. Se você se pegar passandoa mão na superficie do livro ou esquecendoo que acabara de ler, é hora de umapausa. Uma vez que você ultrapasse umdeterminado ponto, você não aprenderá maisrápido se tentar "enfiar" mais informaçãona cabeça e poderá até comprometer oprocesso.

® Sinta algo!Seu cérebro precisa saber que isto éimportante. Envolva-se com as histórias.Crie suas próprias legendas para as fotos.Dar um sorriso amarelo quando uma piadanão tem graça ainda é melhor do que nãoesboçar reação.

® Faça o Teste Preparatório Final só DEPOISde acabar o livro.

Se você fizer o teste muito cedo, você nãoterá uma idéia clara da sua preparação parao exame. Espere até sentir que você estáquase pronto e então faça o teste em, nomáximo, 135 minutos - o tempo verdadeirodoSCWCD.

você está ••XXV

Page 25: JSP.SERVLET0001

Use a Cabeça JSP

o que você precisa para este livro:Além do seu cérebro e um lápis, você precisa do Java, do Tomcat 5 e deum computador.Você não precisa de nenhuma outra ferramenta de desenvolvimento como oIntegrated Development Environment (IDE). Definitivamente, recomendamosque você não use nada além de um editor simples até terminar o livro. UmIDE que reconhece servlet e JSP poderá privá-l o de algum detalhe realmenteimportante (e que cairá na prova). Por isso, é melhor você evitar desenvolvertodo o bean manualmente. Uma vez que você realmente entenda o que estáacontecendo, poderá utilizar uma ferramenta que automatize alguns dospassos para a criação e distribuição do servlet/JSP. Se você já sabe como usaro Ant, poderá usá-lo após o capítulo 3 para ajudar na distribuição. Porém, nãorecomendamos usar o Ant até que você tenha memorizado completamente aestrutura de distribuição da aplicação web.

OBTENDO O TOMCAT --------,

Caso ainda não possua o Java SE v1.5 ou superior, você vaiprecisar (de preferência 1.4).

Se você não tem ainda o Tomcat 5, obtenha-o em:http://tomcat.apache.org/

Selecione "Tomcat v5.5" no menu Downloads no lado esquerdoda home page.

• Pagine até a seção "Binary Distributions" (Distribuições Binárias)e faça o download da versão escolhida. Se não souber, então,selecione a distribuição "Core" (Básico); é tudo que você precisa.

Salve o arquivo de instalação em uma pasta temporária.

Instale o Tomcat.Para Windows, dê um duplo-clique no arquivo install.exe e sigaas instruções do assistente de instalação.Para os outros sistemas, descompacte o arquivo de instalaçãono diretório onde você quer que o Tomcat resida.

Para facilitar as instruções do livro, renomeie para "tomcat" odiretório home do Tomcat (ou configure um cognome "tomcat"que aponte para o home verdadeiro do Tomcat).

Configure as variáveis de ambiente para JAVA_HOME eTOMCAT HOME, da mesma forma como você normalmentefaz em sua máquina.

Você deve ter uma cópia das especificações, embora nãoprecise delas para passar no exame. Até o lançamento destelivro, as especificações eram:Servlet 2.4 (JSR #154) http://jcp.org/eng/jsr/detail?id=154JSP 2.0 (JSR #152) http://jcp.org/eng/jsr/detail?id=152JSTL 1.1 (JSR #52) http://jcp.org/eng/jsr/detail?id=52Vá até a página JSR e clique em Download Page para olançamento mais recente.

Teste o Tomcat rodando o script tomcat/bin/startup (startup.sh para os sistemas Linux/Unix/OSX). Digite na barra deendereços do seu browser:http://localhost:8080/ e você verá a página inicial do Tomcat.

XXVI

.~ ...

Java 2 Standard Edition 1.5Tomcat 5

O exame abrange asseguintes especificações:

• Servlets 2.4

·JSP 2.0

• JSTL 1.1

Page 26: JSP.SERVLET0001

Coisas de última hora que você precisa saber:Isto é uma experiência de aprendizado e não um livro dereferência. Nós retiramos deliberadamente tudo que pudesseatrapalhar o caminho do aprendizado, independentemente doque estejamos trabalhando no livro. E, desde o primeiro instante,comece do começo, pois o livro faz considerações quanto àquiloque já foi visto e aprendido.

Nós usamos diagramas simples e parecidos com UML.Embora exista uma grande chance de você já saber UML, isto nãoé cobrado no exame e não é um pré-requisito para o livro. Então,você não terá que se preocupar em aprender servlets, JSP, JSTL eUML ao mesmo tempo.

Nós não cobrimos todos os detalhes minuciosos da especificação.O exame é muito detalhado, mas, nós também somos. Porém, seexiste um detalhe na especificação que não é cobrado no exame, sóo citaremos se for importante para a maioria dos desenvolvedores decomponentes. O que você precisa saber para começar a desenvolvercomponentes web (servlets e JSPs), e o que precisa para passar noexame, cobre cerca de 85%. Nós incluímos algumas coisas que nãocaem na prova, mas sinalizamos para que você não se preocupe emmemorizá-Ias. Nós criamos o verdadeiro exame, portanto, sabemosonde você deverá concentrar sua energia! Se houver a possibilidadede um mínimo detalhe figurar em uma questão da prova, mas se oesforço para aprendê-Io realmente não valha a pena, provavelmenteou o omitiremos, ou o abordaremos sucintamente, ou o colocaremosem uma questão do teste preparatório.

As atividades NÃO são opcionais.Os exercícios e as atividades não são meros adicionais; eles sãoparte do conteúdo principal do livro. Alguns estão lá para ajudar namemorização, outros para ajudar na compreensão, enquanto outroso ajudarão a aplicar o que você aprendeu. Não pule nada.

A redundância é intencional e importante.Uma coisa que é claramente diferente em um livro da série Use aCabeça! é que nós queremos muito, muito, muíto que você entenda.E gostaríamos que você terminasse o livro lembrando o queaprendeu. A maioria das informações e dos livros de referências nãotem, necessariamente, a retenção e a lembrança como objetivos, masaqui você verá alguns conceitos aparecerem mais de uma vez.

Os códigos-exemplos são os mais resumidos possíveis.Nossos leitores têm relatado o quanto é frustrante lerminuciosamente 200 linhas de códigos procurando por aquelasduas linhas que eles precisam. A maioria dos exemplos deste livroé exibida dentro dos menores contextos possíveis, para que a parteque você precisa fique clara e simples. Não espere que o códigoseja robusto ou completo. Esta é sua tarefa para quando terminar olivro. Os exemplos aqui são escritos especialmente para aprender enem sempre são totalmente funcionais. Alguns exemplos de códigopara o livro estão disponíveis em www.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

Page 27: JSP.SERVLET0001

fazendo a prova

Sobre o exame SCWCD (para Java EE 1.5)

o exame SCWCD atualizado é chamado de "Sun Certified Web Component Developerfor Java Platform, Enterprise Edition 5" (CX-310-083), mas não fique confuso com otítulo. O exame atualizado ainda é designado para o Java EE vIA, para o servlet v2A eas especificações JSP v2.0.

Primeiro tenho que passar no SCJP?

Sim. O exame Web Component Developer, exame Business Component Developer,exame Mobile Application Developer, exame Web Services Developer e exame

Developer requerem que você seja um Sun Certified Java Programmer.

Quantas questões?

Você terá 69 questões quando fizer o exame. Ninguém têem as mesmas 69 questões; existemmuitas versões diferentes do exame. Mas todas têm o mesmo grau de dificuldade e o mesmoequilíbrio de tópicos. No exame real, espere ver pelo menos uma questão do objetivo de

cada exame e existem alguns objetivos nos quais você terá mais de uma questão.

Quanto tempo tenho para completar o exame?

Você tem três horas (180 minutos). A maioria das pessoas não acha que isso é um problema,pois essas questões não são longas, complicadas, complexas. A maioria das questões é

muito curta, tem múltipla escolha e você sabe a resposta ou não.

Como são as questões7

Elas são quase exatamente como as nossas perguntas simuladas do exame, com umagrande diferença - o exame real informa-o quantas respostas estão corretas, nós não.Contudo, você verá algumas perguntas do tipo arrastar e soltar que não podemos fazeraqui. Mas as questões com arrastar e soltar são apenas o modo interativo de coincidiruma coisa com outra.

Quantas tenho que responder corretamente?

Você deve ter 49 questões corretas (70%) para passar no exame. Quando terminarde responder a todas as questões, mantenha o cursor do mouse sobre o botão Done(Terminado) até que tenha coragem de clicá-Io. Em cerca de seis nanossegundos, você

saberá se passou (claro, você passará).

Por que os exames simulados no livro não informam quantas opções escolher para aresposta correta?

Queremos que nossos exames sejam apenas um pouco mais difíceis que o exame real,para lhe dar uma idéia mais verdadeira para saber se você está pronto para fazer oexame. As pessoas tendem a ter notas mais altas nos exames simulados do livro porquerefazem o mesmo teste mais de uma vez e não queremos que você tenha uma falsasensação de sua aptidão para o exame. Os leitores têm informado que a pontuaçãoconsegui da no exame real é muito próxima da pontuação que eles têm no examesimulado final neste livro.

XXVIII introdução

Page 28: JSP.SERVLET0001

o que acontece depois de fazer o exame?

Antes de deixar o centro de teste, obtenha o relatório de seu exame. Ele mostra umresumo de sua pontuação em cada área maior e se passou ou falhou. Guarde-o! É suaprova inicial de que você foi certificado. Em poucas semanas depois do teste, vocêreceberá um pequeno pacote da Sun Educational Services que inclui seu certificadoimpresso real, uma carta de felicitação da Sun e um adorável alfinete de lapelainformando Sun Certified Web Component Developer em uma fonte tão pequena quevocê poderia declarar ser certificado em qualquer coisa que quisesse e ninguém poderialer para saber a diferença. Não inclui a bebida alcoólica que você estará querendo depois

de passar no exame.

Quanto custa e como me registro?

O exame custa US$200. E é por isso que você precisa deste livro ... para assegurarque passará na primeira vez. Você registra-se através do Sun Educational Services,fornecendo o número de seu cartão de crédito. Em troca, receberá um número de

voucher, que usará para agendar um encontro em um Prometric Testing Center maispróximo de você.Para obter detalhes on-line e comprar um voucher do exame, comece em:bttp://www.sun.com/training/certificationi. Se estiver nos Estados Unidos, estará marcado. Se não, poderá

selecionar um país na barra de menus à direita.

Como é o software do exame?

É bem simples de usar - você tem uma questão e responde-a. Se não quiser responder,poderá pulá-Ia e voltar para ela mais tarde. Se a responder, mas não estiver certo equiser voltar para ela se tiver mais tempo, poderá "marcar" uma questão. Assim quetiver terminado, verá uma tela que mostra todas as questões que você não respondeu oumarcou, para que possa voltar para elas.Bem no início do exame, você obterá um pequeno tutorial sobre como usar o software,onde conseguir um pequeno teste prático (não sobre Servlets). O tempo gasto no tutorialnão conta como o tempo gasto no exame SCWCD. O relógio não iniciará até que você

tenha terminado o tutorial do software de exame e estiver pronto para começar.

Onde posso encontrarum grupo de estudo e quanto tempo levará para me preparar?

O melhor grupo de análise on-line para este exame é aquele que os autorespresidem! (Deus, quais são as probabilidades?) Pare em j avaranch. com e vá para BigMoose Saloon (é onde estão todos os fóruns de discussão). Você não pode perder.Sempre haverá alguém para responder suas perguntas, inclusive nós. JavaRanch éa comunidade Java mais amistosa na Internet, portanto, você será bem-vindo nãoimportando o nível em que estiver no Java. Se você ainda precisar ter o SCJP, iremosajudá-Io com ele também.Quanto tempo leva para ficar pronto para o exame depende muito de quantos servletse experiência JSP você tem. Se você for novo. nos servlets e no JSP, poderá precisar de6 a 12 semanas, dependendo de quanto tempo pode dedicar a cada dia. Aqueles commuitos servlets recentes e experiência JPS geralmente poderão estar prontos em atétrês semanas.

você está ~ XXIX

Page 29: JSP.SERVLET0001

a equipe de revisores

Beta testers & Revisores Té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 •.•u de

~a,beld$!JT'rt.b'Jc'(';s f>4!JJ'"

Céwsa desh Itvrcó,

-I

de: J""'5 ---.----/

A"drew 1Lf.""k/,{Jtlse

(~fl.ee,l-ish lA.adafta

Page 30: JSP.SERVLET0001

J.tU' ct'~J.t.f<}

Outras pessoas a quem ~:

Na O'Reilly:

Nossos maiores agradecimentos a Mike Loukides na O'Reilly,por iniciar tudo e ajudar a dar forma ao conceito Use a Cabeça emuma série. Adoramos ter um editor que é um Verdadeiro Java. E umgrande agradecimento à força motriz por trás do Use a Cabeça, TimO'Reilly. Felizmente para nós, ele sempre está pensando no futuroe gosta de ser uma influência destruidora. Obrigado a Kyle Hard "amamãe da série" Use a Cabeça inteligente por descobrir como o Use

a Cabeça encaixa-se no resto dos livros de computador.

Nossos revisores intrépidos:

Tudo bem, então, o livro levou um pouco mais de tempo do quetínhamos planejado. Mas sem o gerente de revisão JavaRanchJohannes deJong, ele teria ficado assustadoramente atrasado. Vocêé nosso herói, Johannes. E nossos agradecimentos especiais a JoeKonior cujo feedback em cada capítulo foi quase do mesmo tamanhodo capítulo. Estamos profundamente agradecidos pelo esforçoinexorável e experiência (e alegria) de Philippe Macquet. Todosos três autores adoram-no tanto que queremos casar com ele ... masisso seria estranho. E estamos muito gratos a Andrew Monkhousepelo feedback técnico e ajuda nas traduções sutis do inglês para alíngua australiana. Jef Cumps, sua interpretação MP3 da canção"setHeader" foi impressionante (exceto talvez por ser um pouco emo)e seus comentários técnicos foram realmente úteis.

Dave Wood trabalhou com afinco em tudo e foi carinhoso ao apontarpara as primeiras páginas e dizer: "Isso não é o estilo Use a Cabeça".Também tivemos um feedback excelente dos moderadores JavaRanch

Jason Menard, Dirk "cara de peixe" Shreckmann, Rob Ross,Ernest Freidman-Hill e Thomas Paul. E como sempre, agradeço

especialmente ao chefe javaranch.com, Paul Wheaton.

Agradecimentos especiais aos seguintes revisores técnicos pelasegunda edição: Bear Bibeault, Theodore Casser, UlfDittmer,Preetish Madalia, Sergio Ramirez, Oliver RoeU, Neeraj Singhal eCollins Tchoumba.

Perguntas do examine simuladoSe você se encontrar balançando a cabeça em uma questão simuladaJSP particularmente capciosa, não nos culpe - culpe Marc Peabody!Obrigado Marc por ajudar a manter todos os candidatos SCWCDem alerta. Marc passa uma quantidade enorme de seu tempo livremoderando no JavaRanch, onde é conhecido por estimular osusuários Ranch a construir misturas horríveis de suas tecnologias JavaEE inocentes.

introdução

você está ~ XXXI

Page 31: JSP.SERVLET0001

mais reconhecimentos

Tem mais gente ainda*

Por Bryan Basham

Eu poderia começar agradecendo à minha mãe, mas isso já foi feito antes ... Meu conhecimento emdesenvolvimento web com Java tem como base algumas aplicações de média escala que escrevi, masesta base foi melhorada e refinada por anos de debate em Java como instrutor da Sun, usando um e-mailcom um nome fictício. Em particular, gostaria de agradecer a Steve Stelting, Victor Peters, Lisa Morris,Jean Tordella, Michael Judd, Evan Troyka e Keith Ratliff. Muitas pessoas ajudaram a lapidar meuconhecimento, mas estes seis foram as facas que melhor me esculpiram.

Como em todos os projetos de livro, os últimos três meses foram muito dificeis. Gostaria de agradecer à minhanoiva, Kathy Collina, por ter sido paciente comigo. Eu quero agradecer a Karma e Kiwi (nossos gatos) pelassessões de lambidas tarde da noite e as pancadas no teclado.

Por último, e mais importante, tenho que agradecer à Kathy e ao Bert por sugerirem que levássemosadiante o projeto. Kathy Sierra é mesmo única no mundo. Seu conhecimento em metacognição e designeducacional só se comparam à sua essência criativa que transborda nos livros desta série. Eu tenhotrabalhado com educação há cinco anos e praticamente tudo o que aprendi foi com a Kathy ... Oh, nãose preocupe com minha mãe; ela receberá uma grande dedicatória em meu próximo Use a Cabeça!. Eute amo, mãe!

Por Kathy e Bert

Isso foi tão sentimental, Bryan, ohhhh ... (Não que a Kathy não goste de rasgar uma seda). Mas, concordamosquando fala sobre sua noiva. Mas não por ela ter sentindo saudades suas, enquanto jogava Ultimate o verão todoe nós trabalhávamos feito cachorro em nossos Powerbooks 1. Mas você realmente fez disso uma experiênciarecompensadora, Bryan, e hoje é o melhor(NA) co-autor que já tivemos! Chega quase a assustar o quantovocê é calmo e feliz o tempo todo.

Todos nós adoramos a equipe que trabalha duro nos exames de certificação da Sun, em especial a Gerentede Certificação em Java, Evelyn Cartagena. Queremos agradecer também a todos os colegas que ajudaram adesenvolver as especificações dos JSRs para Servlet e JSP.

* o grande número de agradecimentos é porque estamos testando uma teoriade que todos os mencionados na seção de agradecimentos do livro comprarãopelo 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 tiveruma 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