3775815 dominando java server faces e facelets utilizando spring 2 5 hibernate e jpa

Upload: mauro-matias-pies

Post on 11-Jul-2015

184 views

Category:

Documents


1 download

TRANSCRIPT

EDSON GONALVES

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

AGRADECIMENTOSPrimeiramente quero agradecer minha famlia, pelo apoio e compreenso da minha ausncia, que de certa forma tornou-se uma rotina. Agradeo o apoio da Editora Cincia Moderna, em especial ao editor Paulo Andr P Marques, pelo incentivo e crdito em mais este livro. . Um agradecimento especial a todos aqueles que me ajudaram na concluso desta obra, opinando, lendo e criticando certos pontos para uma melhor elaborao dos textos. Embora no parea, demoraria mais que os sete meses necessrios a sua concluso.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

INTRODUOTrabalhar em aplicaes Web utilizando tecnologia Java no uma tarefa fcil. Entretanto, ao redor do mundo, muitos desenvolvedores j criaram diversas bibliotecas que auxiliam nessa tarefa, gerando o que chamamos de frameworks. No geral, um framework um conjunto de bibliotecas com prticas gerais encapsuladas que, juntas, criam uma forma mais simples de desenvolver alguma tarefa. Dentre os diversos frameworks existentes para a criao de aplicaes Web, temos o JavaServer Faces. JavaServer Faces o framework oficial da especificao Java EE e desenhado para o desenvolvimento de aplicaes Web baseado em componentes (component based). Na prtica, desenvolver com esse framework torna fcil o trabalho na construo de aplicaes atravs de componentes de interface com o usurio (GUI), e sua capacidade de conectar esses componentes a objetos de negcios relativamente fcil. Este livro, embora pequeno, foi elaborado pensando no desenvolvedor iniciante em JavaServer Faces, que deseja aprender a integrar suas aplicaes com tecnologias conhecidas, como o Spring Framework, Hibernate e JPA, usando um exemplo completo, embora pequeno, de um site fictcio de comrcio eletrnico.

QUEM DEVE LER ESTE LIVRO?Este livro foi escrito para desenvolvedores com experincia em desenvolvimento Web utilizando a linguagem Java, mas que no possuem muito conhecimento sobre o framework JavaServer Faces. Alm disso, embora sejam apresentados os conceitos fundamentais sobre as ferramentas de desenvolvimento aplicadas no decorrer do livro, muito importante que o usurio j tenha tido um contato inicial com as mesmas. desejvel tambm um conhecimento sobre o acesso e utilizao de um banco de dados.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

VI

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6

ANTES DE COMEAREm algumas partes deste livro, voc encontrar um smbolo que o ajudar a entender o cdigo proposto e desenvolvido, mostrado a seguir: ... - Indica que acima ou abaixo contm cdigo, mas que no est sendo exibido por no ter sido alterado ou por ser importaes, e o mesmo pode ser acessado pelo CD-ROM, anexo ao livro.

OS SOFTWARES REQUERIDOSOs aplicativos criados neste livro no exigem software proprietrio. Portanto, ao longo dos captulos, voc no s aprender como us-los, mas tambm onde encontr-los na Internet, caso precise de uma atualizao. Esse livro no est focado especialmente em um sistema operacional, j que a linguagem Java multiplataforma.

HARDWARE REQUERIDOUma boa configurao de hardware se faz necessria para trabalhar com aplicaes escritas em Java. Um computador para rodar bem o Eclipse IDE ou NetBeans IDE deve ter as seguintes configuraes para uma confortvel utilizao, segundo o autor:

Processador: Pentium 4 ou similar (recomendo um Dual Core ou Core 2 Duo) Memria: 1 GB de RAM mnimo (recomendo 2GB de RAM) HD: 10GB de espao livre Monitor: 17 polegadas ou superior

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

INTRODUO

VII

CDIGOS DOS EXEMPLOS CRIADOS NO LIVROTodos os cdigos dos exemplos criados no livro, bem como as IDEs e outros, se encontram no CD-ROM anexo. Caso no encontre algum exemplo, entre em contato com o autor pelo site http:// www.integrator.com.br.

VISO GERAL DOS CAPTULOSCom um contedo completamente ilustrado, o livro possui diversas imagens espalhadas por todos os captulos, sempre focando em detalhes quando necessrio. Ao longo do livro, so dadas dicas para uma melhor compreenso do que est sendo feito, sempre com informaes tcnicas. Para uma melhor compreenso, aqui voc tem uma sinopse dos captulos encontrados no decorrer do livro.

PARTE 1 AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETSComposta por trs captulos, essa parte introduz o iniciante nos ambientes de trabalho envolvidos no decorrer do livro. Alm de possuir informaes de teor prtico e tcnico para o incio com o desenvolvimento com JavaServer Faces e Facelets, ser mostrado onde encontrar e como instalar e configurar o Eclipse IDE ou NetBeans IDE, incluindo plug-ins.

PARTE 2 DESENVOLVENDO O SITE E-COMMERCEComposta por oito captulos, essa parte trabalha do incio ao fim com o desenvolvimento da aplicao foco do livro. Em seu longo, diversos tpicos sero abordados, entre eles: A configurao da JPA em conjunto com o Hibernate; Como mapear as entidades que sero utilizadas; A integrao com o Spring Framework e suas anotaes;

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

VIII

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6

Gerao de DAOs genricos para minimizar a quantidade de cdigos no desenvolvimento; Criao de testes unitrios com JUnit em conjunto com o Spring Framework e anotaes; Segurana na aplicao com Filtros Servlet e JSF PhaseListener; A utilizao de plug-ins Eclipse como JBoss Tools, Hibernate Tools, Projeto Dali JPA Tools e Spring IDE; O trabalho com Hibernate e Spring Framework atravs do NetBeans IDE; O envio de e-mails utilizando os recursos do Spring Framework; O desenvolvimento de um relatrio JasperReports com iReport utilizando objetos;

ATENO: Em caso de erro, recomendo a visualizao dos exemplos contidos no CD-ROM anexo ao livro, antes de entrar em contato com o autor.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

SUMRIOPARTE 1 - AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETS ...............................................1 Captulo 1 - Preparando seu ambiente de trabalho ...................................................3 O Eclipse IDE .....................................................................................................3 Obtendo e instalando o Eclipse IDE .............................................................4 O plug-in JBoss Tools ....................................................................................4 Iniciando na plataforma Eclipse ....................................................................5 O plug-in Spring IDE ....................................................................................6 O NetBeans IDE .................................................................................................8 Obtendo e instalando o NetBeans IDE .........................................................8 Resumo ..............................................................................................................9 Captulo 2 - O JavaServer Faces..............................................................................11 Baixando o JavaServer Faces .............................................................................11 As bibliotecas do JavaServer Faces ....................................................................12 JavaServer Faces no NetBeans IDE ....................................................................13 JavaServer Faces no Eclipse IDE ........................................................................15 As bibliotecas JavaServer Faces no projeto do NetBeans IDE .......................18 Adicionando o JavaServer Faces ao projeto no Eclipse IDE ..........................19 Um primeiro contato com JavaServer Faces ......................................................23 Alterando os projetos das ferramentas.........................................................27 Distribuindo sua aplicao em um arquivo WAR ..............................................39 Como subir sua aplicao no servidor .........................................................39 Conhecendo melhor o JavaServer Faces ...........................................................40 As tags padres de JavaServer Faces..................................................................42 JSF Tags HTML ...........................................................................................43 JSF Tags Core .............................................................................................46 Ciclo de Vida do JSF .........................................................................................48 Resumo ............................................................................................................51 Captulo 3 - Facelets...............................................................................................53 Como o Facelets trabalha? ................................................................................53 Onde baixar o Facelets .....................................................................................54 Desenvolvendo com Facelets ...........................................................................55 O plug-in com suporte a Facelets no NetBeans IDE ....................................55 Criando um projeto simples com Facelets ...................................................55 A API do Facelets ........................................................................................71

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

