SlideShare uma empresa Scribd logo
1 de 63
Baixar para ler offline
EDSON GONÇALVES




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
AGRADECIMENTOS

       Primeiramente quero agradecer à minha família, pelo apoio e compreensão da
       minha ausência, que de certa forma tornou-se uma rotina.

       Agradeço o apoio da Editora Ciência Moderna, em especial ao editor Paulo André
       P Marques, pelo incentivo e crédito em mais este livro.
        .

       Um agradecimento especial a todos aqueles que me ajudaram na conclusão desta
       obra, opinando, lendo e criticando certos pontos para uma melhor elaboração
       dos textos. Embora não pareça, demoraria mais que os sete meses necessários a
       sua conclusão.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
INTRODUÇÃO

       Trabalhar em aplicações Web utilizando tecnologia Java não é uma tarefa fácil.
       Entretanto, ao redor do mundo, muitos desenvolvedores já criaram diversas bi-
       bliotecas que auxiliam nessa tarefa, gerando o que chamamos de frameworks.

       No geral, um framework é um conjunto de bibliotecas com práticas gerais encap-
       suladas que, juntas, criam uma forma mais simples de desenvolver alguma tarefa.
       Dentre os diversos frameworks existentes para a criação de aplicações Web, te-
       mos o JavaServer Faces.

       JavaServer Faces é o framework oficial da especificação Java EE e é desenhado
       para o desenvolvimento de aplicações Web baseado em componentes (compo-
       nent based). Na prática, desenvolver com esse framework torna fácil o trabalho
       na construção de aplicações através de componentes de interface com o usuário
       (GUI), e sua capacidade de conectar esses componentes a objetos de negócios é
       relativamente fácil.

       Este livro, embora pequeno, foi elaborado pensando no desenvolvedor iniciante
       em JavaServer Faces, que deseja aprender a integrar suas aplicações com tecnolo-
       gias conhecidas, como o Spring Framework, Hibernate e JPA, usando um exemplo
       completo, embora pequeno, de um site fictício de comércio eletrônico.



       QUEM DEVE LER ESTE LIVRO?
       Este livro foi escrito para desenvolvedores com experiência em desenvolvimento
       Web utilizando a linguagem Java, mas que não possuem muito conhecimento
       sobre o framework JavaServer Faces.

       Além disso, embora sejam apresentados os conceitos fundamentais sobre as fer-
       ramentas de desenvolvimento aplicadas no decorrer do livro, é muito importante
       que o usuário já tenha tido um contato inicial com as mesmas.

       É desejável também um conhecimento sobre o acesso e utilização de um banco
       de dados.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
VI   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6


       ANTES DE COMEÇAR
       Em algumas partes deste livro, você encontrará um símbolo que o ajudará a en-
       tender o código proposto e desenvolvido, mostrado a seguir:

       ... - Indica que acima ou abaixo contém código, mas que não está sendo exibido
       por não ter sido alterado ou por ser importações, e o mesmo pode ser acessado
       pelo CD-ROM, anexo ao livro.



       OS SOFTWARES REQUERIDOS
       Os aplicativos criados neste livro não exigem software proprietário. Portanto, ao
       longo dos capítulos, você não só aprenderá como usá-los, mas também onde en-
       contrá-los na Internet, caso precise de uma atualização.

       Esse livro não está focado especialmente em um sistema operacional, já que a
       linguagem Java é multiplataforma.



       HARDWARE REQUERIDO
       Uma boa configuração de hardware se faz necessária para trabalhar com aplica-
       ções escritas em Java. Um computador para rodar bem o Eclipse IDE ou NetBeans
       IDE deve ter as seguintes configurações para uma confortável utilização, segundo
       o autor:



       Processador: Pentium 4 ou similar (recomendo um Dual Core ou Core 2
       Duo)

       Memória: 1 GB de RAM mínimo (recomendo 2GB de RAM)

       HD: 10GB de espaço livre

       Monitor: 17 polegadas ou superior




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
INTRODUÇÃO   VII


       CÓDIGOS DOS EXEMPLOS CRIADOS NO LIVRO
       Todos os códigos dos exemplos criados no livro, bem como as IDEs e outros, se
       encontram no CD-ROM anexo.

       Caso não encontre algum exemplo, entre em contato com o autor pelo site http://
       www.integrator.com.br.



       VISÃO GERAL DOS CAPÍTULOS
       Com um conteúdo completamente ilustrado, o livro possui diversas imagens es-
       palhadas por todos os capítulos, sempre focando em detalhes quando necessário.
       Ao longo do livro, são dadas dicas para uma melhor compreensão do que está
       sendo feito, sempre com informações técnicas.

       Para uma melhor compreensão, aqui você tem uma sinopse dos capítulos encon-
       trados no decorrer do livro.



       PARTE 1 – AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETS
       Composta por três capítulos, essa parte introduz o iniciante nos ambientes de
       trabalho envolvidos no decorrer do livro. Além de possuir informações de teor
       prático e técnico para o início 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-COMMERCE
       Composta por oito capítulos, essa parte trabalha do início ao fim com o desenvol-
       vimento da aplicação foco do livro. Em seu longo, diversos tópicos serão aborda-
       dos, entre eles:

          • A configuração da JPA em conjunto com o Hibernate;

          • Como mapear as entidades que serão utilizadas;

          • A integração com o Spring Framework e suas anotações;




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
VIII     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6


              • Geração de DAOs genéricos para minimizar a quantidade de códigos no
              desenvolvimento;

              • Criação de testes unitários com JUnit em conjunto com o Spring Framework
              e anotações;

              • Segurança na aplicação com Filtros Servlet e JSF PhaseListener;

              • A utilização de plug-ins Eclipse como JBoss Tools, Hibernate Tools, Projeto
              Dali JPA Tools e Spring IDE;

              • O trabalho com Hibernate e Spring Framework através do NetBeans IDE;

              • O envio de e-mails utilizando os recursos do Spring Framework;

              • O desenvolvimento de um relatório JasperReports com iReport utilizando
              objetos;




         ATENÇÃO: Em caso de erro, recomendo a visualização 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 vídeo demonstrativo da aplicação
SUMÁRIO
       PARTE 1 - AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETS ...............................................1

           Capítulo 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

           Capítulo 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 aplicação em um arquivo WAR ..............................................39
                  Como subir sua aplicação no servidor .........................................................39
              Conhecendo melhor o JavaServer Faces ...........................................................40
              As tags padrões de JavaServer Faces..................................................................42
                  JSF Tags HTML ...........................................................................................43
                  JSF Tags Core .............................................................................................46
              Ciclo de Vida do JSF .........................................................................................48
              Resumo ............................................................................................................51

           Capítulo 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 vídeo demonstrativo da aplicação
X    DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6


                   Segurança no acesso aos arquivos .xhtml ....................................................72
                Resumo ............................................................................................................75

       PARTE 2 - DESENVOLVENDO O SITE E-COMMERCE ....................................................................77

           Capítulo 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 usuários ................................................................................86
                  Confirmando o novo usuário ......................................................................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 aplicação ....................................................................................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 persistência ............................................................101
                  Java Annotations, o que é isso? .................................................................102
                  A API de persistência ................................................................................103
                  Entendendo os arquivos criados................................................................104
                  O relacionamento ....................................................................................105
                  O arquivo persistence.xml ........................................................................108
              Modelando a aplicação 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 vídeo demonstrativo da aplicação
SUMÁRIO        XI


          Capítulo 5 - O Spring com a JPA e Testes unitários................................................131
             O Spring ........................................................................................................132
                 Onde baixar a última versão .....................................................................132
                 Adicionando o suporte ao Spring Framework em seu projeto ....................133
             Criando o DAO genérico................................................................................135
                 O Spring atuando no DAO .......................................................................141
                 A simplicidade para estender a outros DAOs ...........................................144
                 Configurando o Spring através de applicationContext.xml .........................145
                 Criando testes unitários ............................................................................151
                 O Log4j ....................................................................................................161
             Pronto para a próxima etapa ..........................................................................165
             Resumo ..........................................................................................................165

          Capítulo 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 página modelo da área administrativa .......................................198
                 Criando as páginas para as Categorias .......................................................202
                 Criando as páginas para os Produtos .........................................................207
             Resumo ..........................................................................................................214

          Capítulo 7 - As páginas do lado cliente .................................................................215
             Criando o bean de controle da loja ................................................................215
                 Adicionando a classe no Managed Bean ...................................................221
                 O template das páginas ............................................................................221
                 A página principal do site .........................................................................229
                 O que é EL?..............................................................................................234
                 A página detalhes do produto ...................................................................237
                 A página de resultados da pesquisa ...........................................................240
                 A página de produtos da categoria ............................................................243
             Resumo ..........................................................................................................246




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
XII     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6


             Capítulo 8 - O carrinho de compras .....................................................................247
                Os beans para o carrinho ...............................................................................248
                    Controlando o carrinho ............................................................................253
                    A página do carrinho ................................................................................258
                    Configurando o Managed Bean e a navegação..........................................264
                Resumo ..........................................................................................................266

             Capítulo 9 - Finalizando a compra........................................................................267
                Controlando a entrada do usuário ..................................................................267
                    Configurando a classe ..............................................................................278
                    Criando as páginas ...................................................................................278
                    Criando a navegação ...............................................................................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 número do cartão ................................................295
                    Configurando o validador .........................................................................298
                    Aplicando o validador...............................................................................299
                    Validando pelo Bean ................................................................................300
                Resumo ..........................................................................................................302

             Capítulo 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 navegação das páginas do contato .........................................................313
                    Criando um e-mail de confirmação ao pedido efetuado ...........................314
                Resumo ..........................................................................................................316

             Capítulo 11 - A área administrativa – Parte 2 ........................................................317
                    Criando a consulta....................................................................................317
                    A página que trabalhará com a consulta....................................................320
                    Paginação de resultados ............................................................................324
                    Paginando os resultados ............................................................................329
                    Criando a navegação para a página ..........................................................333
                Adicionando um relatório...............................................................................334
                    O iReport .................................................................................................335



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
SUMÁRIO        XIII


                  Criando o relatório ...................................................................................336
                  Chamando o relatório através da aplicação ...............................................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
              Apêndice A: Pool de Conexões ............................................................. CD-ROM
              Apêndice B: O MySQL.......................................................................... CD-ROM
              Apêndice C: Suporte a Facelets no NetBeans ........................................ CD-ROM




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
PARTE 1

                AMBIENTES DE TRABALHO,
                  JAVASERVER FACES E
                       FACELETS
Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 1

                   PREPARANDO SEU AMBIENTE
                                 DE TRABALHO
       O trabalho com desenvolvimento Web em Java é penoso sem um bom ambiente
       de desenvolvimento. Entretanto, há duas ferramentas muito conhecidas no desen-
       volvimento Java que serão abordadas para a utilização ao longo do livro: Eclipse
       IDE com plug-ins e NetBeans IDE. Este capítulo está baseado na instalação e con-
       figuração de ambos os ambientes.



       O ECLIPSE IDE
       O Eclipse IDE, chamado por muitos de Plataforma Eclipse, é considerada por uma
       grande maioria de desenvolvedores Java como a melhor ferramenta para desen-
       volvimento dessa linguagem.

       Desenvolvido inicialmente pela IBM e liberado o código fonte para a comuni-
       dade, criando a fundação Eclipse (Eclipse Foundation), sua grande vantagem, na
       atualidade, está no uso de seus assistentes de código e grande gama de plug-ins,
       podendo se adaptar a qualquer situação de desenvolvimento.

       Até o momento em que esse livro está sendo escrito, a versão atual e estável do
       Eclipse é a 3.3.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
8   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       O NETBEANS IDE
       O NetBeans IDE é uma ferramenta criada em Java Swing e com várias opções em
       pacotes para que você baixe a versão que melhor se encaixa em seu trabalho;
       cada uma contém módulos de instalação diferentes para cada necessidade do
       desenvolvedor.



       OBTENDO E INSTALANDO O NETBEANS IDE
       O site oficial do NetBeans IDE se encontra no endereço http://www.netbeans.
       org. Assim que você entra no site oficial do NetBeans, há um grande botão escrito
       Download NetBeans IDE.

       Dando um clique nesse botão, você irá até a página de downloads da IDE. En-
       quanto este livro é escrito, o NetBeans IDE se encontra na versão 6.0 como estável
       e 6.1 como desenvolvimento. Para o livro, será adotada a versão 6.1.




              FIGURA 1.7 – DOWNLOAD DO PACOTE NECESSÁRIO PARA O DESENVOLVIMENTO COM APLICAÇÕES WEB




       A instalação do NetBeans IDE é tranqüila, quando utilizamos assistente, tanto no
       sistema operacional Windows como em Linux, basta executar o arquivo baixado.

       No Linux, apenas dê a permissão necessária para que seja possível a execução do
       arquivo binário:


       shell# chmod +x netbeans-6.1rc1-javaee-linux.sh



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 2

                         O JAVASERVER FACES
       JavaServer Faces é o framework de aplicações Web Java oficial da Sun Microsyste-
       ms. Esse framework foi desenhado para simplificar o desenvolvimento de aplica-
       ções Web, através do conceito baseado em componentes (component based).

       Na prática, a autilização de JavaServer Faces torna fácil o desenvolvimento através
       de componentes de interface de usuário (GUI), possibilitando a conexão desses
       componentes a objetos de negócios de forma simplificada.

       Neste capítulo, você aprenderá a criar e configurar um projeto utilizando JavaSer-
       ver Faces, além de compreender o básico necessário trabalhar com o framework.



       BAIXANDO O JAVASERVER FACES
       Para trabalhar com o JavaServer Faces, primeiramente será preciso configurar os
       arquivos e a estrutura necessária.

       O contêiner Servlet usado para este livro será o Tomcat 6 que, por padrão, não
       possui suporte direto ao JavaServer Faces, ou seja, não contém as bibliotecas ne-
       cessárias para o desenvolvimento com o mesmo.

       Para baixar o JSF, faça download no endereço http://java.sun.com/j2ee/javaser-
       verfaces/download.html. Como você irá trabalhar com JavaServer Faces voltado
       para um contêiner compatível com a tecnologia Java EE 5, você deverá baixar a
       versão JSF 1.2, a utilizada nesse livro. Ao baixar o arquivo, simplesmente descom-
       pacte em um diretório de sua escolha.



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
O JAVASERVER FACES   13


       Para torná-los disponíveis em sua aplicação é simples: basta colocar esses arquivos
       listados no diretório lib, encontrado em WEB-INF de sua aplicação Web.

       Porém, como vamos utilizar um ambiente de trabalho baseado em IDE, será mais
       fácil essa configuração.



       JAVASERVER FACES NO NETBEANS IDE
       O NetBeans IDE já possui configurado por padrão as bibliotecas necessárias para
       desenvolver uma aplicação JavaServer Faces.

       Para criar um projeto com JavaServer Faces, vá ao menu File e clique no item New
       Project. Na caixa de diálogo New Project selecione o item Web em Categories
       e Web Application em Projects. Clique no botão Next.

       Na segunda etapa você define o nome do projeto, em Project Name e a localiza-
       ção, em Project Location. Digite TrabComJSF e clique no botão Next.




                                 FIGURA 2.1 – NOME DO PROJETO E LOCAL




       Na terceira etapa você seleciona o Apache Tomcat em Server. Clique no botão
       Next.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
