MÓDULO Programação para Web 2 Projeto Gerenciar Clientes
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 Cliente acessado por meio de JPA. 2
Camada Model 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 3
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 4
ClienteDAO 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); } 5
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 farão o papel de controladores. 6
View 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. 7
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:datatable var= cliente" value="#{clientecontroller.listarclientes}"> <h:outputtext value= NOME"/> <h:outputtext value="#{cliente.nome}" /> <h:outputtext value= CPF"/> <h:outputtext value="#{cliente.cpf}"/> <h:outputtext value= RG"/> <h:outputtext value="#{cliente.rg}"/> <h:outputtext value= DATA NASCIMENTO"/> <h:outputtext value="#{cliente.dtnasc}"/> 8
Index.xhtml <h:outputtext value= ENDEREÇO"/> <h:outputtext value="#{cliente.endereco}"/> <h:outputtext value= CEP"/> <h:outputtext value="#{cliente.cep}"/> <h:outputtext value="alterar"/> <h:form> <h:commandbutton action="#{clientecontroller.prepararalterarcliente}" value="alterar"/> </h:form> <h:outputtext value="excluir"/> <h:form> <h:commandbutton action="#{clientecontroller.excluircliente}" value="excluir"/> </h:form> </h:datatable> <br/> <h:form> <h:commandlink value="novo Cliente" action="#{clientecontroller.prepararadicionarcliente }"/> </h:form> </h:body> </html> 9
gerenciarcliente.xhtml <h:form> Nome<h:inputText value="#{clientecontroller.cliente.nome}"/><br/> CPF: <h:inputtext value="#{clientecontroller.cliente.cpf}"/><br/> RG: <h:inputtext value="#{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:commandbutton action="#{clientecontroller.adicionarcliente}" value="inserir Novo Cliente"/> <h:commandbutton action="#{clientecontroller.alterarcliente}" value="alterar Cliente"/> <br/> <h:commandlink action="index" value="voltar"/> </h:form> 10