X

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6

Segurana no acesso aos arquivos .xhtml ....................................................72 Resumo ............................................................................................................75 PARTE 2 - DESENVOLVENDO O SITE E-COMMERCE ....................................................................77 Captulo 4 - JPA com Hibernate .............................................................................79 O modelo de dados .........................................................................................79 MySQL e o JDBC........................................................................................80 O comando CREATE...................................................................................84 O comando USE .......................................................................................85 Criando tabelas ..........................................................................................85 O comando SHOW....................................................................................86 Configurando usurios ................................................................................86 Confirmando o novo usurio ......................................................................87 No CD-ROM ..............................................................................................87 Baixando o driver JDBC ..............................................................................88 O Hibernate.....................................................................................................88 Baixando o Hibernate.................................................................................88 O Hibernate no CD-ROM ..........................................................................89 Modelando a aplicao ....................................................................................89 Criando o projeto .......................................................................................89 Adicionando as bibliotecas do Hibernate ao projeto ...................................90 Adicionando a biblioteca JDBC ao projeto do Eclipse IDE ...........................92 Criando as entidades persistentes ...............................................................93 O conceito da API de persistncia ............................................................101 Java Annotations, o que isso? .................................................................102 A API de persistncia ................................................................................103 Entendendo os arquivos criados................................................................104 O relacionamento ....................................................................................105 O arquivo persistence.xml ........................................................................108 Modelando a aplicao com ferramentas automatizadas ................................114 Criando entidades com Hibernate Tools .........................................................114 Criando entidades com Dali JPA Tools ............................................................121 Criando entidades com o NetBeans IDE .........................................................127 Os detalhes ....................................................................................................130 Resumo ..........................................................................................................130

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

SUMRIO

XI

Captulo 5 - O Spring com a JPA e Testes unitrios................................................131 O Spring ........................................................................................................132 Onde baixar a ltima verso .....................................................................132 Adicionando o suporte ao Spring Framework em seu projeto ....................133 Criando o DAO genrico................................................................................135 O Spring atuando no DAO .......................................................................141 A simplicidade para estender a outros DAOs ...........................................144 Configurando o Spring atravs de applicationContext.xml .........................145 Criando testes unitrios ............................................................................151 O Log4j ....................................................................................................161 Pronto para a prxima etapa ..........................................................................165 Resumo ..........................................................................................................165 Captulo 6 - A rea administrativa Parte 1 ..........................................................167 Criando o projeto Web ..................................................................................167 Adicionando a biblioteca do Apache Trinidad ...........................................168 Adicionando as bibliotecas para upload de arquivos .................................169 Adicionando as bibliotecas e o projeto com os DAOs ...............................170 Configurando o Apache MyFaces Trinidad no projeto ...............................172 Configurando o Spring Framework............................................................177 A classe bean de controle de categorias ....................................................182 A classe bean de produtos ........................................................................187 Criando a pgina modelo da rea administrativa .......................................198 Criando as pginas para as Categorias .......................................................202 Criando as pginas para os Produtos .........................................................207 Resumo ..........................................................................................................214 Captulo 7 - As pginas do lado cliente .................................................................215 Criando o bean de controle da loja ................................................................215 Adicionando a classe no Managed Bean ...................................................221 O template das pginas ............................................................................221 A pgina principal do site .........................................................................229 O que EL?..............................................................................................234 A pgina detalhes do produto ...................................................................237 A pgina de resultados da pesquisa ...........................................................240 A pgina de produtos da categoria ............................................................243 Resumo ..........................................................................................................246

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

XII

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6

Captulo 8 - O carrinho de compras .....................................................................247 Os beans para o carrinho ...............................................................................248 Controlando o carrinho ............................................................................253 A pgina do carrinho ................................................................................258 Configurando o Managed Bean e a navegao..........................................264 Resumo ..........................................................................................................266 Captulo 9 - Finalizando a compra........................................................................267 Controlando a entrada do usurio ..................................................................267 Configurando a classe ..............................................................................278 Criando as pginas ...................................................................................278 Criando a navegao ...............................................................................291 Criando o Filtro ........................................................................................292 Registrando o Filtro no Deployment Descriptor.........................................294 Criando o Filtro pelo NetBeans .................................................................295 Validando a entrada de dados ..................................................................295 Validando a entrada do nmero do carto ................................................295 Configurando o validador .........................................................................298 Aplicando o validador...............................................................................299 Validando pelo Bean ................................................................................300 Resumo ..........................................................................................................302 Captulo 10 - Enviando e-mail pelo site ................................................................303 Configurando o projeto para envio de e-mail............................................303 Criando o bean para enviar o e-mail de contato .......................................305 Configurando o bean ContatoController ...................................................309 Criando o contato no site .........................................................................310 A navegao das pginas do contato .........................................................313 Criando um e-mail de confirmao ao pedido efetuado ...........................314 Resumo ..........................................................................................................316 Captulo 11 - A rea administrativa Parte 2 ........................................................317 Criando a consulta....................................................................................317 A pgina que trabalhar com a consulta....................................................320 Paginao de resultados ............................................................................324 Paginando os resultados ............................................................................329 Criando a navegao para a pgina ..........................................................333 Adicionando um relatrio...............................................................................334 O iReport .................................................................................................335

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

SUMRIO

XIII

Criando o relatrio ...................................................................................336 Chamando o relatrio atravs da aplicao ...............................................347 As bibliotecas do JasperReports.................................................................353 Trabalhando com PhaseListener para o login administrativo ......................354 Resumo ..........................................................................................................366 Bibliografia ...........................................................................................................367 Livros Nacionais .............................................................................................367 Livros Internacionais .......................................................................................367 Sites..... ..........................................................................................................368 Acesso para pesquisa ......................................................................................368 Tutoriais .........................................................................................................368 Apndice A: Pool de Conexes ............................................................. CD-ROM Apndice B: O MySQL.......................................................................... CD-ROM Apndice C: Suporte a Facelets no NetBeans ........................................ CD-ROM

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

PARTE 1AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETSVisite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 1 PREPARANDO SEU AMBIENTEDE TRABALHOO trabalho com desenvolvimento Web em Java penoso sem um bom ambiente de desenvolvimento. Entretanto, h duas ferramentas muito conhecidas no desenvolvimento Java que sero abordadas para a utilizao ao longo do livro: Eclipse IDE com plug-ins e NetBeans IDE. Este captulo est baseado na instalao e configurao de ambos os ambientes.

O ECLIPSE IDEO Eclipse IDE, chamado por muitos de Plataforma Eclipse, considerada por uma grande maioria de desenvolvedores Java como a melhor ferramenta para desenvolvimento dessa linguagem. Desenvolvido inicialmente pela IBM e liberado o cdigo fonte para a comunidade, criando a fundao Eclipse (Eclipse Foundation), sua grande vantagem, na atualidade, est no uso de seus assistentes de cdigo e grande gama de plug-ins, podendo se adaptar a qualquer situao de desenvolvimento. At o momento em que esse livro est sendo escrito, a verso atual e estvel do Eclipse a 3.3.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