14   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA




                         FIGURA 2.2 – SELEÇÃO 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 botão Finish para concluir.




                     FIGURA 2.3 – SELEÇÃO DO FRAMEWORK JAVASERVER FACES E CONFIGURAÇÃO INICIAL




       O NetBeans IDE abrirá automaticamente uma página em JSF criada pelo assisten-
       te através do template existente.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
O JAVASERVER FACES   15


       JAVASERVER FACES NO ECLIPSE IDE
       O Eclipse IDE possui mais opções de criação de páginas com o framework Java-
       Server Faces devido a utilização do plug-in JBoss Tools.

       Vá ao menu File em New e selecione Project. Na caixa de diálogo New Project
       expanda JBoss Tools Web > JSF e selecione JSF Project. Clique no botão Next
       para prosseguir.




                        FIGURA 2.4 – SELEÇÃO DE JSF PROJECT DO PLUG-IN JBOSS TOOLS




       Na próxima 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 início algumas páginas em JSF). Clique no
       botão Next para prosseguir.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
16   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA




                        FIGURA 2.5 – DETERMINANDO O NOME, VERSÃO E TEMPLATE DO PROJETO JSF




       Na terceira etapa será necessário adicionar um servidor ao Eclipse IDE. Clique
       no botão New, em Runtime. Na caixa de diálogo New Server Runtime expanda
       Apache e selecione Apache Tomcat v6.0. Clique no botão Next para prosseguir.




                                     FIGURA 2.6 – SELEÇÃO DO APACHE TOMCAT 6



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
O JAVASERVER FACES   23




                       FIGURA 2.16 – CONFIRMAÇÃO DO JAR DE DEPENDÊNCIA DO PROJETO




       UM PRIMEIRO CONTATO COM JAVASERVER FACES
       Se você não tem base de conhecimento no JavaServer Faces, aqui será a sua linha
       de partida. O projeto JavaServer Faces de ambas as ferramentas, Eclipse e NetBe-
       ans, já contém funcionalidades e essas podem ser testadas imediatamente. Porém,
       vamos estudá-los através de alterações específicas para que você compreenda o
       que está acontecendo.



       AS PÁGINAS INICIAIS DOS PROJETOS
       O JavaServer Faces não é iniciado imediatamente pelo contêiner Servlet, como
       o Tomcat, o que significa que precisamos de uma página inicial que redirecione
       para a página JSF.

       É esse o papel da página index.jsp, no projeto criado pelo Eclipse IDE e forwar-
       dToJSF.jsp, criada no projeto do NetBeans IDE. Essas páginas são encontradas na
       view Package e na janela Projects do Eclipse e NetBeans respectivamente.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
24   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       Em ambas as situações, você tem a tag JSP <jsp:forward /> e a página para a
       qual irá direcionar no atributo page.

       Na configuração de ambas as páginas a serem redirecionadas, nos projetos das
       respectivas IDEs, a extensão .jsf será utilizada nas páginas JSF dos projetos (confi-
       gurada pelo web.xml).




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




       O DIRETÓRIO WEB-INF
       No diretório WEB-INF você encontra o arquivo web.xml (deployment descriptor)
       padrão, com a adição da configuração JSF e outro arquivo, chamado de faces-
       config.xml. No NetBeans, você também pode acessar esses arquivos através do
       diretório Configuration Files.

       Em ambas as ferramentas, a edição dos arquivos podem ser tanto visuais como
       pelo XML.



       LISTAGEM 2.1 – O ARQUIVO WEB.XML
       …
       <!-- Faces Servlet -->
        <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>


Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
O JAVASERVER FACES   27




                        FIGURA 2.19 – PÁGINA GERADA COM RESULTADO APÓS SUBMISSÃO




       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 página com o texto
       JavaServer Faces renderizado pelo componente que possui.




                            FIGURA 2.20 – RESULTADO DA PÁGINA JSF RENDERIZADA




       ALTERANDO OS PROJETOS DAS FERRAMENTAS
       O projeto criado inicialmente em cada uma das ferramentas, através de templa-
       tes, possui o objetivo nobre de dar um “primeiro empurrão” para seu desenvol-
       vimento com as mesmas. Porém, por utilizar assistentes, é evidente que você não
       aprenderá sobre o funcionamento do JSF, e nem é a idéia 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 vídeo demonstrativo da aplicação
O JAVASERVER FACES   35


       Primeiramente, você tem um elemento chamado de <managed-bean />, que
       configura o nome do bean que será acessado pelas páginas JSF e, o nome da
       classe utilizada do exemplo, chamada de Controle. Por fim, esse bean, que irá
       controlar as páginas, possui um escopo, configurado no caso como session.

       No elemento <navigation-rule />, você tem um sub-elemento chamado de
       <from-view-id/>, que determina a página de partida na sua aplicação.

       O elemento <navigation-case /> determina qual a página deverá ser exibida, partin-
       do da configurada em <from-view-id/>. Caso receba uma mensagem, seja de suces-
       so ou de falha, o elemento <from-outcome /> é acionado, verificando-se a palavra
       existente entre esse elemento. A página que será exibida é determinada através do
       elemento <to-view-id />, que indica a navegação para onde o browser irá.




             FIGURA 2.25 – REPRESENTAÇÃO VISUAL DO ARQUIVO FACES-CONFIG.XML PELO ECLIPSE E NETBEANS



       O FORMULÁRIO
       Para que essas regras funcionem, primeiro você tem que criar a página que sub-
       meterá os dados digitados. Essa página também será responsável por mostrar um
       erro, caso ocorra, ao usuário.

          • 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 diálogo New File
          JSP, digite trabComJSF no campo Name e selecione o item JSFBasePage, em
          Template. Clique em Finish para completar. O Eclipse IDE, através do plug-in
          JBoss Tools, adicionará a base da página com as diretivas taglibs configuradas
          para o JSF.



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
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
       <?xml version=”1.0” encoding=”UTF-8”?>
       <Context path=”/ProjECommerce”>
        <Resource auth=”Container”
            driverClassName=”com.mysql.jdbc.Driver”
            maxActive=”20” maxIdle=”10” maxWait=”-1”
            name=”jdbc/dataSource”
            password=”integrator”
            type=”javax.sql.DataSource”
            url=”jdbc:mysql://localhost:3306/ecommerce”
            username=”edson”/>
       </Context>



       As configurações nele propostas são utilizadas tanto para a criação do contexto do
       projeto, através do atributo path do elemento <Context/>, como também para a
       conexão com um banco de dados, visto no elemento <Resource/>.



        ATENÇÃO: Informações adicionais de como trabalhar com pool de conexões
        são mostradas no Apêndice A contido no CD-ROM anexo ao livro.




       CONHECENDO MELHOR O JAVASERVER FACES
       Agora que você já fez sua primeira aplicação em JSF, é mais fácil de entender
       os serviços que o framework oferece ao desenvolvedor. Como você pôde ver,
       o framework JSF é responsável por interagir com o usuário (cliente), e fornece
       ferramentas para criar uma apresentação visual, a aplicação lógica e a lógica de
       negócios de uma aplicação Web. Porém, o escopo de JSF é restringido à camada
       de apresentação. A persistência de banco de dados e outras conexões de back-
       end estão fora do escopo de JSF.


Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 3

                                      FACELETS
       JavaServer Faces é muito bom para desenvolver aplicações Web, porém, ainda
       assim, exige-se do desenvolvedor o conhecimento das tags JSF, o que atrapalha o
       designer de páginas em sua construção. A saída seria utilizar um sistema de tem-
       plates simples que não exigisse mudanças no uso de (X)HTML e se integrasse ao
       framework sem maiores alterações.

       Para esse caso, temos Facelets, um framework de templates JavaServer Faces, ba-
       seado em alguns princípios simples, que transforma tags (X)HTML em páginas JSF,
       sem a necessidade de utilização total de suas tags.

       Nesse capítulo você aprenderá a trabalhar com Facelets através das IDEs, criando
       um pequeno projeto de exemplo.



       COMO O FACELETS TRABALHA?
       O Facelets trabalha criando uma árvore de objetos UIComponent e interliga o
       conteúdo completamente com as requisições processadas pelo ciclo de vida JSF.
       Através dessa ligação com JSF, o Facelets incorpora numerosas características ami-
       gáveis ao desenvolvedor. Isso torna possível o trabalho com templates, importan-
       tíssimo para uma reutilização de layouts no desenvolvimento de páginas Web e
       até o uso de HTML com injeção de atributos que se transformam em componen-
       tes JSF.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
54    DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       Graças ao Facelets, podemos ter como vantagens sobre a construção de páginas JSF:

            • Criação de uma árvore de objetos UIComponent e conteúdo entrelaçado
            completamente com o processo de ciclo de vida do JavaServer Faces;

            • É mais rápido, pois não utiliza o engine do JSP para transformar em Servlets;

            • Suporte a templates reutilizáveis, aumentando a produtividade na criação de
            numerosas páginas, criando uma base padrão;

            • Integração 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 injeção de componentes JSF com um simples atributo jsfc;

            • Erros mais amigáveis e com maior precisão;

            • Eliminação de tags JSF como <f:view/> e <f:subview/>.



       Graças a essas integrações, as aplicações podem ser escritas para serem visualiza-
       das em uma interface CSS.


        NOTA: Os layouts que trabalham com CSS é um novo paradigma em torno do
        desenvolvimento de páginas Web, tornando-as mais leves e com o uso intensi-
        vo de folhas de estilos (CSS), menos tabelas e seguindo as especificações W3C,
        não se prendendo a somente um browser.




       ONDE BAIXAR O FACELETS
       Você pode baixar o Facelets no endereço oficial https://facelets.dev.java.net/.

       Na parte inferior do site, há o link downloadable from here. O arquivo necessário
       para trabalhar com Facelets é jsf-facelets.jar. Porém, dentro do arquivo compac-
       tado, você possui outros arquivos no diretório lib, que também são importantes
       ao seu funcionamento.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
62      DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


         </navigation-case>
        </navigation-rule>
        <navigation-rule>
         <from-view-id>/cadastrados.xhtml</from-view-id>
         <navigation-case>
             <from-outcome>cadastro</from-outcome>
             <to-view-id>/cadastro.xhtml</to-view-id>
        </navigation-case>
        </navigation-rule>
       ...



       A página cadastrados.xhtml será exibida quando houver a string cadastrados. E
       cadastro.xhtml será exibida quando houver a string cadastro.




                                           FIGURA 3.3 – NAVEGAÇÃO DAS PÁGINAS




       O ARQUIVO WEB.XML
       Para ter uma aplicação Web utilizando Facelets funcionando, é necessário tam-
       bém adicionar alguns elementos no arquivo web.xml.

       A principal informação 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 vídeo demonstrativo da aplicação
