MÓDULO
Programação para Web 2
Projeto
Projeto Clientes
• O projeto consiste em construir um aplicativo JSF
para gerenciar Clientes usando um CRUD.
• O projeto será implementado em camadas Model,
View, Controller e a de Integração usando DAO.
• Iremos usar um Banco de Dados contendo a tabela
Camada Model
3
• Na camada Model vão ficar as classes que modelam o
domínio da aplicação e que devem ser persistidos.
• Neste caso, a classe Cliente contendo as anotações
para uso do JPA.
• Cliente deve ter os atributos:
– Nome – CPF – RG – Data de Nascimento – Endereço – CEP
Pacote dao
• Responsável pela comunicação com o banco
utilizando o JPA para salvar, listar alterar e excluir Clientes.
• Deve ser criada uma interface chamada ClienteDao,
uma classe chamada ClienteDaoImpl
• Se preferir, use DAO generico para derivar a classe
ClienteDaoImpl
• Crie uma classe HibernateUtil para realizar a conexão
com o banco. Se preferir, pode colocar em um pacote Utils
ClienteDAO
5
public interface ClienteDao {
public void save(Cliente cliente);
public Cliente getCliente(long id);
public List<Cliente> list();
public void remove(Cliente cliente);
public void update(Cliente cliente); }
Camada Controller
• Vai realizar a comunicação da Camada de Visão
representada por nossas páginas JSF com o banco de dados sendo responsável por realizar as operações requisitadas nas páginas JSF e em seguida
encaminhar o usuário para uma página.
• Nesta camada devem ficar os ManagedBeans que
View
7
• Composto por páginas JSF que irão executar o pedido
de listagem, alteração, exclusão e adição de Clientes.
• O projeto precisará de duas páginas JSF:
– index.xhtml
• listará os Clientes do Usuário e permitirá excluir ou alterar um listado ou criar um novo cliente
– gerenciarCliente.xhtml
• realizar a inserção e alteração dos Clientes.
– As duas páginas comunicam-se diretamente com os
métodos e atributos da classe ClienteController permitindo a interação de forma fácil ao banco de dados.
Index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"> <h:head>
<title>Gerenciador de Clientes</title> </h:head>
<h:body>
<h1>Gerenciador de Clientes</h1>
<h:dataTablevar=“cliente"
value="#{clienteController.listarClientes}">
<h:column>
<f:facetname="header">
<h:outputText value=“NOME"/>
</f:facet>
<h:outputText value="#{cliente.nome}"/>
</h:column>
<h:column>
<f:facetname="header">
<h:outputText value=“CPF"/>
</f:facet>
<h:outputText value="#{cliente.cpf}"/>
</h:column>
<h:column>
<f:facetname="header">
<h:outputText value=“RG"/>
</f:facet>
<h:outputText value="#{cliente.rg}"/>
</h:column>
<h:column>
<f:facetname="header">
Index.xhtml
9
<h:column>
<f:facet name="header">
<h:outputText value=“ENDEREÇO"/>
</f:facet>
<h:outputText value="#{cliente.endereco}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value=“CEP"/>
</f:facet>
<h:outputText value="#{cliente.cep}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Alterar"/>
</f:facet>
<h:form>
<h:commandButton action="#{clienteController.prepararAlterarCliente}"
value="Alterar"/>
</h:form>
</h:column>
<h:column>
<f:facetname="header">
<h:outputText value="Excluir"/>
</f:facet> <h:form> <h:commandButton action="#{clienteController.excluirCliente}" value="Excluir"/> </h:form> </h:column> </h:dataTable> <br/> <h:form>
<h:commandLink value="Novo Cliente"
action="#{clienteController.prepararAdicionarCliente }"/>
</h:form> </h:body> </html>
gerenciarCliente.xhtml
<h:form>
Nome<h:inputText value="#{clienteController.cliente.nome}"/><br/> CPF: <h:inputText value="#{clienteController.cliente.cpf}"/><br/> RG: <h:inputTextvalue="#{clienteController.cliente.rg}"/><br/>
Nascimento: <h:inputText value="#{clienteController.cliente.dtNasc}"/><br/> Endereço: <h:inputText value="#{clienteController.cliente.endereco}"/><br/> CEP: < h:inputText value ="#{clienteController.cliente.cep}“/><br/>
<h:commandButtonaction="#{clienteController.adicionarCliente}"
value="Inserir Novo Cliente"/>
<h:commandButtonaction="#{clienteController.alterarCliente}"
value="Alterar Cliente"/> <br/>
<h:commandLink action="index" value="Voltar"/> </h:form>