8

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

O NETBEANS IDEO NetBeans IDE uma ferramenta criada em Java Swing e com vrias opes em pacotes para que voc baixe a verso que melhor se encaixa em seu trabalho; cada uma contm mdulos de instalao diferentes para cada necessidade do desenvolvedor.

OBTENDO E INSTALANDO O NETBEANS IDEO site oficial do NetBeans IDE se encontra no endereo http://www.netbeans. org. Assim que voc entra no site oficial do NetBeans, h um grande boto escrito Download NetBeans IDE. Dando um clique nesse boto, voc ir at a pgina de downloads da IDE. Enquanto este livro escrito, o NetBeans IDE se encontra na verso 6.0 como estvel e 6.1 como desenvolvimento. Para o livro, ser adotada a verso 6.1.

FIGURA 1.7 DOWNLOAD DO PACOTE NECESSRIO PARA O DESENVOLVIMENTO COM APLICAES WEB

A instalao do NetBeans IDE tranqila, quando utilizamos assistente, tanto no sistema operacional Windows como em Linux, basta executar o arquivo baixado. No Linux, apenas d a permisso necessria para que seja possvel a execuo do arquivo binrio: shell# chmod +x netbeans-6.1rc1-javaee-linux.sh

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 2 O JAVASERVER FACESJavaServer Faces o framework de aplicaes Web Java oficial da Sun Microsystems. Esse framework foi desenhado para simplificar o desenvolvimento de aplicaes Web, atravs do conceito baseado em componentes (component based). Na prtica, a autilizao de JavaServer Faces torna fcil o desenvolvimento atravs de componentes de interface de usurio (GUI), possibilitando a conexo desses componentes a objetos de negcios de forma simplificada. Neste captulo, voc aprender a criar e configurar um projeto utilizando JavaServer Faces, alm de compreender o bsico necessrio trabalhar com o framework.

BAIXANDO O JAVASERVER FACESPara trabalhar com o JavaServer Faces, primeiramente ser preciso configurar os arquivos e a estrutura necessria. O continer Servlet usado para este livro ser o Tomcat 6 que, por padro, no possui suporte direto ao JavaServer Faces, ou seja, no contm as bibliotecas necessrias para o desenvolvimento com o mesmo. Para baixar o JSF, faa download no endereo http://java.sun.com/j2ee/javaserverfaces/download.html. Como voc ir trabalhar com JavaServer Faces voltado para um continer compatvel com a tecnologia Java EE 5, voc dever baixar a verso JSF 1.2, a utilizada nesse livro. Ao baixar o arquivo, simplesmente descompacte em um diretrio de sua escolha.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

O JAVASERVER FACES

13

Para torn-los disponveis em sua aplicao simples: basta colocar esses arquivos listados no diretrio lib, encontrado em WEB-INF de sua aplicao Web. Porm, como vamos utilizar um ambiente de trabalho baseado em IDE, ser mais fcil essa configurao.

JAVASERVER FACES NO NETBEANS IDEO NetBeans IDE j possui configurado por padro as bibliotecas necessrias para desenvolver uma aplicao JavaServer Faces. Para criar um projeto com JavaServer Faces, v ao menu File e clique no item New Project. Na caixa de dilogo New Project selecione o item Web em Categories e Web Application em Projects. Clique no boto Next. Na segunda etapa voc define o nome do projeto, em Project Name e a localizao, em Project Location. Digite TrabComJSF e clique no boto Next.

FIGURA 2.1 NOME DO PROJETO E LOCAL

Na terceira etapa voc seleciona o Apache Tomcat em Server. Clique no boto Next.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

14

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

FIGURA 2.2 SELEO DO SERVLET CONTAINER APACHE TOMCAT 6.0.16

A ltima etapa onde voc escolhe o framework JavaServer Faces. Em Servlet URL Mapping digite *.jsf e clique no boto Finish para concluir.

FIGURA 2.3 SELEO DO FRAMEWORK JAVASERVER FACES E CONFIGURAO INICIAL

O NetBeans IDE abrir automaticamente uma pgina em JSF criada pelo assistente atravs do template existente.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

O JAVASERVER FACES

15

JAVASERVER FACES NO ECLIPSE IDEO Eclipse IDE possui mais opes de criao de pginas com o framework JavaServer Faces devido a utilizao do plug-in JBoss Tools. V ao menu File em New e selecione Project. Na caixa de dilogo New Project expanda JBoss Tools Web > JSF e selecione JSF Project. Clique no boto Next para prosseguir.

FIGURA 2.4 SELEO DE JSF PROJECT DO PLUG-IN JBOSS TOOLS

Na prxima etapa digite TrabComJSF no campo Project Name, selecione JSF 1.2 em JSF Environment e altere para o item JSFKickStartWithoutLibs em Template (isso far com que o projeto possua de incio algumas pginas em JSF). Clique no boto Next para prosseguir.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

16

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

FIGURA 2.5 DETERMINANDO O NOME, VERSO E TEMPLATE DO PROJETO JSF

Na terceira etapa ser necessrio adicionar um servidor ao Eclipse IDE. Clique no boto New, em Runtime. Na caixa de dilogo New Server Runtime expanda Apache e selecione Apache Tomcat v6.0. Clique no boto Next para prosseguir.

FIGURA 2.6 SELEO DO APACHE TOMCAT 6

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

O JAVASERVER FACES

23

FIGURA 2.16 CONFIRMAO DO JAR DE DEPENDNCIA DO PROJETO

UM PRIMEIRO CONTATO COM JAVASERVER FACESSe voc no tem base de conhecimento no JavaServer Faces, aqui ser a sua linha de partida. O projeto JavaServer Faces de ambas as ferramentas, Eclipse e NetBeans, j contm funcionalidades e essas podem ser testadas imediatamente. Porm, vamos estud-los atravs de alteraes especficas para que voc compreenda o que est acontecendo.

AS PGINAS INICIAIS DOS PROJETOSO JavaServer Faces no iniciado imediatamente pelo continer Servlet, como o Tomcat, o que significa que precisamos de uma pgina inicial que redirecione para a pgina JSF. esse o papel da pgina index.jsp, no projeto criado pelo Eclipse IDE e forwardToJSF.jsp, criada no projeto do NetBeans IDE. Essas pginas so encontradas na view Package e na janela Projects do Eclipse e NetBeans respectivamente.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

24

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Em ambas as situaes, voc tem a tag JSP e a pgina para a qual ir direcionar no atributo page. Na configurao de ambas as pginas a serem redirecionadas, nos projetos das respectivas IDEs, a extenso .jsf ser utilizada nas pginas JSF dos projetos (configurada pelo web.xml).

FIGURA 2.17 O PROJETO JSF NO ECLIPSE IDE E NO NETBEANS IDE

O DIRETRIO WEB-INFNo diretrio WEB-INF voc encontra o arquivo web.xml (deployment descriptor) padro, com a adio da configurao JSF e outro arquivo, chamado de facesconfig.xml. No NetBeans, voc tambm pode acessar esses arquivos atravs do diretrio Configuration Files. Em ambas as ferramentas, a edio dos arquivos podem ser tanto visuais como pelo XML.

LISTAGEM 2.1 O ARQUIVO WEB.XML Faces Servlet javax.faces.webapp.FacesServlet

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

O JAVASERVER FACES

27

FIGURA 2.19 PGINA GERADA COM RESULTADO APS SUBMISSO