FACELETS   71




                       FIGURA 3.6 – RESULTADO FINAL DAS PÁGINAS FACELETS RENDERIZADAS




       A API DO FACELETS
       A API do Facelets, contido no pacote com.sun.facelets, consiste de três classes
       abstratas ( Facelet, FaceletFactory e FaceletContext) e duas interfaces (Facele-
       tHandler e TemplateClient). Cada uma das três classes abstratas expõem os mé-
       todos de uma classe implementada padrão, contida no pacote com.sun.facelets.
       impl. A DefaultFacelet é a que deriva de Facelet; DefaultFaceletFactory deriva
       de FaceletFactory e DefaultFaceletContext deriva de FaceletContext. Em con-
       traste, a interface FaceletHandler é implementada por mais de trinta classes ma-
       nipuladoras. Basicamente, isto ocorre porque a instância de Handler é específica
       para o componente que está manipulando. A interface TemplateClient é imple-
       mentada por CompositionHandler e DecorateHandler.



       A API DO FACELETS EM AÇÃO
       Para melhor compreender o Facelets, é importante saber como ocorre à interação
       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 Apresentação e
       Renderizar a Resposta.


Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
PARTE 2

                      DESENVOLVENDO O
                      SITE E-COMMERCE


Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 4

                         JPA COM HIBERNATE
       Por anos a persistência de dados foi um tópico problemático por entre os desen-
       volvedores Java. A palavra portabilidade era algo fora de alcance, principalmente
       porque um banco de dados, em muitos casos, tem um dialeto próprio. Eis que
       surgem os ORMs que tentam fechar o buraco existente na construção de aplica-
       ções que exijam portabilidade total. Dentre os mais famosos, temos o Hibernate,
       que se tornou referência no meio do desenvolvimento.

       Porém, com o Java EE 5, através da especificação do EJB3, na introdução 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 platafor-
       ma Java. Com isso, o ORM Hibernate passou a ser um provedor de persistência
       que, se for necessário, pode ser substituído por outro sem que ocorram mudan-
       ças na comunicação entre a aplicação e o ORM.

       Neste capítulo, você aprenderá a mapear suas entidades persistentes utilizando a
       JPA integrando com o Hibernate.



       O MODELO DE DADOS
       Para construir a aplicação Web e-commerce, teremos cinco simples tabelas ini-
       cialmente. Do ponto de vista administrativo da aplicação, haverá uma área fecha-
       da, 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 vídeo demonstrativo da aplicação
80   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       No site, para o público em geral, teremos os produtos sendo exibidos e suas res-
       pectivas categorias, ao qual poderemos visualizar um ou vários desses produtos,
       assim como filtrá-los por sua categoria (resumidamente falando). Assim que cria-
       do o carrinho de compras, no fechamento do pedido, um usuário se cadastrará
       (tabela usuários) para então, fechar o pedido (esse usuário deverá estar logado).
       O código do usuário e dados de pagamento são armazenados na tabela pedidos.
       A quantidade comprada, bem como os produtos adquiridos são armazenados na
       tabela itens_pedido. Um pedido, como já sabe, deve ter diversos produtos adqui-
       ridos. Isso significa que, na prática, 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 JDBC
       Sendo 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 atenção de quem desenvolve em Java.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
JPA COM HIBERNATE   91




                   FIGURA 4.4 – A BIBLIOTECA DE USUÁRIO HIBERNATE CONFIGURADA NO ECLIPSE IDE




        NOTA: Com a biblioteca Hibernate criada, você não precisará repetir os pas-
        sos novamente para criar uma biblioteca de usuário, 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 botão Add Li-
       brary. Na caixa de dialogo Add Library selecione User Library e clique em Next.
       Selecione Hibernate e clique no botão OK.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
92   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       ADICIONANDO A BIBLIOTECA JDBC AO PROJETO DO ECLIPSE IDE
       Repita os mesmos passos que foram necessários para criar e adicionar a biblioteca
       do Hibernate, porém adicionando nesse caso a biblioteca JDBC do MySQL.



       NO NETBEANS IDE
       No NetBeans IDE, vá ao menu Tools>Libraries. Na caixa de diálogo Library
       Manager clique no botão New Library. No diálogo New Library digite Hibernate
       em Library Name e confirme. Selecione, assim como no Eclipse IDE, todos os
       arquivos JARs existentes do Hibernate, no diretório 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 vídeo demonstrativo da aplicação
JPA COM HIBERNATE   93


       Com o direito do mouse em Libraries, no seu projeto, através da janela Projects,
       selecione o item Add Library no menu de contexto. Na caixa de diálogo Add
       Library selecione o item Hibernate e MySQL JDBC Driver (com Ctrl) e clique no
       botão Add Library.



       CRIANDO AS ENTIDADES PERSISTENTES
       As classes mostradas a seguir serão 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 vídeo demonstrativo da aplicação
104     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       ENTENDENDO OS ARQUIVOS CRIADOS
       Cada objeto de entidade persistente possui diversas anotações. Cada anotação
       tem um significado na JPA, como você já viu em @Table, @Id e @Column, já
       citado anteriormente.

       Mas existem outras anotações, que estão listadas na Tabela 4.1 a seguir:



       TABELA 4.1 - ANOTAÇÕES MAIS COMUNS DA JPA

        ANOTAÇÃO                  DESCRIÇÃO
        @Entity                   A entidade. Indica que essa classe é uma entidade (entity bean), que nada mais é
                                  do que um POJO, representando um objeto de negócio. Sem a definição de um
                                  parâmetro adicional, é assumido que o valor padrão será o nome da classe.
        @Table                    Mapeia o nome da tabela. Caso não seja utilizado o parâmetro name, o valor
                                  padrão assumido é o nome da classe.
        @Id                       O identificador da entidade. Normalmente se refere à chave primária da tabela
                                  relacional.
        @GeneratedValue           Define que terá seus identificadores automaticamente gerados. Isso é chamado
                                  de geração de id e é especificado por essa anotação.
        @Column                   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 utilização dessa anotação com o atributo
                                  name se faz necessário nesse caso, uma vez que existem campos de nomes dife-
                                  rentes no modelo relacional com relação à classe.
        @Temporal                 São tipos baseados em informações armazenadas relativas ao tempo. A lista de
                                  tipos temporais incluem três 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 anotação inclui um atributo chamado de TemporalType com um
                                  valor enumerado. Esses valores são: DATE, TIME e TIMESTAMP para repre-
                                  sentar os tipos de java.sql.
        @Lob                      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 anotação atua com esse
                                  propósito, que são vistos em campos do tipo TEXT, BLOB e outros existentes
                                  no MySQL.
        @OneToMany                Define uma relação de “um-para-muitos” do utilizado em banco de dados rela-
                                  cional. Possui um atributo chamado mappedBy para definir o atributo da outra
                                  Entidade no qual é referenciado.
        @ManyToOne                Define uma relação de “muitos-para-um” do utilizado em banco de dados rela-
                                  cional.
        @JoinColumn               São usadas para especificar a coluna que contém a chave estrangeira de cada
                                  relacionamento, os conhecidos Inner Joins de um relacionamento SQL.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
JPA COM HIBERNATE     113




            FIGURA 4.9 – CONFIGURAÇÃO FINAL PARA A CRIAÇÃO 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 vídeo demonstrativo da aplicação
JPA COM HIBERNATE   115




                        FIGURA 4.11 – SELEÇÃO DO HIBERNATE CONSOLE CONFIGURATION




          4. Na segunda etapa, selecione JPA em Type e digite ecommerce em Persis-
          tence unit. Clique na guia Classpath e adicione a biblioteca JDBC do MySQL
          através do botão Add External JARS;

          5. Finalize o assistente clicando no botão Finish.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
JPA COM HIBERNATE   121


       CRIANDO ENTIDADES COM DALI JPA TOOLS
       O projeto Dali JPA Tools é um dos diversos plug-ins fornecidos pela Fundação
       Eclipse, que vem já instalado na versão do Eclipse utilizada neste livro.

       Essa ferramenta possui suporte a JPA, contendo views que auxiliam no mapea-
       mento entre propriedades e colunas, geração de relacionamentos, além de forne-
       cer ferramentas para a geração 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 diálogo New o item JPA>JPA Project.
       Clique em Next para prosseguir. Chame o projeto de Model3 e clique no botão
       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 diálogo 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 CONEXÃO




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
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, através do plug-in Dali JPA Tools, o NetBeans não consegue
       criar uma entidade a partir de uma tabela sem chave primária. Clique no botão
       Next para prosseguir.




                               FIGURA 4.28 – SELEÇÃO DAS TABELAS NO BANCO DE DADOS




       Na última etapa do assistente, temos a criação das entidades a partir das tabelas.
       Clique no botão Create Persistence Unit para gerar um arquivo persistence.xml.
       Na caixa de diálogo Create Persistence Unit digite ecommece em Persistence
       Unit Name e confirme no botão Create.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 5

                       O SPRING COM A JPA
                        E TESTES UNITÁRIOS
       O Spring Framework é uma das diversas soluções criadas pela comunidade Java,
       com o objetivo de amenizar a complexidade de que a plataforma traz para o de-
       senvolvimento, principalmente no de aplicações Web. Com o intuito de combater
       os antigos EJBs, que antes da versão 3, eram complexos de se trabalhar, o Spring
       se popularizou rapidamente entre os desenvolvedores Java por ser adaptável a
       bibliotecas e padrões existentes.

       Mesmo com o lançamento do EJB 3, muitas aplicações Web são pequenas, não
       exigindo um servidor de aplicações web completo, rodando em contêineres Ser-
       vlet. Por sua vez, os contêineres Servlets possuem limitações impostas, como o
       trabalho com EJB, e outras situações que, através do Spring, podem ser supridas
       facilmente.

       Como uma de suas características marcantes, o Spring fornece injeção de depen-
       dências e uma fácil integração com outros frameworks como o Hibernate, a JPA e
       também com o JSF, possibilitando que seu código se torne mais fácil de gerir.

       Neste capítulo, você utilizará o Spring com anotações para trabalhar em conjunto
       com a JPA, criando um DAO genérico para a aplicação e-commerce, trabalhando
       com injeções de dependências, e fará os testes unitários com as anotações ofere-
       cidas pelo Spring. Por fim, aprenderá a configurar um arquivo Log4j para melhor
       visualizar a saída executada pelo Hibernate para depuração.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
O SPRING COM A JPA E TESTES UNITÁRIOS   147




                 FIGURA 5.5 – SELEÇÃO DE UMA OPÇÃO EM CREATE A NEW SPRING BEAN DEFINITION FILE




       Coloque na perspectiva Java EE através do menu Window > Open Perspective
       > Other.

       Clique com o direito do mouse sobre o projeto e selecione o item Properties.
       Na caixa de diálogo Properties for Model, selecione Spring > Beans Support e
       clique no botão 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 diálogo New File, vá até
       Other>Spring XML Configuration File e clique em Next. Na segunda etapa, di-
       gite applicationContext (diferente do Eclipse IDE, não há necessidade de colocar
       a extensão) e clique no botão Next.


Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
148   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       Na última etapa do assistente, em Spring namespaces, selecione a opção tx –
       http://www.springframework.org/schema/tx-2.5.xsd e clique no botão Finish.




                             FIGURA 5.6 – SELEÇÃO DE UMA OPÇÃO EM SPRING NAMESPACES




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



        OBSERVAÇÃO: Os editores das IDEs, para o arquivo XML de configuração do
        Spring, funcionam perfeitamente com o atalho Ctrl + Space nas definições
        das classes no bean.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
158   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       JUnit é projetado para testar seu código e é composto por métodos assertivos que
       podem testar várias condições. É possível construir testes com JUnit usando os
       seguintes métodos:


       • assertEquals(a, b) - Testa se a é igual b. (a e b são valores primitivos ou tem
       que ter um método equals para propósitos de comparação).

       • 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, não se referem a um objeto idêntico.

       • 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 idêntico.

       • assertTrue(a) - Testa se a é true, onde a é um valor booleano.




              FIGURA 5.11 – RESULTADOS DO TESTE UNITÁRIO REALIZADO NO ECLIPSE IDE E NO NETBEANS IDE




       OUTRAS CLASSES DE TESTES UNITÁRIOS
       Você pode fazer outras classes para testes unitários. Porém, um caso importante
       para testes unitários é o de pedidos. Podemos criar um teste simulando um car-
       rinho de compras com um usuário existente de modo a salvar essas informações
       nas tabelas pedidos e itens_pedido, que representam o armazenamento da com-
       pra efetuada pelo cliente.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 6

           A ÁREA ADMINISTRATIVA – PARTE 1
       A primeira parte da área administrativa do site será composta pelas páginas que
       farão o cadastro, alteração, exclusão e visualização de produtos e categorias, ao
       qual estarão disponíveis nas páginas do site e-commerce.

       Neste capítulo 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, além de conhecer as anotações do
       Spring 2.5 para integração com o JavaServer Faces 1.2.



       CRIANDO O PROJETO WEB
       O projeto Web que será criado é o que você utilizará até o final deste livro. Ele
       deve ser capacitado para trabalhar com JSF e Facelets, além de incorporar as bi-
       bliotecas 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 opção FaceletsBlankWi-
       thoutLibs em Template. Finalize o assistente quando terminar.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
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 TRINIDAD
       O Apache MyFaces Trinidad é um conjunto de componentes personalizados que
       trabalham com o JavaServer Faces, estendendo características não suportadas
       pelo framework.

       Para baixar o Apache Trinidad, entre no endereço:


       http://myfaces.apache.org/trinidad/index.html




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
A ÁREA ADMINISTRATIVA – PARTE 1   177




                     FIGURA 6.7 – AS PALETAS DO APACHE TRINIDAD ADICIONADAS AO ECLIPSE




        NOTA: É possível personalizar ainda mais, porém foge do escopo do livro.



       CONFIGURANDO O SPRING FRAMEWORK
       No 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 anterior-
       mente no Capítulo 5, na IDE que está utilizando.

       Selecione a opção tx – http://www.springframework.org/schema/tx e context –
       http://www.springframework.org/schema/context. Conclua pelo botão Finish.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
