this document was created with prince, a great way of ... introduo 112 ... • jsf (javaserver...

Download This document was created with Prince, a great way of ...  Introduo 112 ... • JSF (JavaServer Faces):  um framework web baseado em Java que tem como ... Atualmente JavaServer Faces  a tecnologia do momento,

Post on 06-May-2018

216 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • www.princexml.comPrince - Non-commercial LicenseThis document was created with Prince, a great way of getting web content onto paper.

  • Java EE 7 com JSF, PrimeFaces e CDIpor Thiago Faria

    Edio de 24/12/2013

    2013 AlgaWorks Softwares, Treinamentos e Servios Ltda. Todos os direitosreservados.

    Nenhuma parte deste livro pode ser reproduzida ou transmitida em qualquer forma,seja por meio eletrnico ou mecnico, sem permisso por escrito da AlgaWorks,exceto para resumos breves em revises e anlises.

    AlgaWorks Softwares, Treinamentos e Servios Ltdawww.algaworks.comcontato@algaworks.com+55 (11) 3509-3100

    www.algaworks.com 2

  • http://www.algaworks.com/?utm_source=ebook-jsf&utm_medium=publicidade&utm_campaign=cursos-online

  • Sobre o autorThiago Faria de Andrade@ThiagoFAndrade

    Fundador, instrutor e consultor da AlgaWorks.Graduado em Sistemas de Informao e certificadocomo programador Java pela Sun. Iniciou seu interessepor programao em 1995, quando desenvolveu umsoftware para entretenimento e se tornou um dos mais

    populares no Brasil e outros pases de lngua portuguesa. J foi scio e trabalhou emoutras empresas de software como programador, gerente e diretor de tecnologia, masnunca deixou de programar.

    www.algaworks.com 4

    http://twitter.com/ThiagoFAndrade

  • Sumrio1 10Introduo ao desenvolvimento web

    1.1 10O que Java EE?1.2 11O protocolo HTTP1.3 13Desenvolvimento web com Java1.4 14Containers1.5 15Instalando o Apache Tomcat1.6 17Integrando o Eclipse com o Apache Tomcat1.7 20Apache Maven1.8 20Primeiro projeto web com Apache Maven

    2 30Persistncia de dados com JPA2.1 30O que persistncia?2.2 30Mapeamento Objeto Relacional (ORM)2.3 32Porque usar ORM?2.4 32Java Persistence API e Hibernate2.5 33Configurao de JPA e Hibernate com Maven2.6 34Criao do Domain Model2.7 36Implementao do equals() e hashCode()2.8 37Mapeamento bsico2.9 41O arquivo persistence.xml2.10 42Gerando as tabelas do banco de dados2.11 43Prximos passos

    3 44Introduo ao JSF3.1 44O que JavaServer Faces?3.2 45Principais componentes3.3 45Bibliotecas de componentes de terceiros3.4 46Escolhendo uma implementao de JSF

  • 3.5 47Adicionando JSF ao projeto Maven3.6 47Managed bean3.7 49Criando uma pgina XHTML3.8 52Ligando valores e aes com EL3.9 54Escopos de managed beans3.10 57Backing bean3.11 60Ciclo de vida3.12 62O arquivo faces-config.xml3.13 63O arquivo web.xml

    4 65Navegao4.1 65Introduo navegao4.2 65Navegao implcita4.3 66Navegao explcita

    5 68Componentes de interface5.1 68Bibliotecas5.2 69Cabealho e corpo da pgina5.3 69Formulrios5.4 70Propriedades comuns5.5 74Entrada de textos5.6 75Sada de textos5.7 77Imagens5.8 78Menus e caixas de listagem5.9 82Campos de checagem e botes rdio5.10 85Itens de seleo5.11 86Botes e links5.12 87Painis5.13 90Mensagens5.14 91Tabelas de dados

  • 5.15 96Arquivos JavaScript e CSS6 98Pgina de consulta de lanamentos

    6.1 98Criando EntityManager6.2 99Persistindo pessoas e lanamentos6.3 101Managed bean que consulta lanamentos6.4 102Pgina de resultado da consulta6.5 104O padro Repository

    7 106Templates com Facelets7.1 106Qual o problema de repetir?7.2 106Incluindo um cabealho e rodap7.3 109Criando um template7.4 110Usando o template

    8 112Converso e validao8.1 112Introduo8.2 114Conversores padro8.3 120Alternativas para definir conversores8.4 121Customizando mensagens de erro de converso8.5 124Validadores padro8.6 127Customizando mensagens de erros de validao8.7 128Criando conversores personalizados8.8 130Criando validadores personalizados

    9 132Pgina de cadastro de lanamento9.1 132Implementando o repositrio9.2 133Implementando as regras de negcio9.3 134Programando o managed bean de cadastro9.4 135Programando o conversor de Pessoa9.5 136Criando o formulrio de cadastro

    10 139Bean Validation

  • 10.1 139O que Bean Validation?10.2 140Adicionando o artefato no pom.xml10.3 140Adicionando restries no modelo10.4 143Customizando mensagens de validao10.5 146Compondo uma nova restrio

    11 148Manipulando eventos11.1 148Introduo11.2 148Eventos de ao11.3 149Eventos de mudana de valor e propriedade immediate

    12 152CDI - Contexts and Dependency Injection12.1 152Injeo de dependncias12.2 154Configurando CDI no projeto12.3 155Beans CDI, EL Names e @Inject12.4 158Escopos de beans CDI12.5 158Produtor de EntityManager12.6 160Controlando as transaes com interceptadores12.7 162Injeo em conversores JSF

    13 164Ajax13.1 164Introduo13.2 164Renderizao parcial13.3 166A propriedade event13.4 166A propriedade listener13.5 167Renderizaes mltiplas13.6 169Processamento parcial13.7 170Palavras-chave para render e execute13.8 171Pgina de cadastro de lanamento com Ajax

    14 173PrimeFaces14.1 173Introduo

  • 14.2 174Configurando o projeto14.3 174OutputLabel e InputText14.4 175SelectOneMenu14.5 176SelectOneButton14.6 177Calendar14.7 178AutoComplete14.8 179Messages14.9 180CommandButton14.10 181PanelGrid14.11 181DataTable14.12 184Menubar14.13 185AjaxStatus14.14 186Programando a alterao de lanamentos14.15 189Programando a excluso de lanamentos

    15 192Segurana da aplicao15.1 192Escolhendo uma soluo15.2 192Login15.3 196Logout15.4 197Filtro de autorizao

  • Captulo 1

    Introduo ao desenvolvimentoweb

    1.1. O que Java EE?

    A Java EE (Java Platform, Enterprise Edition) uma plataforma padro paradesenvolver aplicaes Java de grande porte e/ou para a internet, que inclui bibliotecase funcionalidades para implementar software Java distribudo, baseado emcomponentes modulares que executam em servidores de aplicaes e que suportamescalabilidade, segurana, integridade e outros requisitos de aplicaes corporativasou de grande porte.

    A plataforma Java EE possui uma srie de especificaes (tecnologias) com objetivosdistintos, por isso considerada uma plataforma guarda-chuva. Entre asespecificaes da Java EE, as mais conhecidas so:

    Servlets: so componentes Java executados no servidor para gerar contedodinmico para a web, como HTML e XML.

    JSP (JavaServer Pages): uma especializao de Servlets que permite queaplicaes web desenvolvidas em Java sejam mais fceis de manter. similars tecnologias como ASP e PHP, porm mais robusta por ter todas asfacilidades da plataforma Java.

    JSF (JavaServer Faces): um framework web baseado em Java que tem comoobjetivo simplificar o desenvolvimento de interfaces (telas) de sistemas paraa web, atravs de um modelo de componentes reutilizveis. A proposta queos sistemas sejam desenvolvidos com a mesma facilidade e produtividade

    www.algaworks.com 10

  • que se desenvolve sistemas desktop (at mesmo com ferramentas quesuportam clicar-e-arrastar componentes).

    JPA (Java Persistence API): uma API padro do Java para persistnciade dados, que usa um conceito de mapeamento objeto-relacional. Essatecnologia traz alta produtividade para o desenvolvimento de sistemas quenecessitam de integrao com banco de dados. S para citar, essa APIpossibilita que voc desenvolva aplicaes usando banco de dados semprecisar escrever uma linha sequer de SQL.

    EJB (Enterprise Java Beans): so componentes que executam em servidoresde aplicao e possuem como principais objetivos, fornecer facilidade eprodutividade no desenvolvimento de componentes distribudos,transacionados, seguros e portveis.

    Neste livro, abordaremos sobre JSF e uma breve introduo de JPA.

    1.2. O protocolo HTTP

    O protocolo HTTP utilizado na navegao de pginas da Internet. Quando voc abreuma janela de um browser, acessa uma pgina Web e navega em seus links, voc est,na verdade, utilizando esse protocolo para visualizar, em sua mquina, o contedo queest armazenado e/ou processado em servidores remotos.

    O HTTP um protocolo stateless de comunicao cliente-servidor: o cliente enviauma requisio para o servidor, que processa a requisio e devolve uma resposta parao cliente, sendo que, a princpio, nenhuma informao mantida no servidor emrelao s requisies previamente recebidas.

    Assim, quando digitamos o endereo de uma pgina em um browser, estamos gerandouma requisio a um servidor, que ir, por sua vez, devolver para o browser o contedoda pgina HTML requisitada.

    www.algaworks.com 11

  • A requisio enviada por um cliente deve conter, basicamente, um comando (tambmchamado de mtodo), o endereo de um recurso no servidor (tambm chamado depath) e uma informao sobre a verso do protocolo HTTP sendo utilizado.

    Supondo, por exemplo, que queremos buscar o contedo do endereohttp://www.uol.com.br/index.html. Utilizemos o mtodo GET, o path /index.html e averso 1.1 do protocolo HTTP. Temos a seguinte requisio enviada:

    GET /index.html HTTP/1.1Host: www.uol.com.br

    Existem diversos mtodos HTTP que podem ser especificados em requisies, sendoos mais comuns o mtodo GET, normalmente utilizado para obter o contedo de umarquivo no servidor, e o mtodo POST, utilizado para enviar dados de formulriosHTML ao servidor.

    Uma requisio pode conter parmetros adicionais, chamados headers. Algunsheaders comuns so, por exemplo, Host, User-Agent e Accept.

    Uma vez processada a requisio, o servidor, por sua vez, manda uma resposta parao cliente, sendo que essa resposta tambm tem um formato pr-determinado: aprimeira linha contm informaes sobre a verso do protocolo, um cdigo de statusda resposta e uma mensagem associada a esse status. Em seguida, so enviados osheaders da resposta, e finalmente, enviado o contedo da resposta. Veja um exemplosimples de resposta HTTP:

    HTTP/1.1 200 OKDate: Thu, 26 Sep 2013 15:17:12 GMTServer: Apache/2.2.15 (CentOS)Content-Type: text/html; charset=utf-8

    www.algaworks.com 12

  • No exemplo anterior, o cdigo de status 200 indica que houve sucesso no atendimentoda requisio enviada pelo cliente, e os headers indicam a data e hora do servidor, oservidor usado, tipo d