No NetBeans IDE, o projeto de exemplo bem mais simples. Basta ir ao menu Run e clicar em Run Main Project. O resultado uma simples pgina com o texto JavaServer Faces renderizado pelo componente que possui.

FIGURA 2.20 RESULTADO DA PGINA JSF RENDERIZADA

ALTERANDO OS PROJETOS DAS FERRAMENTASO projeto criado inicialmente em cada uma das ferramentas, atravs de templates, possui o objetivo nobre de dar um primeiro empurro para seu desenvolvimento com as mesmas. Porm, por utilizar assistentes, evidente que voc no aprender sobre o funcionamento do JSF, e nem a idia desses exemplos ensinar o framework. Portanto, para melhor compreender o JSF, voc vai alterar o projeto gerado.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

O JAVASERVER FACES

35

Primeiramente, voc tem um elemento chamado de , que configura o nome do bean que ser acessado pelas pginas JSF e, o nome da classe utilizada do exemplo, chamada de Controle. Por fim, esse bean, que ir controlar as pginas, possui um escopo, configurado no caso como session. No elemento , voc tem um sub-elemento chamado de , que determina a pgina de partida na sua aplicao. O elemento determina qual a pgina dever ser exibida, partindo da configurada em . Caso receba uma mensagem, seja de sucesso ou de falha, o elemento acionado, verificando-se a palavra existente entre esse elemento. A pgina que ser exibida determinada atravs do elemento , que indica a navegao para onde o browser ir.

FIGURA 2.25 REPRESENTAO VISUAL DO ARQUIVO FACES-CONFIG.XML PELO ECLIPSE E NETBEANS

O FORMULRIOPara que essas regras funcionem, primeiro voc tem que criar a pgina que submeter os dados digitados. Essa pgina tambm ser responsvel por mostrar um erro, caso ocorra, ao usurio. Para criar no Eclipse IDE, com o direito do mouse sobre o projeto, selecione no menu de contexto o item New > JSP File. Na caixa de dilogo New File JSP, digite trabComJSF no campo Name e selecione o item JSFBasePage, em Template. Clique em Finish para completar. O Eclipse IDE, atravs do plug-in JBoss Tools, adicionar a base da pgina com as diretivas taglibs configuradas para o JSF.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

40

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

No Tomcat, voc pode configurar da forma como a Listagem 2.7 mostra:

LISTAGEM 2.7 ARQUIVO CONTEXT.XML NO TOMCAT

As configuraes nele propostas so utilizadas tanto para a criao do contexto do projeto, atravs do atributo path do elemento , como tambm para a conexo com um banco de dados, visto no elemento .

ATENO: Informaes adicionais de como trabalhar com pool de conexesso mostradas no Apndice A contido no CD-ROM anexo ao livro.

CONHECENDO MELHOR O JAVASERVER FACESAgora que voc j fez sua primeira aplicao em JSF, mais fcil de entender os servios que o framework oferece ao desenvolvedor. Como voc pde ver, o framework JSF responsvel por interagir com o usurio (cliente), e fornece ferramentas para criar uma apresentao visual, a aplicao lgica e a lgica de negcios de uma aplicao Web. Porm, o escopo de JSF restringido camada de apresentao. A persistncia de banco de dados e outras conexes de backend esto fora do escopo de JSF.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 3 FACELETSJavaServer Faces muito bom para desenvolver aplicaes Web, porm, ainda assim, exige-se do desenvolvedor o conhecimento das tags JSF, o que atrapalha o designer de pginas em sua construo. A sada seria utilizar um sistema de templates simples que no exigisse mudanas no uso de (X)HTML e se integrasse ao framework sem maiores alteraes. Para esse caso, temos Facelets, um framework de templates JavaServer Faces, baseado em alguns princpios simples, que transforma tags (X)HTML em pginas JSF, sem a necessidade de utilizao total de suas tags. Nesse captulo voc aprender a trabalhar com Facelets atravs das IDEs, criando um pequeno projeto de exemplo.

COMO O FACELETS TRABALHA?O Facelets trabalha criando uma rvore de objetos UIComponent e interliga o contedo completamente com as requisies processadas pelo ciclo de vida JSF. Atravs dessa ligao com JSF, o Facelets incorpora numerosas caractersticas amigveis ao desenvolvedor. Isso torna possvel o trabalho com templates, importantssimo para uma reutilizao de layouts no desenvolvimento de pginas Web e at o uso de HTML com injeo de atributos que se transformam em componentes JSF.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

54

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Graas ao Facelets, podemos ter como vantagens sobre a construo de pginas JSF: Criao de uma rvore de objetos UIComponent e contedo entrelaado completamente com o processo de ciclo de vida do JavaServer Faces; mais rpido, pois no utiliza o engine do JSP para transformar em Servlets; Suporte a templates reutilizveis, aumentando a produtividade na criao de numerosas pginas, criando uma base padro; Integrao com os processos Faces e com as tags (X)HTML (usa diretamente o XHTML como tecnologia view do JSF) como membros da rvore de componentes. Isso possibilita a injeo de componentes JSF com um simples atributo jsfc; Erros mais amigveis e com maior preciso; Eliminao de tags JSF como e .

Graas a essas integraes, as aplicaes podem ser escritas para serem visualizadas em uma interface CSS.

NOTA: Os layouts que trabalham com CSS um novo paradigma em torno dodesenvolvimento de pginas Web, tornando-as mais leves e com o uso intensivo de folhas de estilos (CSS), menos tabelas e seguindo as especificaes W3C, no se prendendo a somente um browser.

ONDE BAIXAR O FACELETSVoc pode baixar o Facelets no endereo oficial https://facelets.dev.java.net/. Na parte inferior do site, h o link downloadable from here. O arquivo necessrio para trabalhar com Facelets jsf-facelets.jar. Porm, dentro do arquivo compactado, voc possui outros arquivos no diretrio lib, que tambm so importantes ao seu funcionamento.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

62

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

/cadastrados.xhtml cadastro /cadastro.xhtml ...

A pgina cadastrados.xhtml ser exibida quando houver a string cadastrados. E cadastro.xhtml ser exibida quando houver a string cadastro.

FIGURA 3.3 NAVEGAO DAS PGINAS

O ARQUIVO WEB.XMLPara ter uma aplicao Web utilizando Facelets funcionando, necessrio tambm adicionar alguns elementos no arquivo web.xml. A principal informao adicionada no deployment descriptor para trabalhar com Facelets mostrado na Listagem 3.4 a seguir:

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

FACELETS

71

FIGURA 3.6 RESULTADO FINAL DAS PGINAS FACELETS RENDERIZADAS

A API DO FACELETSA API do Facelets, contido no pacote com.sun.facelets, consiste de trs classes abstratas ( Facelet, FaceletFactory e FaceletContext) e duas interfaces (FaceletHandler e TemplateClient). Cada uma das trs classes abstratas expem os mtodos de uma classe implementada padro, contida no pacote com.sun.facelets. impl. A DefaultFacelet a que deriva de Facelet; DefaultFaceletFactory deriva de FaceletFactory e DefaultFaceletContext deriva de FaceletContext. Em contraste, a interface FaceletHandler implementada por mais de trinta classes manipuladoras. Basicamente, isto ocorre porque a instncia de Handler especfica para o componente que est manipulando. A interface TemplateClient implementada por CompositionHandler e DecorateHandler.