A ÁREA ADMINISTRATIVA – PARTE 1   207


       A Listagem 6.11 exibe o componente JSF <h:dataTable/>, que gera a tag (X)HTML
       <table/> preenchida, carregando todos os dados encontrados no método getTo-
       dos() da classe CategoriaController. Para isso, foi configurado o atributo value
       chamando esse método. O atributo var possui um valor, chamado de item, que
       será distribuído por cada coluna da tabela, colocando o nome do campo que será
       exibido.

       No componente <h:dataTable/>, cada coluna é representada por <h:colu-
       mn />, que gera a tag (X)HTML <tr/>. As tags <th> são geradas por <f:facet
       name=”header”> e as tags <td/> pela simples adição do componente que vai
       ser usado, que no caso é <h:outputText/> e também <h:commandLink/>.

       Há duas tags <h:commandLink/>, uma responsável por chamar o formulário
       para edição, através do método editar(), de CategoriaController, e o outro para
       excluir, chamando excluir() da mesma classe.



        ATENÇÃO: Um detalhe importante é que a exclusão não possui confirmação;
        portanto, cuidado.




       CRIANDO AS PÁGINAS PARA OS PRODUTOS
       A página de formulário de produtos é muito parecida com a de categorias, porém,
       essa possui mais tags JSF e uma tag do Apache Trinidad para renderizar o campo
       file. A Listagem 6.12 exibe o formulário.




                                FIGURA 6.11 – O CADASTRO DE PRODUTOS




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
A ÁREA ADMINISTRATIVA – PARTE 1   211


       de quantos caracteres são permitidos no campo.

       Para o campo de cadastro de preço, foi adicionada a tag <f:convertNumber />,
       que converte o valor digitado para o número conforme a localização 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, ma-
       xFractionDigits, com o valor 2, indicando o número máximo de casas decimais.
       Caso ocorra um erro nessa conversão, 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 é <tr:
       inputFile/> Essa tag possui o atributo value como as demais, onde você deter-
       mina o atributo da classe ProdutoController para ser utilizada. Mas lembre-se, o
       tipo desse atributo, para esse componente, na classe, deve ser org.apache.myfa-
       ces.trinidad.model.UploadedFile.




                           FIGURA 6.12 – A EXIBIÇÃO DOS PRODUTOS CADASTRADOS




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 7

                   AS PÁGINAS DO LADO CLIENTE
       A capacidade de navegar pelos bens e serviços de um site e-commerce é um dos
       requisitos básicos para os sites Web em uma empresa B2C. As características que
       serão implantadas serão à base da funcionalidade inicial de um site do tipo.

       Neste capítulo, você vai criar a classe responsável por gerenciar o front-end do site,
       além de desenvolver o design utilizando Facelets com técnicas de layout CSS.



       CRIANDO O BEAN DE CONTROLE DA LOJA
       Para trabalhar com a loja, você deverá criar uma classe separada. Isso porque na
       loja, o JavaServer Faces, junto ao Facelets, terá sua navegação via método GET.
       Essa característica é importante para que seja possível guardar o endereço de
       um determinado produto e também para ser identificado facilmente através de
       buscadores3.

       Crie uma classe chamada de LojaController no pacote br.com.integrator.con-
       troller e altere-a como mostrado na Listagem 7.1 a seguir.




       3
         Atualmente, o trabalho com a URL e a navegação por GET tem passado por transformações. Recomendo a leitura
       a respeito de REST.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
222     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       Para construir o layout, antes, faça os seguintes passos:


             1. Pegue no CD-ROM, anexo ao livro, os diretórios imagens/site e css, conti-
             dos no projeto-fonte;

             2. Coloque-os na raiz da sua aplicação: WebContent no Eclipse ou Web Pa-
             ges no NetBeans.



        NOTA: A criação dos estilos do site está fora do escopo pretendido por este
        livro.




                               FIGURA 7.1 – O LAYOUT DA PÁGINA FINAL EM FUNCIONAMENTO




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 8

                   O CARRINHO DE COMPRAS
       Um dos principais pontos de um site de comércio eletrônico é o seu carrinho de
       compras. Os usuários de um site de comércio eletrônico podem construir seus
       pedidos nessa área, selecionando e adicionando vários produtos em seus pedidos.
       Há também quem o chame de cesta de compras, cesta ou apenas carrinho. Em
       inglês, costumamos ver esse processo sendo descrito como “shopping bag”, “sho-
       pping cart” ou somente “cart”.

       Embora não importe como você o chame, o que mais importa seja a origem de
       seu nome, que surgiu devido à similaridade do processo que faríamos se estivés-
       semos em um mercado ou loja, onde colocamos vários produtos em uma cesta,
       sacola ou carrinho.

       Neste capítulo, você vai criar um carrinho de compras no site de comércio ele-
       trônico, podendo visualizar os produtos, editar a quantidade e excluir, além de
       calcular o total do pedido.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
258      DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       A PÁGINA DO CARRINHO
       Você vai criar uma página 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 página chamada de carrinho.xhtml e altere como mostrado na Lista-
       gem 8.4 a seguir.



       LISTAGEM 8.4 – A PÁGINA CARRINHO.XHTML
       ...
       <ui:composition template=”template/template.xhtml”>


             <ui:define name=”titulo”>
              Carrinho de compras
             </ui:define>


             <ui:define name=”conteudo”>
             <div id=”cart”>
              <c:choose>



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 9

                      FINALIZANDO A COMPRA
       Quando o usuário termina de escolher tudo que deseja comprar, inicia o processo
       de pagamento. Esse processo é feito através da entrada em uma área especial,
       com um nome de usuário único e uma senha. Porém, para que isso ocorra, esse
       mesmo usuário deve estar devidamente cadastrado no site, evitando assim frau-
       des. Neste capítulo, você vai definir a segurança para a entrada na área de usuá-
       rio, incluindo o formulário para seu cadastro e login, para que esse possa realizar
       a finalização da compra.



       CONTROLANDO A ENTRADA DO USUÁRIO
       A entrada do usuário é controlada por uma classe que será responsável pela verifi-
       cação do cadastro, sua respectiva entrada ou pelo cadastro de um novo usuário.

       Para início, você vai criar a classe UsuarioController no pacote br.com.integra-
       tor.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 vídeo demonstrativo da aplicação
280     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


                    id=”enviar” value=”Logar”/>
                  <input jsfc=”h:commandButton” type=”submit”
                        action=”#{usuarioController.novoUsuario}”
                        immediate=”true”
                        id=”novo” value=”Novo Usuário”/>
              </fieldset>
             </div>


         </ui:define>


       </ui:composition>
       …



       Embora o formulário para entrar na área de usuário seja igual a qualquer outro
       feito até o momento no livro, há uma pequena mudança para exibir as mensagens
       globais do formulário.


       <span jsfc=”h:messages” globalOnly=”true”></span>


       Enquanto cada campo possui uma mensagem personalizada, a tag JSF <h:messa-
       ges/> exibe todas as mensagens lançadas pelo formulário, inclusive as que perten-
       cem aos campos obrigatórios. Para forçar a exibição de apenas mensagens globais,
       e não locais, utilize o atributo globalOnly= “true”.




                                FIGURA 9.1 – A PÁGINA PARA SE LOGAR NA ÁREA DO USUÁRIO




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
284     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


                      id=”confirmar” value=”Confirmar”/>


              </fieldset>
             </div>


         </ui:define>


       </ui:composition>
       …



       Observe que na página do formulário, o campo de cadastro de e-mail está com
       o atributo readonly contendo uma expressão EL, que verifica se não é vazio o
       atributo email de Usuario, acessado por usuarioController. Se for, ele não per-
       mite preencher esse campo. Lembre-se da explicação da classe UsuarioController
       (Listagem 9.1), quando você estiver logado, significa que o formulário será para
       atualização, porém, não há uma verificação na classe para determinar se o e-mail
       não está sendo duplicado com outro usuário.




                              FIGURA 9.2 – O FORMULÁRIO CADASTRANDO UM NOVO USUÁRIO



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
300   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       Com a tag JSF <f:validator/> você configura o validador, chamando-o pela ID
       configurada no arquivo faces-config.xml, utilizando o atributo validatorId.




                      FIGURA 9.5 – A MENSAGEM PADRÃO CRIADA NO VALIDADOR ENTRANDO EM AÇÃO




       Se você não gostar da mensagem padrão criada no validador, pode alterá-la dire-
       tamente na tag JSF, com o atributo validatorMessage.


       <h:inputText id=”ccNumero”
       value=”#{usuarioController.pedido.ccNumero}”
       required=”true”
       validatorMessage=”Formato: 9999-9999-9999-9999,com ‘-’ ou espaço”>


       VALIDANDO PELO BEAN
       Uma forma muito simples de fazer a validação de entrada de dados, em um cam-
       po de forma personalizada, é através 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 digitação.



Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 10

                  ENVIANDO E-MAIL PELO SITE
       Em qualquer site de comércio eletrônico, os usuários podem se comunicar com
       a empresa por e-mail, através de uma área de contato, assim como, também,
       podem receber informações por e-mail, como em uma mala-direta (e-mail ma-
       rketing), até a confirmação de um pedido efetuado.

       Neste capítulo você aprenderá a enviar e-mail de forma simples, utilizando um
       dos recursos do Spring Framework.



       CONFIGURANDO O PROJETO PARA ENVIO DE E-MAIL
       Antes de começar, você vai precisar de duas bibliotecas para envio de e-mail:
       mail.jar e activation.jar.

       Baixe o JavaMail no endereço http://java.sun.com/products/javamail/index.
       html. Sua versão está em 1.4.1 no momento em que o livro é escrito.

       Baixe também o JavaBeans Activation Framework, que se encontra, no momen-
       to em que o livro é escrito, na versão 1.1.

       Crie uma biblioteca de usuário 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 vídeo demonstrativo da aplicação
312     DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


             </fieldset>
         </div>
       </ui:define>
       …




                                    FIGURA 10.3 – A PÁGINA DE CONTATO RENDERIZADA




       Crie outra página chamada de enviado.xhtml e coloque em seu conteúdo um
       texto para informar o usuário do envio.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
CAPÍTULO 11

           A ÁREA ADMINISTRATIVA – PARTE 2
       Muitos usuários fazem compras diariamente em um site de comércio eletrônico,
       gerando uma grande quantidade de informações a serem geridas.

       Na segunda parte da área administrativa, você adicionará uma pesquisa pelos
       pedidos realizados no site através de datas, marcando assim um período a ser vi-
       sualizado, criando uma query JP-QL mais complexa. Em seguida, fará um relatório
       usando JasperReports com o iReport, com a finalidade de utilizar os objetos dessa
       consulta e gerar um PDF formatado para impressão.

       Por fim, você irá garantir a entrada na área administrativa para somente pessoas
       autorizadas, trabalhando com PhaseListener do JavaServer Faces para controlar a
       sessão.



       CRIANDO A CONSULTA
       Como a aplicação possui a parte de finalização de pedidos na classe Usuario-
       Controller, será essa que você usará para criar a consulta de pedidos para o
       administrador.




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
334       DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA


       Altere no template também, adicionando um link que chama essa página, como
       mostra o trecho a seguir:


       <li>
       <a jsfc=”h:commandLink”
                action=”mostrarCompras” immediate=”true”>
                Exibir Compras
       </a>
       </li>




                                FIGURA 11.1 – A PÁGINA DE EXIBIÇÃO DE COMPRAS COM PAGINAÇÃO



       ADICIONANDO UM RELATÓRIO
       Para concluir as funcionalidades do administrador, é interessante adicionar a
       capacidade de gerar relatórios. Existem diversos programas que trabalham com
       relatórios em Java: na comunidade Open Source temos o JasperReports e sua
       ferramenta visual iReport, da empresa JasperSoft, e o Eclipse Birt, da fundação
       Eclipse.

       Criar relatórios em Java é um assunto que exige um livro4 e a idéia aqui é apren-
       der a exibir um relatório simples, com os resultados vindos da pesquisa criada na
       página que exibe as compras efetuadas. O relatório será gerado em JasperReports,
       por ser o mais popular, sendo que você usará o iReport para desenhá-lo visual-
       mente.
       4
           Recomendo a leitura do livro Dominando Relatórios JasperReports com iReport, de minha autoria




Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
A ÁREA ADMINISTRATIVA – PARTE 2   339




                      FIGURA 11.3 – A JANELA DO IREPORT EM UM RELATÓRIO VAZIO NO LINUX



       Cada um destes painéis, espalhados ao redor de seu relatório, possuem caracte-
       rísticas e propriedades de certos elementos que, também, podem ser acessíveis
       de outra forma. Esses painéis, numerados na Figura 11.3, são explicados na lista
       a seguir:

          (1) File – Exibe os relatórios abertos. O acesso é feito com um duplo clique
          sobre o relatório que deseja exibir na janela. O ícone apresentado, ao lado do
          nome do relatório, nesse painel, também indica modificação no arquivo. Caso
          esteja com dois riscos, é porque houve alteração e não foi salvo. Alternativa-
          mente, você pode acessar outro relatório aberto através do menu Window.

          (2) Document structure – Exibe os parâmetros, campos da tabela da sua
          query, variáveis pré-definidas e criadas, além das bands do relatório.

          (3) Properties – Exibe a propriedade de acordo com o elemento selecionado
          em sua estrutura (Estrutura do documento). As propriedades, de cada ele-
          mento do relatório, também podem ser acessíveis facilmente com o botão
          direito do mouse sobre o mesmo, selecionando o item Properties no menu
          de contexto.


Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
354   DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA




                     FIGURA 11.10 – RELATÓRIO COM SAÍDA NO NAVEGADOR DENTRO DO ECLIPSE IDE




       TRABALHANDO COM PHASELISTENER PARA O LOGIN ADMINISTRATIVO
       No site já criado, você utilizou um filtro para impedir a entrada de pessoas não
       autorizadas na área do usuário, necessitando de um login. Porém, como já foi dito
       naquele capítulo, há mais de uma forma para se fazer isso. A segunda forma que
       será mostrada utilizará o próprio recurso do JavaServer Faces, através do uso de
       PhaseListener. A idéia 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 vídeo demonstrativo da aplicação

