programação para web 2 - facom.ufu.brbacala/daw/lpw2/06 - projetocliente.pdf · projeto clientes...
TRANSCRIPT
Projeto Clientes
2
• 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.
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
4
• 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
6
• 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.
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
8
<?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:column> <f:facet name="header"> <h:outputText value=“NOME"/> </f:facet> <h:outputText value="#{cliente.nome}" /> </h:column>
<h:column> <f:facet name="header"> <h:outputText value=“CPF"/> </f:facet> <h:outputText value="#{cliente.cpf}"/> </h:column> <h:column> <f:facet name="header"> <h:outputText value=“RG"/> </f:facet> <h:outputText value="#{cliente.rg}"/> </h:column> <h:column> <f:facet name="header"> <h:outputText value=“DATA NASCIMENTO"/> </f:facet> <h:outputText value="#{cliente.dtNasc}"/> </h:column>
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:facet name="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
10
<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>