A API DO FACELETS EM AOPara melhor compreender o Facelets, importante saber como ocorre interao com os componentes requisitados do JSF no processo de ciclo de vida. FaceletViewHandler integra Facelets dentro do framework Faces e invoca a API de Facelets para construir e renderizar a rvore UIComponent. A ViewHandler chamada nas duas fases do ciclo de vida de JSF: a Restaurar a Apresentao e Renderizar a Resposta.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

PARTE 2DESENVOLVENDO O SITE E-COMMERCEVisite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 4 JPA COM HIBERNATEPor anos a persistncia de dados foi um tpico problemtico por entre os desenvolvedores Java. A palavra portabilidade era algo fora de alcance, principalmente porque um banco de dados, em muitos casos, tem um dialeto prprio. Eis que surgem os ORMs que tentam fechar o buraco existente na construo de aplicaes que exijam portabilidade total. Dentre os mais famosos, temos o Hibernate, que se tornou referncia no meio do desenvolvimento. Porm, com o Java EE 5, atravs da especificao do EJB3, na introduo da JPA (Java Persistence API), ficou muito popular o uso de JP-QL, Java Persistence Query Language, onde o mapeamento de objeto/relacional foi padronizado na plataforma Java. Com isso, o ORM Hibernate passou a ser um provedor de persistncia que, se for necessrio, pode ser substitudo por outro sem que ocorram mudanas na comunicao entre a aplicao e o ORM. Neste captulo, voc aprender a mapear suas entidades persistentes utilizando a JPA integrando com o Hibernate.

O MODELO DE DADOSPara construir a aplicao Web e-commerce, teremos cinco simples tabelas inicialmente. Do ponto de vista administrativo da aplicao, haver uma rea fechada, que ser gerenciada cadastrando-se categorias e produtos (armazenando os dados nas tabelas de mesmo nome).

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

80

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

No site, para o pblico em geral, teremos os produtos sendo exibidos e suas respectivas categorias, ao qual poderemos visualizar um ou vrios desses produtos, assim como filtr-los por sua categoria (resumidamente falando). Assim que criado o carrinho de compras, no fechamento do pedido, um usurio se cadastrar (tabela usurios) para ento, fechar o pedido (esse usurio dever estar logado). O cdigo do usurio e dados de pagamento so armazenados na tabela pedidos. A quantidade comprada, bem como os produtos adquiridos so armazenados na tabela itens_pedido. Um pedido, como j sabe, deve ter diversos produtos adquiridos. Isso significa que, na prtica, o carrinho de compras ser todo armazenado, no fechamento, na tabela itens_pedido. A Figura 4.1 ilustra as tabelas e o banco de dados do sistema.

FIGURA 4.1 MODELO DE DADOS

MYSQL E O JDBCSendo um dos sistemas de gerenciamento de bancos de dados mais usados do mundo, pertencente a Sun Microsystems, sua velocidade e capacidade de ser multiplataforma s poderiam chamar a ateno de quem desenvolve em Java.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

JPA COM HIBERNATE

91

FIGURA 4.4 A BIBLIOTECA DE USURIO HIBERNATE CONFIGURADA NO ECLIPSE IDE

NOTA: Com a biblioteca Hibernate criada, voc no precisar repetir os passos novamente para criar uma biblioteca de usurio, a menos que mude de Workspace.

Com o direito do mouse no projeto, selecione o item Properties no menu de contexto. Em Java Build Path selecione a guia Libraries. Clique no boto Add Library. Na caixa de dialogo Add Library selecione User Library e clique em Next. Selecione Hibernate e clique no boto OK.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

92

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

ADICIONANDO A BIBLIOTECA JDBC AO PROJETO DO ECLIPSE IDERepita os mesmos passos que foram necessrios para criar e adicionar a biblioteca do Hibernate, porm adicionando nesse caso a biblioteca JDBC do MySQL.

NO NETBEANS IDENo NetBeans IDE, v ao menu Tools>Libraries. Na caixa de dilogo Library Manager clique no boto New Library. No dilogo New Library digite Hibernate em Library Name e confirme. Selecione, assim como no Eclipse IDE, todos os arquivos JARs existentes do Hibernate, no diretrio de mesmo nome, encontrado no CD-ROM.

FIGURA 4.5 - A BIBLIOTECA HIBERNATE CONFIGURADA NO NETBEANS IDE

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

JPA COM HIBERNATE

93

Com o direito do mouse em Libraries, no seu projeto, atravs da janela Projects, selecione o item Add Library no menu de contexto. Na caixa de dilogo Add Library selecione o item Hibernate e MySQL JDBC Driver (com Ctrl) e clique no boto Add Library.

CRIANDO AS ENTIDADES PERSISTENTESAs classes mostradas a seguir sero criadas dentro de um pacote chamado de br.com.integrator.entities.

FIGURA 4.6 AS ENTIDADES NO PROJETO MODEL DO ECLIPSE E NETBEANS

Crie uma nova classe Java e a chame conforme mostrado nas Listagens a seguir.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

104

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

ENTENDENDO OS ARQUIVOS CRIADOSCada objeto de entidade persistente possui diversas anotaes. Cada anotao tem um significado na JPA, como voc j viu em @Table, @Id e @Column, j citado anteriormente. Mas existem outras anotaes, que esto listadas na Tabela 4.1 a seguir:

TABELA 4.1 - ANOTAES MAIS COMUNS DA JPAANOTAO @Entity DESCRIO A entidade. Indica que essa classe uma entidade (entity bean), que nada mais do que um POJO, representando um objeto de negcio. Sem a denio de um parmetro adicional, assumido que o valor padro ser o nome da classe. Mapeia o nome da tabela. Caso no seja utilizado o parmetro name, o valor padro assumido o nome da classe. O identicador da entidade. Normalmente se refere chave primria da tabela relacional. Dene que ter seus identicadores automaticamente gerados. Isso chamado de gerao de id e especicado por essa anotao. Mapeia o nome da coluna existente na tabela relacional. importante frisar que o Hibernate assume os atributos da classe como os mesmos nomes dos campos da tabela existente no banco de dados. A utilizao dessa anotao com o atributo name se faz necessrio nesse caso, uma vez que existem campos de nomes diferentes no modelo relacional com relao classe. So tipos baseados em informaes armazenadas relativas ao tempo. A lista de tipos temporais incluem trs tipos java.sql e dois tipos java.util: java.sql.Date, java.sql.Time, java.sql.Timestamp, java.util.Date e java.util.Calendar. O uso dessa anotao inclui um atributo chamado de TemporalType com um valor enumerado. Esses valores so: DATE, TIME e TIMESTAMP para representar os tipos de java.sql. Um termo de banco de dados comum para campos que armazenam grandes quantidades de dados (ou at mesmo objetos baseados em bytes), conhecidos como Binary Large Object - ou LOB, abreviado. Essa anotao atua com esse propsito, que so vistos em campos do tipo TEXT, BLOB e outros existentes no MySQL. Dene uma relao de um-para-muitos do utilizado em banco de dados relacional. Possui um atributo chamado mappedBy para denir o atributo da outra Entidade no qual referenciado. Dene uma relao de muitos-para-um do utilizado em banco de dados relacional. So usadas para especicar a coluna que contm a chave estrangeira de cada relacionamento, os conhecidos Inner Joins de um relacionamento SQL.

@Table @Id @GeneratedValue @Column

@Temporal

@Lob

@OneToMany

@ManyToOne @JoinColumn

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

JPA COM HIBERNATE

113