Mais conteúdo relacionado

Mais procurados

Aplicações java com net beans
Aplicações java com net beansAplicações java com net beans
Aplicações java com net beansLucas Cruz
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJoão Longo
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateZarathon Maia
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDr. Spock
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 

Mais procurados (18)

Aplicações java com net beans
Aplicações java com net beansAplicações java com net beans
Aplicações java com net beans
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
Prime Faces
Prime FacesPrime Faces
Prime Faces
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a Objetos
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
 
Jsf
JsfJsf
Jsf
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Netbeans
NetbeansNetbeans
Netbeans
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
1409243945064
14092439450641409243945064
1409243945064
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 

Destaque

Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Dr. Spock
 
Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageDr. Spock
 
Integracao Seam Spring
Integracao Seam SpringIntegracao Seam Spring
Integracao Seam SpringDr. Spock
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Dr. Spock
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemDr. Spock
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 

Destaque (9)

Spring Web Flow
Spring Web FlowSpring Web Flow
Spring Web Flow
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
 
Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific Language
 
Integracao Seam Spring
Integracao Seam SpringIntegracao Seam Spring
Integracao Seam Spring
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2
 
O framework spring
O framework springO framework spring
O framework spring
 
3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 

Semelhante a Desenvolvendo um e-commerce com JSF, Spring e Hibernate

2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-62902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6marcelrodriguess
 
Criando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberansCriando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberansMony Pinheiro
 
Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0MoisesInacio
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoRegis Machado
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Apostila de programacao java
Apostila de programacao javaApostila de programacao java
Apostila de programacao javaCleber Costa
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de javaGenique
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesRodrigo Peleias
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogVinícius Thiengo
 
Java web fj21-- apostila da caelum
Java web fj21-- apostila da caelumJava web fj21-- apostila da caelum
Java web fj21-- apostila da caelumAgenor Neto
 
Curso de Java - Antonio Alves - Aula 01
Curso de Java - Antonio Alves - Aula 01Curso de Java - Antonio Alves - Aula 01
Curso de Java - Antonio Alves - Aula 01Antonio Alves
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento websilvio_sas
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogVinícius Thiengo
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)Mario Sergio
 

Semelhante a Desenvolvendo um e-commerce com JSF, Spring e Hibernate (20)

2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-62902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
 
Java e net beans
Java e net beans Java e net beans
Java e net beans
 
Criando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberansCriando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberans
 
Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Apostila de programacao java
Apostila de programacao javaApostila de programacao java
Apostila de programacao java
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de java
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do Blog
 
Java web fj21-- apostila da caelum
Java web fj21-- apostila da caelumJava web fj21-- apostila da caelum
Java web fj21-- apostila da caelum
 
Curso de Java - Antonio Alves - Aula 01
Curso de Java - Antonio Alves - Aula 01Curso de Java - Antonio Alves - Aula 01
Curso de Java - Antonio Alves - Aula 01
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
Apostila java
Apostila javaApostila java
Apostila java
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do Blog
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)
 

Último

ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Caixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarCaixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarIedaGoethe
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 

Último (20)

ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Caixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarCaixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogar
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 