FIGURA 4.9 CONFIGURAO FINAL PARA A CRIAO DO ARQUIVO PERSISTENCE.XML NO NETBEANS IDE

A Figura 4.10 exibe o arquivo persistence.xml criado em cada uma das IDEs.

FIGURA 4.10 O ARQUIVO PERSISTENCE.XML CRIADO NO ECLIPSE E NETBEANS

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

JPA COM HIBERNATE

115

FIGURA 4.11 SELEO DO HIBERNATE CONSOLE CONFIGURATION

4. Na segunda etapa, selecione JPA em Type e digite ecommerce em Persistence unit. Clique na guia Classpath e adicione a biblioteca JDBC do MySQL atravs do boto Add External JARS; 5. Finalize o assistente clicando no boto Finish.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

JPA COM HIBERNATE

121

CRIANDO ENTIDADES COM DALI JPA TOOLSO projeto Dali JPA Tools um dos diversos plug-ins fornecidos pela Fundao Eclipse, que vem j instalado na verso do Eclipse utilizada neste livro. Essa ferramenta possui suporte a JPA, contendo views que auxiliam no mapeamento entre propriedades e colunas, gerao de relacionamentos, alm de fornecer ferramentas para a gerao do modelo relacional a partir das entidades. Para criar um projeto com Dali JPA Tools no Eclipse IDE, v ao menu File>New e clique em Other. Selecione na caixa de dilogo New o item JPA>JPA Project. Clique em Next para prosseguir. Chame o projeto de Model3 e clique no boto Next at a ltima etapa. Siga os passos a seguir para configurar corretamente o projeto JPA: 1. Na ltima etapa, clique no link Add connection. 2. Surgir a caixa de dilogo New Connection Profile. Selecione Generic JDBC Connection. Caso esteja utilizando um banco de dados listado nessa parte, selecione-o. Clique em Next para prosseguir.

FIGURA 4.19 CRIANDO UM NOVO PERFIL DE CONEXO

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

128

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Na coluna Available Tables aparecem as tabelas do banco de dados. Clique em Add All para adicionar todas as tabelas que o NetBeans consegue trabalhar. Assim como no Eclipse IDE, atravs do plug-in Dali JPA Tools, o NetBeans no consegue criar uma entidade a partir de uma tabela sem chave primria. Clique no boto Next para prosseguir.

FIGURA 4.28 SELEO DAS TABELAS NO BANCO DE DADOS

Na ltima etapa do assistente, temos a criao das entidades a partir das tabelas. Clique no boto Create Persistence Unit para gerar um arquivo persistence.xml. Na caixa de dilogo Create Persistence Unit digite ecommece em Persistence Unit Name e confirme no boto Create.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 5 O SPRING COM A JPA E TESTES UNITRIOSO Spring Framework uma das diversas solues criadas pela comunidade Java, com o objetivo de amenizar a complexidade de que a plataforma traz para o desenvolvimento, principalmente no de aplicaes Web. Com o intuito de combater os antigos EJBs, que antes da verso 3, eram complexos de se trabalhar, o Spring se popularizou rapidamente entre os desenvolvedores Java por ser adaptvel a bibliotecas e padres existentes. Mesmo com o lanamento do EJB 3, muitas aplicaes Web so pequenas, no exigindo um servidor de aplicaes web completo, rodando em contineres Servlet. Por sua vez, os contineres Servlets possuem limitaes impostas, como o trabalho com EJB, e outras situaes que, atravs do Spring, podem ser supridas facilmente. Como uma de suas caractersticas marcantes, o Spring fornece injeo de dependncias e uma fcil integrao com outros frameworks como o Hibernate, a JPA e tambm com o JSF, possibilitando que seu cdigo se torne mais fcil de gerir. Neste captulo, voc utilizar o Spring com anotaes para trabalhar em conjunto com a JPA, criando um DAO genrico para a aplicao e-commerce, trabalhando com injees de dependncias, e far os testes unitrios com as anotaes oferecidas pelo Spring. Por fim, aprender a configurar um arquivo Log4j para melhor visualizar a sada executada pelo Hibernate para depurao.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

O SPRING COM A JPA E TESTES UNITRIOS

147

FIGURA 5.5 SELEO DE UMA OPO EM CREATE A NEW SPRING BEAN DEFINITION FILE

Coloque na perspectiva Java EE atravs do menu Window > Open Perspective > Other. Clique com o direito do mouse sobre o projeto e selecione o item Properties. Na caixa de dilogo Properties for Model, selecione Spring > Beans Support e clique no boto Add. Selecione o arquivo applicationContext.xml do projeto e confirme. No NetBeans IDE, com o direito do mouse sobre Source Packages, selecione no menu de contexto o item New> Other. Na caixa de dilogo New File, v at Other>Spring XML Configuration File e clique em Next. Na segunda etapa, digite applicationContext (diferente do Eclipse IDE, no h necessidade de colocar a extenso) e clique no boto Next.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

148

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Na ltima etapa do assistente, em Spring namespaces, selecione a opo tx http://www.springframework.org/schema/tx-2.5.xsd e clique no boto Finish.

FIGURA 5.6 SELEO DE UMA OPO EM SPRING NAMESPACES

No arquivo applicationContext.xml adicione as linhas mostradas a seguir, na Listagem 5.5.

OBSERVAO: Os editores das IDEs, para o arquivo XML de configurao doSpring, funcionam perfeitamente com o atalho Ctrl + Space nas definies das classes no bean.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

158

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

JUnit projetado para testar seu cdigo e composto por mtodos assertivos que podem testar vrias condies. possvel construir testes com JUnit usando os seguintes mtodos: assertEquals(a, b) - Testa se a igual b. (a e b so valores primitivos ou tem que ter um mtodo equals para propsitos de comparao). assertFalse(a) - Testa se a false, onde a um valor booleano. assertNotNull(a) - Testa se a not null, onde a um objeto qualquer ou null. assertNotSame(a, b) - Testa se ambos, a e b, no se referem a um objeto idntico. assertNull(a) - Testa se a null, onde a um objeto qualquer ou null. assertSame(a, b) - Testa se a e b se referem a um objeto idntico. assertTrue(a) - Testa se a true, onde a um valor booleano.

FIGURA 5.11 RESULTADOS DO TESTE UNITRIO REALIZADO NO ECLIPSE IDE E NO NETBEANS IDE

OUTRAS CLASSES DE TESTES UNITRIOSVoc pode fazer outras classes para testes unitrios. Porm, um caso importante para testes unitrios o de pedidos. Podemos criar um teste simulando um carrinho de compras com um usurio existente de modo a salvar essas informaes nas tabelas pedidos e itens_pedido, que representam o armazenamento da compra efetuada pelo cliente.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 6 A REA ADMINISTRATIVA PARTE 1A primeira parte da rea administrativa do site ser composta pelas pginas que faro o cadastro, alterao, excluso e visualizao de produtos e categorias, ao qual estaro disponveis nas pginas do site e-commerce. Neste captulo voc aprendar a trabalhar com os DAOs criados para cadastrar produtos e categorias, adicionar e configurar o Apache MyFaces Trinidad, com o intuito de trabalhar com upload de arquivos, alm de conhecer as anotaes do Spring 2.5 para integrao com o JavaServer Faces 1.2.

CRIANDO O PROJETO WEBO projeto Web que ser criado o que voc utilizar at o final deste livro. Ele deve ser capacitado para trabalhar com JSF e Facelets, alm de incorporar as bibliotecas do Apache Trinidad. O projeto se chamar ProjEcommerce. No Eclipse IDE, crie um projeto JSF Project (JBoss Tools Web>JSF>JSF Project). Na segunda etapa, digite o nome do projeto no campo Project Name e selecione JSF 1.2 with Facelets em JSF Environment. Mantenha a opo FaceletsBlankWithoutLibs em Template. Finalize o assistente quando terminar.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

168

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

FIGURA 6.1 PROJETO JSF COM FACELETS NO ECLIPSE IDE SEM TEMPLATE

No NetBeans IDE, crie um projeto Web Application (Web>Web Application). Na segunda etapa, digite ProjEcommerce e clique em Next. Deixe em Server selecionado o Apache Tomcat 6.0.16 e v at a ltima etapa. Na etapa Frameworks, selecione JavaServer Faces e altere na guia Configuration para *.jsf no campo Servlet URL Mapping.

ADICIONANDO A BIBLIOTECA DO APACHE TRINIDADO Apache MyFaces Trinidad um conjunto de componentes personalizados que trabalham com o JavaServer Faces, estendendo caractersticas no suportadas pelo framework. Para baixar o Apache Trinidad, entre no endereo: http://myfaces.apache.org/trinidad/index.html

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

A REA ADMINISTRATIVA PARTE 1

177

FIGURA 6.7 AS PALETAS DO APACHE TRINIDAD ADICIONADAS AO ECLIPSE

NOTA: possvel personalizar ainda mais, porm foge do escopo do livro.

CONFIGURANDO O SPRING FRAMEWORKNo Eclipse IDE, clique com o direito do mouse sobre o projeto e selecione no menu de contexto o item Spring Tools>Add Spring Project Nature. Crie um arquivo applicationContext.xml do Spring, como j mostrado anteriormente no Captulo 5, na IDE que est utilizando. Selecione a opo tx http://www.springframework.org/schema/tx e context http://www.springframework.org/schema/context. Conclua pelo boto Finish.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

A REA ADMINISTRATIVA PARTE 1

207

A Listagem 6.11 exibe o componente JSF , que gera a tag (X)HTML preenchida, carregando todos os dados encontrados no mtodo getTodos() da classe CategoriaController. Para isso, foi configurado o atributo value chamando esse mtodo. O atributo var possui um valor, chamado de item, que ser distribudo por cada coluna da tabela, colocando o nome do campo que ser exibido. No componente , cada coluna representada por , que gera a tag (X)HTML . As tags so geradas por e as tags pela simples adio do componente que vai ser usado, que no caso e tambm . H duas tags , uma responsvel por chamar o formulrio para edio, atravs do mtodo editar(), de CategoriaController, e o outro para excluir, chamando excluir() da mesma classe.

ATENO: Um detalhe importante que a excluso no possui confirmao; portanto, cuidado.

CRIANDO AS PGINAS PARA OS PRODUTOSA pgina de formulrio de produtos muito parecida com a de categorias, porm, essa possui mais tags JSF e uma tag do Apache Trinidad para renderizar o campo file. A Listagem 6.12 exibe o formulrio.

FIGURA 6.11 O CADASTRO DE PRODUTOS

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

A REA ADMINISTRATIVA PARTE 1

211

de quantos caracteres so permitidos no campo. Para o campo de cadastro de preo, foi adicionada a tag , que converte o valor digitado para o nmero conforme a localizao do browser do sistema. Observe que foram usados dois atributos: groupingUsed, com o valor booleano true, indicando que ser permitido o uso de digitos de grupo e, maxFractionDigits, com o valor 2, indicando o nmero mximo de casas decimais. Caso ocorra um erro nessa converso, voc exibe a mensagem com o atributo converterMessage da tag ao qual ela est validando. Para o upload de arquivos, a tag do Apache MyFaces Trinidad utilizada Essa tag possui o atributo value como as demais, onde voc determina o atributo da classe ProdutoController para ser utilizada. Mas lembre-se, o tipo desse atributo, para esse componente, na classe, deve ser org.apache.myfaces.trinidad.model.UploadedFile.

FIGURA 6.12 A EXIBIO DOS PRODUTOS CADASTRADOS

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 7 AS PGINAS DO LADO CLIENTEA capacidade de navegar pelos bens e servios de um site e-commerce um dos requisitos bsicos para os sites Web em uma empresa B2C. As caractersticas que sero implantadas sero base da funcionalidade inicial de um site do tipo. Neste captulo, voc vai criar a classe responsvel por gerenciar o front-end do site, alm de desenvolver o design utilizando Facelets com tcnicas de layout CSS.

CRIANDO O BEAN DE CONTROLE DA LOJAPara trabalhar com a loja, voc dever criar uma classe separada. Isso porque na loja, o JavaServer Faces, junto ao Facelets, ter sua navegao via mtodo GET. Essa caracterstica importante para que seja possvel guardar o endereo de um determinado produto e tambm para ser identificado facilmente atravs de buscadores3. Crie uma classe chamada de LojaController no pacote br.com.integrator.controller e altere-a como mostrado na Listagem 7.1 a seguir.

3 Atualmente, o trabalho com a URL e a navegao por GET tem passado por transformaes. Recomendo a leitura a respeito de REST.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

222

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Para construir o layout, antes, faa os seguintes passos: 1. Pegue no CD-ROM, anexo ao livro, os diretrios imagens/site e css, contidos no projeto-fonte; 2. Coloque-os na raiz da sua aplicao: WebContent no Eclipse ou Web Pages no NetBeans.

NOTA: A criao dos estilos do site est fora do escopo pretendido por estelivro.

FIGURA 7.1 O LAYOUT DA PGINA FINAL EM FUNCIONAMENTO

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 8 O CARRINHO DE COMPRASUm dos principais pontos de um site de comrcio eletrnico o seu carrinho de compras. Os usurios de um site de comrcio eletrnico podem construir seus pedidos nessa rea, selecionando e adicionando vrios produtos em seus pedidos. H tambm quem o chame de cesta de compras, cesta ou apenas carrinho. Em ingls, costumamos ver esse processo sendo descrito como shopping bag, shopping cart ou somente cart. Embora no importe como voc o chame, o que mais importa seja a origem de seu nome, que surgiu devido similaridade do processo que faramos se estivssemos em um mercado ou loja, onde colocamos vrios produtos em uma cesta, sacola ou carrinho. Neste captulo, voc vai criar um carrinho de compras no site de comrcio eletrnico, podendo visualizar os produtos, editar a quantidade e excluir, alm de calcular o total do pedido.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

258

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

A PGINA DO CARRINHOVoc vai criar uma pgina similar ao mostrado na Figura 8.1, onde haver uma tabela com os itens adicionados.

FIGURA 8.1 O CARRINHO DE COMPRAS CRIADO

Crie uma pgina chamada de carrinho.xhtml e altere como mostrado na Listagem 8.4 a seguir.

LISTAGEM 8.4 A PGINA CARRINHO.XHTML ... Carrinho de compras

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 9 FINALIZANDO A COMPRAQuando o usurio termina de escolher tudo que deseja comprar, inicia o processo de pagamento. Esse processo feito atravs da entrada em uma rea especial, com um nome de usurio nico e uma senha. Porm, para que isso ocorra, esse mesmo usurio deve estar devidamente cadastrado no site, evitando assim fraudes. Neste captulo, voc vai definir a segurana para a entrada na rea de usurio, incluindo o formulrio para seu cadastro e login, para que esse possa realizar a finalizao da compra.