Desenvolvendo um e-commerce com JSF, Spring e Hibernate

  • 1.
  • 2. EDSON GONÇALVES Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 3. AGRADECIMENTOS Primeiramente quero agradecer à minha família, pelo apoio e compreensão da minha ausência, que de certa forma tornou-se uma rotina. Agradeço o apoio da Editora Ciência Moderna, em especial ao editor Paulo André P Marques, pelo incentivo e crédito em mais este livro. . Um agradecimento especial a todos aqueles que me ajudaram na conclusão desta obra, opinando, lendo e criticando certos pontos para uma melhor elaboração dos textos. Embora não pareça, demoraria mais que os sete meses necessários a sua conclusão. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 4. INTRODUÇÃO Trabalhar em aplicações Web utilizando tecnologia Java não é uma tarefa fácil. Entretanto, ao redor do mundo, muitos desenvolvedores já criaram diversas bi- bliotecas que auxiliam nessa tarefa, gerando o que chamamos de frameworks. No geral, um framework é um conjunto de bibliotecas com práticas gerais encap- suladas que, juntas, criam uma forma mais simples de desenvolver alguma tarefa. Dentre os diversos frameworks existentes para a criação de aplicações Web, te- mos o JavaServer Faces. JavaServer Faces é o framework oficial da especificação Java EE e é desenhado para o desenvolvimento de aplicações Web baseado em componentes (compo- nent based). Na prática, desenvolver com esse framework torna fácil o trabalho na construção de aplicações através de componentes de interface com o usuário (GUI), e sua capacidade de conectar esses componentes a objetos de negócios é relativamente fácil. Este livro, embora pequeno, foi elaborado pensando no desenvolvedor iniciante em JavaServer Faces, que deseja aprender a integrar suas aplicações com tecnolo- gias conhecidas, como o Spring Framework, Hibernate e JPA, usando um exemplo completo, embora pequeno, de um site fictício de comércio eletrônico. QUEM DEVE LER ESTE LIVRO? Este livro foi escrito para desenvolvedores com experiência em desenvolvimento Web utilizando a linguagem Java, mas que não possuem muito conhecimento sobre o framework JavaServer Faces. Além disso, embora sejam apresentados os conceitos fundamentais sobre as fer- ramentas de desenvolvimento aplicadas no decorrer do livro, é muito importante que o usuário já tenha tido um contato inicial com as mesmas. É desejável também um conhecimento sobre o acesso e utilização de um banco de dados. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 5. VI DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6 ANTES DE COMEÇAR Em algumas partes deste livro, você encontrará um símbolo que o ajudará a en- tender o código proposto e desenvolvido, mostrado a seguir: ... - Indica que acima ou abaixo contém código, mas que não está sendo exibido por não ter sido alterado ou por ser importações, e o mesmo pode ser acessado pelo CD-ROM, anexo ao livro. OS SOFTWARES REQUERIDOS Os aplicativos criados neste livro não exigem software proprietário. Portanto, ao longo dos capítulos, você não só aprenderá como usá-los, mas também onde en- contrá-los na Internet, caso precise de uma atualização. Esse livro não está focado especialmente em um sistema operacional, já que a linguagem Java é multiplataforma. HARDWARE REQUERIDO Uma boa configuração de hardware se faz necessária para trabalhar com aplica- ções escritas em Java. Um computador para rodar bem o Eclipse IDE ou NetBeans IDE deve ter as seguintes configurações para uma confortável utilização, segundo o autor: Processador: Pentium 4 ou similar (recomendo um Dual Core ou Core 2 Duo) Memória: 1 GB de RAM mínimo (recomendo 2GB de RAM) HD: 10GB de espaço livre Monitor: 17 polegadas ou superior Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 6. INTRODUÇÃO VII CÓDIGOS DOS EXEMPLOS CRIADOS NO LIVRO Todos os códigos dos exemplos criados no livro, bem como as IDEs e outros, se encontram no CD-ROM anexo. Caso não encontre algum exemplo, entre em contato com o autor pelo site http:// www.integrator.com.br. VISÃO GERAL DOS CAPÍTULOS Com um conteúdo completamente ilustrado, o livro possui diversas imagens es- palhadas por todos os capítulos, sempre focando em detalhes quando necessário. Ao longo do livro, são dadas dicas para uma melhor compreensão do que está sendo feito, sempre com informações técnicas. Para uma melhor compreensão, aqui você tem uma sinopse dos capítulos encon- trados no decorrer do livro. PARTE 1 – AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETS Composta por três capítulos, essa parte introduz o iniciante nos ambientes de trabalho envolvidos no decorrer do livro. Além de possuir informações de teor prático e técnico para o início 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-COMMERCE Composta por oito capítulos, essa parte trabalha do início ao fim com o desenvol- vimento da aplicação foco do livro. Em seu longo, diversos tópicos serão aborda- dos, entre eles: • A configuração da JPA em conjunto com o Hibernate; • Como mapear as entidades que serão utilizadas; • A integração com o Spring Framework e suas anotações; Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 7. VIII DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6 • Geração de DAOs genéricos para minimizar a quantidade de códigos no desenvolvimento; • Criação de testes unitários com JUnit em conjunto com o Spring Framework e anotações; • Segurança na aplicação com Filtros Servlet e JSF PhaseListener; • A utilização de plug-ins Eclipse como JBoss Tools, Hibernate Tools, Projeto Dali JPA Tools e Spring IDE; • O trabalho com Hibernate e Spring Framework através do NetBeans IDE; • O envio de e-mails utilizando os recursos do Spring Framework; • O desenvolvimento de um relatório JasperReports com iReport utilizando objetos; ATENÇÃO: Em caso de erro, recomendo a visualização 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 vídeo demonstrativo da aplicação
  • 8. SUMÁRIO PARTE 1 - AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETS ...............................................1 Capítulo 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 Capítulo 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 aplicação em um arquivo WAR ..............................................39 Como subir sua aplicação no servidor .........................................................39 Conhecendo melhor o JavaServer Faces ...........................................................40 As tags padrões de JavaServer Faces..................................................................42 JSF Tags HTML ...........................................................................................43 JSF Tags Core .............................................................................................46 Ciclo de Vida do JSF .........................................................................................48 Resumo ............................................................................................................51 Capítulo 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 vídeo demonstrativo da aplicação
  • 9. X DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6 Segurança no acesso aos arquivos .xhtml ....................................................72 Resumo ............................................................................................................75 PARTE 2 - DESENVOLVENDO O SITE E-COMMERCE ....................................................................77 Capítulo 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 usuários ................................................................................86 Confirmando o novo usuário ......................................................................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 aplicação ....................................................................................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 persistência ............................................................101 Java Annotations, o que é isso? .................................................................102 A API de persistência ................................................................................103 Entendendo os arquivos criados................................................................104 O relacionamento ....................................................................................105 O arquivo persistence.xml ........................................................................108 Modelando a aplicação 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 vídeo demonstrativo da aplicação
  • 10. SUMÁRIO XI Capítulo 5 - O Spring com a JPA e Testes unitários................................................131 O Spring ........................................................................................................132 Onde baixar a última versão .....................................................................132 Adicionando o suporte ao Spring Framework em seu projeto ....................133 Criando o DAO genérico................................................................................135 O Spring atuando no DAO .......................................................................141 A simplicidade para estender a outros DAOs ...........................................144 Configurando o Spring através de applicationContext.xml .........................145 Criando testes unitários ............................................................................151 O Log4j ....................................................................................................161 Pronto para a próxima etapa ..........................................................................165 Resumo ..........................................................................................................165 Capítulo 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 página modelo da área administrativa .......................................198 Criando as páginas para as Categorias .......................................................202 Criando as páginas para os Produtos .........................................................207 Resumo ..........................................................................................................214 Capítulo 7 - As páginas do lado cliente .................................................................215 Criando o bean de controle da loja ................................................................215 Adicionando a classe no Managed Bean ...................................................221 O template das páginas ............................................................................221 A página principal do site .........................................................................229 O que é EL?..............................................................................................234 A página detalhes do produto ...................................................................237 A página de resultados da pesquisa ...........................................................240 A página de produtos da categoria ............................................................243 Resumo ..........................................................................................................246 Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 11. XII DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA6 Capítulo 8 - O carrinho de compras .....................................................................247 Os beans para o carrinho ...............................................................................248 Controlando o carrinho ............................................................................253 A página do carrinho ................................................................................258 Configurando o Managed Bean e a navegação..........................................264 Resumo ..........................................................................................................266 Capítulo 9 - Finalizando a compra........................................................................267 Controlando a entrada do usuário ..................................................................267 Configurando a classe ..............................................................................278 Criando as páginas ...................................................................................278 Criando a navegação ...............................................................................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 número do cartão ................................................295 Configurando o validador .........................................................................298 Aplicando o validador...............................................................................299 Validando pelo Bean ................................................................................300 Resumo ..........................................................................................................302 Capítulo 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 navegação das páginas do contato .........................................................313 Criando um e-mail de confirmação ao pedido efetuado ...........................314 Resumo ..........................................................................................................316 Capítulo 11 - A área administrativa – Parte 2 ........................................................317 Criando a consulta....................................................................................317 A página que trabalhará com a consulta....................................................320 Paginação de resultados ............................................................................324 Paginando os resultados ............................................................................329 Criando a navegação para a página ..........................................................333 Adicionando um relatório...............................................................................334 O iReport .................................................................................................335 Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 12. SUMÁRIO XIII Criando o relatório ...................................................................................336 Chamando o relatório através da aplicação ...............................................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 Apêndice A: Pool de Conexões ............................................................. CD-ROM Apêndice B: O MySQL.......................................................................... CD-ROM Apêndice C: Suporte a Facelets no NetBeans ........................................ CD-ROM Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 13. PARTE 1 AMBIENTES DE TRABALHO, JAVASERVER FACES E FACELETS Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 14. CAPÍTULO 1 PREPARANDO SEU AMBIENTE DE TRABALHO O trabalho com desenvolvimento Web em Java é penoso sem um bom ambiente de desenvolvimento. Entretanto, há duas ferramentas muito conhecidas no desen- volvimento Java que serão abordadas para a utilização ao longo do livro: Eclipse IDE com plug-ins e NetBeans IDE. Este capítulo está baseado na instalação e con- figuração de ambos os ambientes. O ECLIPSE IDE O Eclipse IDE, chamado por muitos de Plataforma Eclipse, é considerada por uma grande maioria de desenvolvedores Java como a melhor ferramenta para desen- volvimento dessa linguagem. Desenvolvido inicialmente pela IBM e liberado o código fonte para a comuni- dade, criando a fundação Eclipse (Eclipse Foundation), sua grande vantagem, na atualidade, está no uso de seus assistentes de código e grande gama de plug-ins, podendo se adaptar a qualquer situação de desenvolvimento. Até o momento em que esse livro está sendo escrito, a versão atual e estável do Eclipse é a 3.3. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 15. 8 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA O NETBEANS IDE O NetBeans IDE é uma ferramenta criada em Java Swing e com várias opções em pacotes para que você baixe a versão que melhor se encaixa em seu trabalho; cada uma contém módulos de instalação diferentes para cada necessidade do desenvolvedor. OBTENDO E INSTALANDO O NETBEANS IDE O site oficial do NetBeans IDE se encontra no endereço http://www.netbeans. org. Assim que você entra no site oficial do NetBeans, há um grande botão escrito Download NetBeans IDE. Dando um clique nesse botão, você irá até a página de downloads da IDE. En- quanto este livro é escrito, o NetBeans IDE se encontra na versão 6.0 como estável e 6.1 como desenvolvimento. Para o livro, será adotada a versão 6.1. FIGURA 1.7 – DOWNLOAD DO PACOTE NECESSÁRIO PARA O DESENVOLVIMENTO COM APLICAÇÕES WEB A instalação do NetBeans IDE é tranqüila, quando utilizamos assistente, tanto no sistema operacional Windows como em Linux, basta executar o arquivo baixado. No Linux, apenas dê a permissão necessária para que seja possível a execução do arquivo binário: shell# chmod +x netbeans-6.1rc1-javaee-linux.sh Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 16. CAPÍTULO 2 O JAVASERVER FACES JavaServer Faces é o framework de aplicações Web Java oficial da Sun Microsyste- ms. Esse framework foi desenhado para simplificar o desenvolvimento de aplica- ções Web, através do conceito baseado em componentes (component based). Na prática, a autilização de JavaServer Faces torna fácil o desenvolvimento através de componentes de interface de usuário (GUI), possibilitando a conexão desses componentes a objetos de negócios de forma simplificada. Neste capítulo, você aprenderá a criar e configurar um projeto utilizando JavaSer- ver Faces, além de compreender o básico necessário trabalhar com o framework. BAIXANDO O JAVASERVER FACES Para trabalhar com o JavaServer Faces, primeiramente será preciso configurar os arquivos e a estrutura necessária. O contêiner Servlet usado para este livro será o Tomcat 6 que, por padrão, não possui suporte direto ao JavaServer Faces, ou seja, não contém as bibliotecas ne- cessárias para o desenvolvimento com o mesmo. Para baixar o JSF, faça download no endereço http://java.sun.com/j2ee/javaser- verfaces/download.html. Como você irá trabalhar com JavaServer Faces voltado para um contêiner compatível com a tecnologia Java EE 5, você deverá baixar a versão JSF 1.2, a utilizada nesse livro. Ao baixar o arquivo, simplesmente descom- pacte em um diretório de sua escolha. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 17. O JAVASERVER FACES 13 Para torná-los disponíveis em sua aplicação é simples: basta colocar esses arquivos listados no diretório lib, encontrado em WEB-INF de sua aplicação Web. Porém, como vamos utilizar um ambiente de trabalho baseado em IDE, será mais fácil essa configuração. JAVASERVER FACES NO NETBEANS IDE O NetBeans IDE já possui configurado por padrão as bibliotecas necessárias para desenvolver uma aplicação JavaServer Faces. Para criar um projeto com JavaServer Faces, vá ao menu File e clique no item New Project. Na caixa de diálogo New Project selecione o item Web em Categories e Web Application em Projects. Clique no botão Next. Na segunda etapa você define o nome do projeto, em Project Name e a localiza- ção, em Project Location. Digite TrabComJSF e clique no botão Next. FIGURA 2.1 – NOME DO PROJETO E LOCAL Na terceira etapa você seleciona o Apache Tomcat em Server. Clique no botão Next. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 18. 14 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA FIGURA 2.2 – SELEÇÃO 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 botão Finish para concluir. FIGURA 2.3 – SELEÇÃO DO FRAMEWORK JAVASERVER FACES E CONFIGURAÇÃO INICIAL O NetBeans IDE abrirá automaticamente uma página em JSF criada pelo assisten- te através do template existente. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 19. O JAVASERVER FACES 15 JAVASERVER FACES NO ECLIPSE IDE O Eclipse IDE possui mais opções de criação de páginas com o framework Java- Server Faces devido a utilização do plug-in JBoss Tools. Vá ao menu File em New e selecione Project. Na caixa de diálogo New Project expanda JBoss Tools Web > JSF e selecione JSF Project. Clique no botão Next para prosseguir. FIGURA 2.4 – SELEÇÃO DE JSF PROJECT DO PLUG-IN JBOSS TOOLS Na próxima 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 início algumas páginas em JSF). Clique no botão Next para prosseguir. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 20. 16 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA FIGURA 2.5 – DETERMINANDO O NOME, VERSÃO E TEMPLATE DO PROJETO JSF Na terceira etapa será necessário adicionar um servidor ao Eclipse IDE. Clique no botão New, em Runtime. Na caixa de diálogo New Server Runtime expanda Apache e selecione Apache Tomcat v6.0. Clique no botão Next para prosseguir. FIGURA 2.6 – SELEÇÃO DO APACHE TOMCAT 6 Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 21. O JAVASERVER FACES 23 FIGURA 2.16 – CONFIRMAÇÃO DO JAR DE DEPENDÊNCIA DO PROJETO UM PRIMEIRO CONTATO COM JAVASERVER FACES Se você não tem base de conhecimento no JavaServer Faces, aqui será a sua linha de partida. O projeto JavaServer Faces de ambas as ferramentas, Eclipse e NetBe- ans, já contém funcionalidades e essas podem ser testadas imediatamente. Porém, vamos estudá-los através de alterações específicas para que você compreenda o que está acontecendo. AS PÁGINAS INICIAIS DOS PROJETOS O JavaServer Faces não é iniciado imediatamente pelo contêiner Servlet, como o Tomcat, o que significa que precisamos de uma página inicial que redirecione para a página JSF. É esse o papel da página index.jsp, no projeto criado pelo Eclipse IDE e forwar- dToJSF.jsp, criada no projeto do NetBeans IDE. Essas páginas são encontradas na view Package e na janela Projects do Eclipse e NetBeans respectivamente. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 22. 24 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA Em ambas as situações, você tem a tag JSP <jsp:forward /> e a página para a qual irá direcionar no atributo page. Na configuração de ambas as páginas a serem redirecionadas, nos projetos das respectivas IDEs, a extensão .jsf será utilizada nas páginas JSF dos projetos (confi- gurada pelo web.xml). FIGURA 2.17 – O PROJETO JSF NO ECLIPSE IDE E NO NETBEANS IDE O DIRETÓRIO WEB-INF No diretório WEB-INF você encontra o arquivo web.xml (deployment descriptor) padrão, com a adição da configuração JSF e outro arquivo, chamado de faces- config.xml. No NetBeans, você também pode acessar esses arquivos através do diretório Configuration Files. Em ambas as ferramentas, a edição dos arquivos podem ser tanto visuais como pelo XML. LISTAGEM 2.1 – O ARQUIVO WEB.XML … <!-- Faces Servlet --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 23. O JAVASERVER FACES 27 FIGURA 2.19 – PÁGINA GERADA COM RESULTADO APÓS SUBMISSÃO 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 página com o texto JavaServer Faces renderizado pelo componente que possui. FIGURA 2.20 – RESULTADO DA PÁGINA JSF RENDERIZADA ALTERANDO OS PROJETOS DAS FERRAMENTAS O projeto criado inicialmente em cada uma das ferramentas, através de templa- tes, possui o objetivo nobre de dar um “primeiro empurrão” para seu desenvol- vimento com as mesmas. Porém, por utilizar assistentes, é evidente que você não aprenderá sobre o funcionamento do JSF, e nem é a idéia 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 vídeo demonstrativo da aplicação
  • 24. O JAVASERVER FACES 35 Primeiramente, você tem um elemento chamado de <managed-bean />, que configura o nome do bean que será acessado pelas páginas JSF e, o nome da classe utilizada do exemplo, chamada de Controle. Por fim, esse bean, que irá controlar as páginas, possui um escopo, configurado no caso como session. No elemento <navigation-rule />, você tem um sub-elemento chamado de <from-view-id/>, que determina a página de partida na sua aplicação. O elemento <navigation-case /> determina qual a página deverá ser exibida, partin- do da configurada em <from-view-id/>. Caso receba uma mensagem, seja de suces- so ou de falha, o elemento <from-outcome /> é acionado, verificando-se a palavra existente entre esse elemento. A página que será exibida é determinada através do elemento <to-view-id />, que indica a navegação para onde o browser irá. FIGURA 2.25 – REPRESENTAÇÃO VISUAL DO ARQUIVO FACES-CONFIG.XML PELO ECLIPSE E NETBEANS O FORMULÁRIO Para que essas regras funcionem, primeiro você tem que criar a página que sub- meterá os dados digitados. Essa página também será responsável por mostrar um erro, caso ocorra, ao usuário. • 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 diálogo New File JSP, digite trabComJSF no campo Name e selecione o item JSFBasePage, em Template. Clique em Finish para completar. O Eclipse IDE, através do plug-in JBoss Tools, adicionará a base da página com as diretivas taglibs configuradas para o JSF. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 25. 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 <?xml version=”1.0” encoding=”UTF-8”?> <Context path=”/ProjECommerce”> <Resource auth=”Container” driverClassName=”com.mysql.jdbc.Driver” maxActive=”20” maxIdle=”10” maxWait=”-1” name=”jdbc/dataSource” password=”integrator” type=”javax.sql.DataSource” url=”jdbc:mysql://localhost:3306/ecommerce” username=”edson”/> </Context> As configurações nele propostas são utilizadas tanto para a criação do contexto do projeto, através do atributo path do elemento <Context/>, como também para a conexão com um banco de dados, visto no elemento <Resource/>. ATENÇÃO: Informações adicionais de como trabalhar com pool de conexões são mostradas no Apêndice A contido no CD-ROM anexo ao livro. CONHECENDO MELHOR O JAVASERVER FACES Agora que você já fez sua primeira aplicação em JSF, é mais fácil de entender os serviços que o framework oferece ao desenvolvedor. Como você pôde ver, o framework JSF é responsável por interagir com o usuário (cliente), e fornece ferramentas para criar uma apresentação visual, a aplicação lógica e a lógica de negócios de uma aplicação Web. Porém, o escopo de JSF é restringido à camada de apresentação. A persistência de banco de dados e outras conexões de back- end estão fora do escopo de JSF. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 26. CAPÍTULO 3 FACELETS JavaServer Faces é muito bom para desenvolver aplicações Web, porém, ainda assim, exige-se do desenvolvedor o conhecimento das tags JSF, o que atrapalha o designer de páginas em sua construção. A saída seria utilizar um sistema de tem- plates simples que não exigisse mudanças no uso de (X)HTML e se integrasse ao framework sem maiores alterações. Para esse caso, temos Facelets, um framework de templates JavaServer Faces, ba- seado em alguns princípios simples, que transforma tags (X)HTML em páginas JSF, sem a necessidade de utilização total de suas tags. Nesse capítulo você aprenderá a trabalhar com Facelets através das IDEs, criando um pequeno projeto de exemplo. COMO O FACELETS TRABALHA? O Facelets trabalha criando uma árvore de objetos UIComponent e interliga o conteúdo completamente com as requisições processadas pelo ciclo de vida JSF. Através dessa ligação com JSF, o Facelets incorpora numerosas características ami- gáveis ao desenvolvedor. Isso torna possível o trabalho com templates, importan- tíssimo para uma reutilização de layouts no desenvolvimento de páginas Web e até o uso de HTML com injeção de atributos que se transformam em componen- tes JSF. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 27. 54 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA Graças ao Facelets, podemos ter como vantagens sobre a construção de páginas JSF: • Criação de uma árvore de objetos UIComponent e conteúdo entrelaçado completamente com o processo de ciclo de vida do JavaServer Faces; • É mais rápido, pois não utiliza o engine do JSP para transformar em Servlets; • Suporte a templates reutilizáveis, aumentando a produtividade na criação de numerosas páginas, criando uma base padrão; • Integração 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 injeção de componentes JSF com um simples atributo jsfc; • Erros mais amigáveis e com maior precisão; • Eliminação de tags JSF como <f:view/> e <f:subview/>. Graças a essas integrações, as aplicações podem ser escritas para serem visualiza- das em uma interface CSS. NOTA: Os layouts que trabalham com CSS é um novo paradigma em torno do desenvolvimento de páginas Web, tornando-as mais leves e com o uso intensi- vo de folhas de estilos (CSS), menos tabelas e seguindo as especificações W3C, não se prendendo a somente um browser. ONDE BAIXAR O FACELETS Você pode baixar o Facelets no endereço oficial https://facelets.dev.java.net/. Na parte inferior do site, há o link downloadable from here. O arquivo necessário para trabalhar com Facelets é jsf-facelets.jar. Porém, dentro do arquivo compac- tado, você possui outros arquivos no diretório lib, que também são importantes ao seu funcionamento. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 28. 62 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/cadastrados.xhtml</from-view-id> <navigation-case> <from-outcome>cadastro</from-outcome> <to-view-id>/cadastro.xhtml</to-view-id> </navigation-case> </navigation-rule> ... A página cadastrados.xhtml será exibida quando houver a string cadastrados. E cadastro.xhtml será exibida quando houver a string cadastro. FIGURA 3.3 – NAVEGAÇÃO DAS PÁGINAS O ARQUIVO WEB.XML Para ter uma aplicação Web utilizando Facelets funcionando, é necessário tam- bém adicionar alguns elementos no arquivo web.xml. A principal informação 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 vídeo demonstrativo da aplicação
  • 29. FACELETS 71 FIGURA 3.6 – RESULTADO FINAL DAS PÁGINAS FACELETS RENDERIZADAS A API DO FACELETS A API do Facelets, contido no pacote com.sun.facelets, consiste de três classes abstratas ( Facelet, FaceletFactory e FaceletContext) e duas interfaces (Facele- tHandler e TemplateClient). Cada uma das três classes abstratas expõem os mé- todos de uma classe implementada padrão, contida no pacote com.sun.facelets. impl. A DefaultFacelet é a que deriva de Facelet; DefaultFaceletFactory deriva de FaceletFactory e DefaultFaceletContext deriva de FaceletContext. Em con- traste, a interface FaceletHandler é implementada por mais de trinta classes ma- nipuladoras. Basicamente, isto ocorre porque a instância de Handler é específica para o componente que está manipulando. A interface TemplateClient é imple- mentada por CompositionHandler e DecorateHandler. A API DO FACELETS EM AÇÃO Para melhor compreender o Facelets, é importante saber como ocorre à interação 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 Apresentação e Renderizar a Resposta. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 30. PARTE 2 DESENVOLVENDO O SITE E-COMMERCE Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 31. CAPÍTULO 4 JPA COM HIBERNATE Por anos a persistência de dados foi um tópico problemático por entre os desen- volvedores Java. A palavra portabilidade era algo fora de alcance, principalmente porque um banco de dados, em muitos casos, tem um dialeto próprio. Eis que surgem os ORMs que tentam fechar o buraco existente na construção de aplica- ções que exijam portabilidade total. Dentre os mais famosos, temos o Hibernate, que se tornou referência no meio do desenvolvimento. Porém, com o Java EE 5, através da especificação do EJB3, na introdução 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 platafor- ma Java. Com isso, o ORM Hibernate passou a ser um provedor de persistência que, se for necessário, pode ser substituído por outro sem que ocorram mudan- ças na comunicação entre a aplicação e o ORM. Neste capítulo, você aprenderá a mapear suas entidades persistentes utilizando a JPA integrando com o Hibernate. O MODELO DE DADOS Para construir a aplicação Web e-commerce, teremos cinco simples tabelas ini- cialmente. Do ponto de vista administrativo da aplicação, haverá uma área fecha- da, 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 vídeo demonstrativo da aplicação
  • 32. 80 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA No site, para o público em geral, teremos os produtos sendo exibidos e suas res- pectivas categorias, ao qual poderemos visualizar um ou vários desses produtos, assim como filtrá-los por sua categoria (resumidamente falando). Assim que cria- do o carrinho de compras, no fechamento do pedido, um usuário se cadastrará (tabela usuários) para então, fechar o pedido (esse usuário deverá estar logado). O código do usuário e dados de pagamento são armazenados na tabela pedidos. A quantidade comprada, bem como os produtos adquiridos são armazenados na tabela itens_pedido. Um pedido, como já sabe, deve ter diversos produtos adqui- ridos. Isso significa que, na prática, 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 JDBC Sendo 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 atenção de quem desenvolve em Java. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 33. JPA COM HIBERNATE 91 FIGURA 4.4 – A BIBLIOTECA DE USUÁRIO HIBERNATE CONFIGURADA NO ECLIPSE IDE NOTA: Com a biblioteca Hibernate criada, você não precisará repetir os pas- sos novamente para criar uma biblioteca de usuário, 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 botão Add Li- brary. Na caixa de dialogo Add Library selecione User Library e clique em Next. Selecione Hibernate e clique no botão OK. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 34. 92 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA ADICIONANDO A BIBLIOTECA JDBC AO PROJETO DO ECLIPSE IDE Repita os mesmos passos que foram necessários para criar e adicionar a biblioteca do Hibernate, porém adicionando nesse caso a biblioteca JDBC do MySQL. NO NETBEANS IDE No NetBeans IDE, vá ao menu Tools>Libraries. Na caixa de diálogo Library Manager clique no botão New Library. No diálogo New Library digite Hibernate em Library Name e confirme. Selecione, assim como no Eclipse IDE, todos os arquivos JARs existentes do Hibernate, no diretório 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 vídeo demonstrativo da aplicação
  • 35. JPA COM HIBERNATE 93 Com o direito do mouse em Libraries, no seu projeto, através da janela Projects, selecione o item Add Library no menu de contexto. Na caixa de diálogo Add Library selecione o item Hibernate e MySQL JDBC Driver (com Ctrl) e clique no botão Add Library. CRIANDO AS ENTIDADES PERSISTENTES As classes mostradas a seguir serão 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 vídeo demonstrativo da aplicação
  • 36. 104 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA ENTENDENDO OS ARQUIVOS CRIADOS Cada objeto de entidade persistente possui diversas anotações. Cada anotação tem um significado na JPA, como você já viu em @Table, @Id e @Column, já citado anteriormente. Mas existem outras anotações, que estão listadas na Tabela 4.1 a seguir: TABELA 4.1 - ANOTAÇÕES MAIS COMUNS DA JPA ANOTAÇÃO DESCRIÇÃO @Entity A entidade. Indica que essa classe é uma entidade (entity bean), que nada mais é do que um POJO, representando um objeto de negócio. Sem a definição de um parâmetro adicional, é assumido que o valor padrão será o nome da classe. @Table Mapeia o nome da tabela. Caso não seja utilizado o parâmetro name, o valor padrão assumido é o nome da classe. @Id O identificador da entidade. Normalmente se refere à chave primária da tabela relacional. @GeneratedValue Define que terá seus identificadores automaticamente gerados. Isso é chamado de geração de id e é especificado por essa anotação. @Column 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 utilização dessa anotação com o atributo name se faz necessário nesse caso, uma vez que existem campos de nomes dife- rentes no modelo relacional com relação à classe. @Temporal São tipos baseados em informações armazenadas relativas ao tempo. A lista de tipos temporais incluem três 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 anotação inclui um atributo chamado de TemporalType com um valor enumerado. Esses valores são: DATE, TIME e TIMESTAMP para repre- sentar os tipos de java.sql. @Lob 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 anotação atua com esse propósito, que são vistos em campos do tipo TEXT, BLOB e outros existentes no MySQL. @OneToMany Define uma relação de “um-para-muitos” do utilizado em banco de dados rela- cional. Possui um atributo chamado mappedBy para definir o atributo da outra Entidade no qual é referenciado. @ManyToOne Define uma relação de “muitos-para-um” do utilizado em banco de dados rela- cional. @JoinColumn São usadas para especificar a coluna que contém a chave estrangeira de cada relacionamento, os conhecidos Inner Joins de um relacionamento SQL. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 37. JPA COM HIBERNATE 113 FIGURA 4.9 – CONFIGURAÇÃO FINAL PARA A CRIAÇÃO 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 vídeo demonstrativo da aplicação
  • 38. JPA COM HIBERNATE 115 FIGURA 4.11 – SELEÇÃO DO HIBERNATE CONSOLE CONFIGURATION 4. Na segunda etapa, selecione JPA em Type e digite ecommerce em Persis- tence unit. Clique na guia Classpath e adicione a biblioteca JDBC do MySQL através do botão Add External JARS; 5. Finalize o assistente clicando no botão Finish. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 39. JPA COM HIBERNATE 121 CRIANDO ENTIDADES COM DALI JPA TOOLS O projeto Dali JPA Tools é um dos diversos plug-ins fornecidos pela Fundação Eclipse, que vem já instalado na versão do Eclipse utilizada neste livro. Essa ferramenta possui suporte a JPA, contendo views que auxiliam no mapea- mento entre propriedades e colunas, geração de relacionamentos, além de forne- cer ferramentas para a geração 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 diálogo New o item JPA>JPA Project. Clique em Next para prosseguir. Chame o projeto de Model3 e clique no botão 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 diálogo 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 CONEXÃO Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 40. 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, através do plug-in Dali JPA Tools, o NetBeans não consegue criar uma entidade a partir de uma tabela sem chave primária. Clique no botão Next para prosseguir. FIGURA 4.28 – SELEÇÃO DAS TABELAS NO BANCO DE DADOS Na última etapa do assistente, temos a criação das entidades a partir das tabelas. Clique no botão Create Persistence Unit para gerar um arquivo persistence.xml. Na caixa de diálogo Create Persistence Unit digite ecommece em Persistence Unit Name e confirme no botão Create. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 41. CAPÍTULO 5 O SPRING COM A JPA E TESTES UNITÁRIOS O Spring Framework é uma das diversas soluções criadas pela comunidade Java, com o objetivo de amenizar a complexidade de que a plataforma traz para o de- senvolvimento, principalmente no de aplicações Web. Com o intuito de combater os antigos EJBs, que antes da versão 3, eram complexos de se trabalhar, o Spring se popularizou rapidamente entre os desenvolvedores Java por ser adaptável a bibliotecas e padrões existentes. Mesmo com o lançamento do EJB 3, muitas aplicações Web são pequenas, não exigindo um servidor de aplicações web completo, rodando em contêineres Ser- vlet. Por sua vez, os contêineres Servlets possuem limitações impostas, como o trabalho com EJB, e outras situações que, através do Spring, podem ser supridas facilmente. Como uma de suas características marcantes, o Spring fornece injeção de depen- dências e uma fácil integração com outros frameworks como o Hibernate, a JPA e também com o JSF, possibilitando que seu código se torne mais fácil de gerir. Neste capítulo, você utilizará o Spring com anotações para trabalhar em conjunto com a JPA, criando um DAO genérico para a aplicação e-commerce, trabalhando com injeções de dependências, e fará os testes unitários com as anotações ofere- cidas pelo Spring. Por fim, aprenderá a configurar um arquivo Log4j para melhor visualizar a saída executada pelo Hibernate para depuração. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 42. O SPRING COM A JPA E TESTES UNITÁRIOS 147 FIGURA 5.5 – SELEÇÃO DE UMA OPÇÃO EM CREATE A NEW SPRING BEAN DEFINITION FILE Coloque na perspectiva Java EE através do menu Window > Open Perspective > Other. Clique com o direito do mouse sobre o projeto e selecione o item Properties. Na caixa de diálogo Properties for Model, selecione Spring > Beans Support e clique no botão 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 diálogo New File, vá até Other>Spring XML Configuration File e clique em Next. Na segunda etapa, di- gite applicationContext (diferente do Eclipse IDE, não há necessidade de colocar a extensão) e clique no botão Next. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 43. 148 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA Na última etapa do assistente, em Spring namespaces, selecione a opção tx – http://www.springframework.org/schema/tx-2.5.xsd e clique no botão Finish. FIGURA 5.6 – SELEÇÃO DE UMA OPÇÃO EM SPRING NAMESPACES No arquivo applicationContext.xml adicione as linhas mostradas a seguir, na Listagem 5.5. OBSERVAÇÃO: Os editores das IDEs, para o arquivo XML de configuração do Spring, funcionam perfeitamente com o atalho Ctrl + Space nas definições das classes no bean. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 44. 158 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA JUnit é projetado para testar seu código e é composto por métodos assertivos que podem testar várias condições. É possível construir testes com JUnit usando os seguintes métodos: • assertEquals(a, b) - Testa se a é igual b. (a e b são valores primitivos ou tem que ter um método equals para propósitos de comparação). • 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, não se referem a um objeto idêntico. • 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 idêntico. • assertTrue(a) - Testa se a é true, onde a é um valor booleano. FIGURA 5.11 – RESULTADOS DO TESTE UNITÁRIO REALIZADO NO ECLIPSE IDE E NO NETBEANS IDE OUTRAS CLASSES DE TESTES UNITÁRIOS Você pode fazer outras classes para testes unitários. Porém, um caso importante para testes unitários é o de pedidos. Podemos criar um teste simulando um car- rinho de compras com um usuário existente de modo a salvar essas informações nas tabelas pedidos e itens_pedido, que representam o armazenamento da com- pra efetuada pelo cliente. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 45. CAPÍTULO 6 A ÁREA ADMINISTRATIVA – PARTE 1 A primeira parte da área administrativa do site será composta pelas páginas que farão o cadastro, alteração, exclusão e visualização de produtos e categorias, ao qual estarão disponíveis nas páginas do site e-commerce. Neste capítulo 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, além de conhecer as anotações do Spring 2.5 para integração com o JavaServer Faces 1.2. CRIANDO O PROJETO WEB O projeto Web que será criado é o que você utilizará até o final deste livro. Ele deve ser capacitado para trabalhar com JSF e Facelets, além de incorporar as bi- bliotecas 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 opção FaceletsBlankWi- thoutLibs em Template. Finalize o assistente quando terminar. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 46. 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 TRINIDAD O Apache MyFaces Trinidad é um conjunto de componentes personalizados que trabalham com o JavaServer Faces, estendendo características não suportadas pelo framework. Para baixar o Apache Trinidad, entre no endereço: http://myfaces.apache.org/trinidad/index.html Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 47. A ÁREA ADMINISTRATIVA – PARTE 1 177 FIGURA 6.7 – AS PALETAS DO APACHE TRINIDAD ADICIONADAS AO ECLIPSE NOTA: É possível personalizar ainda mais, porém foge do escopo do livro. CONFIGURANDO O SPRING FRAMEWORK No 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 anterior- mente no Capítulo 5, na IDE que está utilizando. Selecione a opção tx – http://www.springframework.org/schema/tx e context – http://www.springframework.org/schema/context. Conclua pelo botão Finish. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 48. A ÁREA ADMINISTRATIVA – PARTE 1 207 A Listagem 6.11 exibe o componente JSF <h:dataTable/>, que gera a tag (X)HTML <table/> preenchida, carregando todos os dados encontrados no método getTo- dos() da classe CategoriaController. Para isso, foi configurado o atributo value chamando esse método. O atributo var possui um valor, chamado de item, que será distribuído por cada coluna da tabela, colocando o nome do campo que será exibido. No componente <h:dataTable/>, cada coluna é representada por <h:colu- mn />, que gera a tag (X)HTML <tr/>. As tags <th> são geradas por <f:facet name=”header”> e as tags <td/> pela simples adição do componente que vai ser usado, que no caso é <h:outputText/> e também <h:commandLink/>. Há duas tags <h:commandLink/>, uma responsável por chamar o formulário para edição, através do método editar(), de CategoriaController, e o outro para excluir, chamando excluir() da mesma classe. ATENÇÃO: Um detalhe importante é que a exclusão não possui confirmação; portanto, cuidado. CRIANDO AS PÁGINAS PARA OS PRODUTOS A página de formulário de produtos é muito parecida com a de categorias, porém, essa possui mais tags JSF e uma tag do Apache Trinidad para renderizar o campo file. A Listagem 6.12 exibe o formulário. FIGURA 6.11 – O CADASTRO DE PRODUTOS Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 49. A ÁREA ADMINISTRATIVA – PARTE 1 211 de quantos caracteres são permitidos no campo. Para o campo de cadastro de preço, foi adicionada a tag <f:convertNumber />, que converte o valor digitado para o número conforme a localização 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, ma- xFractionDigits, com o valor 2, indicando o número máximo de casas decimais. Caso ocorra um erro nessa conversão, 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 é <tr: inputFile/> Essa tag possui o atributo value como as demais, onde você deter- mina o atributo da classe ProdutoController para ser utilizada. Mas lembre-se, o tipo desse atributo, para esse componente, na classe, deve ser org.apache.myfa- ces.trinidad.model.UploadedFile. FIGURA 6.12 – A EXIBIÇÃO DOS PRODUTOS CADASTRADOS Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 50. CAPÍTULO 7 AS PÁGINAS DO LADO CLIENTE A capacidade de navegar pelos bens e serviços de um site e-commerce é um dos requisitos básicos para os sites Web em uma empresa B2C. As características que serão implantadas serão à base da funcionalidade inicial de um site do tipo. Neste capítulo, você vai criar a classe responsável por gerenciar o front-end do site, além de desenvolver o design utilizando Facelets com técnicas de layout CSS. CRIANDO O BEAN DE CONTROLE DA LOJA Para trabalhar com a loja, você deverá criar uma classe separada. Isso porque na loja, o JavaServer Faces, junto ao Facelets, terá sua navegação via método GET. Essa característica é importante para que seja possível guardar o endereço de um determinado produto e também para ser identificado facilmente através de buscadores3. Crie uma classe chamada de LojaController no pacote br.com.integrator.con- troller e altere-a como mostrado na Listagem 7.1 a seguir. 3 Atualmente, o trabalho com a URL e a navegação por GET tem passado por transformações. Recomendo a leitura a respeito de REST. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 51. 222 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA Para construir o layout, antes, faça os seguintes passos: 1. Pegue no CD-ROM, anexo ao livro, os diretórios imagens/site e css, conti- dos no projeto-fonte; 2. Coloque-os na raiz da sua aplicação: WebContent no Eclipse ou Web Pa- ges no NetBeans. NOTA: A criação dos estilos do site está fora do escopo pretendido por este livro. FIGURA 7.1 – O LAYOUT DA PÁGINA FINAL EM FUNCIONAMENTO Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 52. CAPÍTULO 8 O CARRINHO DE COMPRAS Um dos principais pontos de um site de comércio eletrônico é o seu carrinho de compras. Os usuários de um site de comércio eletrônico podem construir seus pedidos nessa área, selecionando e adicionando vários produtos em seus pedidos. Há também quem o chame de cesta de compras, cesta ou apenas carrinho. Em inglês, costumamos ver esse processo sendo descrito como “shopping bag”, “sho- pping cart” ou somente “cart”. Embora não importe como você o chame, o que mais importa seja a origem de seu nome, que surgiu devido à similaridade do processo que faríamos se estivés- semos em um mercado ou loja, onde colocamos vários produtos em uma cesta, sacola ou carrinho. Neste capítulo, você vai criar um carrinho de compras no site de comércio ele- trônico, podendo visualizar os produtos, editar a quantidade e excluir, além de calcular o total do pedido. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 53. 258 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA A PÁGINA DO CARRINHO Você vai criar uma página 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 página chamada de carrinho.xhtml e altere como mostrado na Lista- gem 8.4 a seguir. LISTAGEM 8.4 – A PÁGINA CARRINHO.XHTML ... <ui:composition template=”template/template.xhtml”> <ui:define name=”titulo”> Carrinho de compras </ui:define> <ui:define name=”conteudo”> <div id=”cart”> <c:choose> Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 54. CAPÍTULO 9 FINALIZANDO A COMPRA Quando o usuário termina de escolher tudo que deseja comprar, inicia o processo de pagamento. Esse processo é feito através da entrada em uma área especial, com um nome de usuário único e uma senha. Porém, para que isso ocorra, esse mesmo usuário deve estar devidamente cadastrado no site, evitando assim frau- des. Neste capítulo, você vai definir a segurança para a entrada na área de usuá- rio, incluindo o formulário para seu cadastro e login, para que esse possa realizar a finalização da compra. CONTROLANDO A ENTRADA DO USUÁRIO A entrada do usuário é controlada por uma classe que será responsável pela verifi- cação do cadastro, sua respectiva entrada ou pelo cadastro de um novo usuário. Para início, você vai criar a classe UsuarioController no pacote br.com.integra- tor.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 vídeo demonstrativo da aplicação
  • 55. 280 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA id=”enviar” value=”Logar”/> <input jsfc=”h:commandButton” type=”submit” action=”#{usuarioController.novoUsuario}” immediate=”true” id=”novo” value=”Novo Usuário”/> </fieldset> </div> </ui:define> </ui:composition> … Embora o formulário para entrar na área de usuário seja igual a qualquer outro feito até o momento no livro, há uma pequena mudança para exibir as mensagens globais do formulário. <span jsfc=”h:messages” globalOnly=”true”></span> Enquanto cada campo possui uma mensagem personalizada, a tag JSF <h:messa- ges/> exibe todas as mensagens lançadas pelo formulário, inclusive as que perten- cem aos campos obrigatórios. Para forçar a exibição de apenas mensagens globais, e não locais, utilize o atributo globalOnly= “true”. FIGURA 9.1 – A PÁGINA PARA SE LOGAR NA ÁREA DO USUÁRIO Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 56. 284 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA id=”confirmar” value=”Confirmar”/> </fieldset> </div> </ui:define> </ui:composition> … Observe que na página do formulário, o campo de cadastro de e-mail está com o atributo readonly contendo uma expressão EL, que verifica se não é vazio o atributo email de Usuario, acessado por usuarioController. Se for, ele não per- mite preencher esse campo. Lembre-se da explicação da classe UsuarioController (Listagem 9.1), quando você estiver logado, significa que o formulário será para atualização, porém, não há uma verificação na classe para determinar se o e-mail não está sendo duplicado com outro usuário. FIGURA 9.2 – O FORMULÁRIO CADASTRANDO UM NOVO USUÁRIO Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 57. 300 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA Com a tag JSF <f:validator/> você configura o validador, chamando-o pela ID configurada no arquivo faces-config.xml, utilizando o atributo validatorId. FIGURA 9.5 – A MENSAGEM PADRÃO CRIADA NO VALIDADOR ENTRANDO EM AÇÃO Se você não gostar da mensagem padrão criada no validador, pode alterá-la dire- tamente na tag JSF, com o atributo validatorMessage. <h:inputText id=”ccNumero” value=”#{usuarioController.pedido.ccNumero}” required=”true” validatorMessage=”Formato: 9999-9999-9999-9999,com ‘-’ ou espaço”> VALIDANDO PELO BEAN Uma forma muito simples de fazer a validação de entrada de dados, em um cam- po de forma personalizada, é através 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 digitação. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 58. CAPÍTULO 10 ENVIANDO E-MAIL PELO SITE Em qualquer site de comércio eletrônico, os usuários podem se comunicar com a empresa por e-mail, através de uma área de contato, assim como, também, podem receber informações por e-mail, como em uma mala-direta (e-mail ma- rketing), até a confirmação de um pedido efetuado. Neste capítulo você aprenderá a enviar e-mail de forma simples, utilizando um dos recursos do Spring Framework. CONFIGURANDO O PROJETO PARA ENVIO DE E-MAIL Antes de começar, você vai precisar de duas bibliotecas para envio de e-mail: mail.jar e activation.jar. Baixe o JavaMail no endereço http://java.sun.com/products/javamail/index. html. Sua versão está em 1.4.1 no momento em que o livro é escrito. Baixe também o JavaBeans Activation Framework, que se encontra, no momen- to em que o livro é escrito, na versão 1.1. Crie uma biblioteca de usuário 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 vídeo demonstrativo da aplicação
  • 59. 312 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA </fieldset> </div> </ui:define> … FIGURA 10.3 – A PÁGINA DE CONTATO RENDERIZADA Crie outra página chamada de enviado.xhtml e coloque em seu conteúdo um texto para informar o usuário do envio. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 60. CAPÍTULO 11 A ÁREA ADMINISTRATIVA – PARTE 2 Muitos usuários fazem compras diariamente em um site de comércio eletrônico, gerando uma grande quantidade de informações a serem geridas. Na segunda parte da área administrativa, você adicionará uma pesquisa pelos pedidos realizados no site através de datas, marcando assim um período a ser vi- sualizado, criando uma query JP-QL mais complexa. Em seguida, fará um relatório usando JasperReports com o iReport, com a finalidade de utilizar os objetos dessa consulta e gerar um PDF formatado para impressão. Por fim, você irá garantir a entrada na área administrativa para somente pessoas autorizadas, trabalhando com PhaseListener do JavaServer Faces para controlar a sessão. CRIANDO A CONSULTA Como a aplicação possui a parte de finalização de pedidos na classe Usuario- Controller, será essa que você usará para criar a consulta de pedidos para o administrador. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 61. 334 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA Altere no template também, adicionando um link que chama essa página, como mostra o trecho a seguir: <li> <a jsfc=”h:commandLink” action=”mostrarCompras” immediate=”true”> Exibir Compras </a> </li> FIGURA 11.1 – A PÁGINA DE EXIBIÇÃO DE COMPRAS COM PAGINAÇÃO ADICIONANDO UM RELATÓRIO Para concluir as funcionalidades do administrador, é interessante adicionar a capacidade de gerar relatórios. Existem diversos programas que trabalham com relatórios em Java: na comunidade Open Source temos o JasperReports e sua ferramenta visual iReport, da empresa JasperSoft, e o Eclipse Birt, da fundação Eclipse. Criar relatórios em Java é um assunto que exige um livro4 e a idéia aqui é apren- der a exibir um relatório simples, com os resultados vindos da pesquisa criada na página que exibe as compras efetuadas. O relatório será gerado em JasperReports, por ser o mais popular, sendo que você usará o iReport para desenhá-lo visual- mente. 4 Recomendo a leitura do livro Dominando Relatórios JasperReports com iReport, de minha autoria Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 62. A ÁREA ADMINISTRATIVA – PARTE 2 339 FIGURA 11.3 – A JANELA DO IREPORT EM UM RELATÓRIO VAZIO NO LINUX Cada um destes painéis, espalhados ao redor de seu relatório, possuem caracte- rísticas e propriedades de certos elementos que, também, podem ser acessíveis de outra forma. Esses painéis, numerados na Figura 11.3, são explicados na lista a seguir: (1) File – Exibe os relatórios abertos. O acesso é feito com um duplo clique sobre o relatório que deseja exibir na janela. O ícone apresentado, ao lado do nome do relatório, nesse painel, também indica modificação no arquivo. Caso esteja com dois riscos, é porque houve alteração e não foi salvo. Alternativa- mente, você pode acessar outro relatório aberto através do menu Window. (2) Document structure – Exibe os parâmetros, campos da tabela da sua query, variáveis pré-definidas e criadas, além das bands do relatório. (3) Properties – Exibe a propriedade de acordo com o elemento selecionado em sua estrutura (Estrutura do documento). As propriedades, de cada ele- mento do relatório, também podem ser acessíveis facilmente com o botão direito do mouse sobre o mesmo, selecionando o item Properties no menu de contexto. Visite o site www.integrator.com.br e veja um vídeo demonstrativo da aplicação
  • 63. 354 DOMINANDO JAVASERVER FACES E FACELETS UTILIZANDO SPRING 2.5, HIBERNATE E JPA FIGURA 11.10 – RELATÓRIO COM SAÍDA NO NAVEGADOR DENTRO DO ECLIPSE IDE TRABALHANDO COM PHASELISTENER PARA O LOGIN ADMINISTRATIVO No site já criado, você utilizou um filtro para impedir a entrada de pessoas não autorizadas na área do usuário, necessitando de um login. Porém, como já foi dito naquele capítulo, há mais de uma forma para se fazer isso. A segunda forma que será mostrada utilizará o próprio recurso do JavaServer Faces, através do uso de PhaseListener. A idéia 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 vídeo demonstrativo da aplicação