CONTROLANDO A ENTRADA DO USURIOA entrada do usurio controlada por uma classe que ser responsvel pela verificao do cadastro, sua respectiva entrada ou pelo cadastro de um novo usurio. Para incio, voc vai criar a classe UsuarioController no pacote br.com.integrator.controller, conforme mostra a Listagem 9.1:

LISTAGEM 9.1 A CLASSE USUARIOCONTROLLER @Controller(usuarioController) @Scope(session) public class UsuarioController {

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

280

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

id=enviar value=Logar/>

Embora o formulrio para entrar na rea de usurio seja igual a qualquer outro feito at o momento no livro, h uma pequena mudana para exibir as mensagens globais do formulrio. Enquanto cada campo possui uma mensagem personalizada, a tag JSF exibe todas as mensagens lanadas pelo formulrio, inclusive as que pertencem aos campos obrigatrios. Para forar a exibio de apenas mensagens globais, e no locais, utilize o atributo globalOnly= true.

FIGURA 9.1 A PGINA PARA SE LOGAR NA REA DO USURIO

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

284

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

id=confirmar value=Confirmar/>

Observe que na pgina do formulrio, o campo de cadastro de e-mail est com o atributo readonly contendo uma expresso EL, que verifica se no vazio o atributo email de Usuario, acessado por usuarioController. Se for, ele no permite preencher esse campo. Lembre-se da explicao da classe UsuarioController (Listagem 9.1), quando voc estiver logado, significa que o formulrio ser para atualizao, porm, no h uma verificao na classe para determinar se o e-mail no est sendo duplicado com outro usurio.

FIGURA 9.2 O FORMULRIO CADASTRANDO UM NOVO USURIO

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

300

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Com a tag JSF voc configura o validador, chamando-o pela ID configurada no arquivo faces-config.xml, utilizando o atributo validatorId.

FIGURA 9.5 A MENSAGEM PADRO CRIADA NO VALIDADOR ENTRANDO EM AO

Se voc no gostar da mensagem padro criada no validador, pode alter-la diretamente na tag JSF, com o atributo validatorMessage.

VALIDANDO PELO BEANUma forma muito simples de fazer a validao de entrada de dados, em um campo de forma personalizada, atravs de um JavaBean. Por exemplo, voc pode validar a entrada de e-mails nos campos definidos para o registro e para o login, evitando problemas de digitao.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 10 ENVIANDO E-MAIL PELO SITEEm qualquer site de comrcio eletrnico, os usurios podem se comunicar com a empresa por e-mail, atravs de uma rea de contato, assim como, tambm, podem receber informaes por e-mail, como em uma mala-direta (e-mail marketing), at a confirmao de um pedido efetuado. Neste captulo voc aprender a enviar e-mail de forma simples, utilizando um dos recursos do Spring Framework.

CONFIGURANDO O PROJETO PARA ENVIO DE E-MAILAntes de comear, voc vai precisar de duas bibliotecas para envio de e-mail: mail.jar e activation.jar. Baixe o JavaMail no endereo http://java.sun.com/products/javamail/index. html. Sua verso est em 1.4.1 no momento em que o livro escrito. Baixe tambm o JavaBeans Activation Framework, que se encontra, no momento em que o livro escrito, na verso 1.1. Crie uma biblioteca de usurio chamada Mail em seu Eclipse IDE ou NetBeans IDE. Descompacte e pegue os arquivos mail.jar e activation.jar e adicione na biblioteca criada.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

312

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

FIGURA 10.3 A PGINA DE CONTATO RENDERIZADA

Crie outra pgina chamada de enviado.xhtml e coloque em seu contedo um texto para informar o usurio do envio.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

CAPTULO 11 A REA ADMINISTRATIVA PARTE 2Muitos usurios fazem compras diariamente em um site de comrcio eletrnico, gerando uma grande quantidade de informaes a serem geridas. Na segunda parte da rea administrativa, voc adicionar uma pesquisa pelos pedidos realizados no site atravs de datas, marcando assim um perodo a ser visualizado, criando uma query JP-QL mais complexa. Em seguida, far um relatrio usando JasperReports com o iReport, com a finalidade de utilizar os objetos dessa consulta e gerar um PDF formatado para impresso. Por fim, voc ir garantir a entrada na rea administrativa para somente pessoas autorizadas, trabalhando com PhaseListener do JavaServer Faces para controlar a sesso.

CRIANDO A CONSULTAComo a aplicao possui a parte de finalizao de pedidos na classe UsuarioController, ser essa que voc usar para criar a consulta de pedidos para o administrador.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

334

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

Altere no template tambm, adicionando um link que chama essa pgina, como mostra o trecho a seguir: Exibir Compras

FIGURA 11.1 A PGINA DE EXIBIO DE COMPRAS COM PAGINAO

ADICIONANDO UM RELATRIOPara concluir as funcionalidades do administrador, interessante adicionar a capacidade de gerar relatrios. Existem diversos programas que trabalham com relatrios em Java: na comunidade Open Source temos o JasperReports e sua ferramenta visual iReport, da empresa JasperSoft, e o Eclipse Birt, da fundao Eclipse. Criar relatrios em Java um assunto que exige um livro4 e a idia aqui aprender a exibir um relatrio simples, com os resultados vindos da pesquisa criada na pgina que exibe as compras efetuadas. O relatrio ser gerado em JasperReports, por ser o mais popular, sendo que voc usar o iReport para desenh-lo visualmente.4

Recomendo a leitura do livro Dominando Relatrios JasperReports com iReport, de minha autoria

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

A REA ADMINISTRATIVA PARTE 2

339

FIGURA 11.3 A JANELA DO IREPORT EM UM RELATRIO VAZIO NO LINUX

Cada um destes painis, espalhados ao redor de seu relatrio, possuem caractersticas e propriedades de certos elementos que, tambm, podem ser acessveis de outra forma. Esses painis, numerados na Figura 11.3, so explicados na lista a seguir: (1) File Exibe os relatrios abertos. O acesso feito com um duplo clique sobre o relatrio que deseja exibir na janela. O cone apresentado, ao lado do nome do relatrio, nesse painel, tambm indica modificao no arquivo. Caso esteja com dois riscos, porque houve alterao e no foi salvo. Alternativamente, voc pode acessar outro relatrio aberto atravs do menu Window. (2) Document structure Exibe os parmetros, campos da tabela da sua query, variveis pr-definidas e criadas, alm das bands do relatrio. (3) Properties Exibe a propriedade de acordo com o elemento selecionado em sua estrutura (Estrutura do documento). As propriedades, de cada elemento do relatrio, tambm podem ser acessveis facilmente com o boto direito do mouse sobre o mesmo, selecionando o item Properties no menu de contexto.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao

354

DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA

FIGURA 11.10 RELATRIO COM SADA NO NAVEGADOR DENTRO DO ECLIPSE IDE

TRABALHANDO COM PHASELISTENER PARA O LOGIN ADMINISTRATIVONo site j criado, voc utilizou um filtro para impedir a entrada de pessoas no autorizadas na rea do usurio, necessitando de um login. Porm, como j foi dito naquele captulo, h mais de uma forma para se fazer isso. A segunda forma que ser mostrada utilizar o prprio recurso do JavaServer Faces, atravs do uso de PhaseListener. A idia original foi de Aaron L. Bartell em uma lista de e-mails de desenvolvedores JSF e que est sendo adaptada agora para o administrador do e-commerce.

Visite o site www.integrator.com.br e veja um vdeo demonstrativo da aplicao