adiante criando a interface e - merlin.pro.br · a classes entidades devem: a. implementar a...
TRANSCRIPT
Racepitulando1. Criar um projeto web: JavaServer Faces + Tomcat + Primefaces2. Criar um banco de dados Postgresql3. Adicionar os jars: javax.persistence + eclipselink + postgresql (driver)4. Criar o persistence.xml (arquivo de configurações)5. Criar a unidade de persistência (JpaUtil) 6. Criar a classe DAO (Data Access Object)
Recapitulando7. Criar as classes “entidades” - que terão dados persistidos8. A classes entidades devem:
a. implementar a interface Serializableb. ter a anotação @Entityc. ter um construtor sem argumentosd. implementar os métodos hascode( ), equals( ), toString( )e. ter a anotação @Id para indicar o identificadorf. ter a anotação @Column…
g. campos private com gets e sets … 9. Registrar a classe no persistence.xml
10. Testar! JUnit é útil, acreditem!
Entidades com Relacionamentos● Algumas entidades (classes) estão relacionadas entre si● Sistema de exemplo:
Mapeando relacionamentos● Se um objeto do tipo Veiculo pode estar em vários objetos
do tipo Emprestimo…● Relacionamento UM PARA MUITOS…● Na classe Veiculo
Mapeando relacionamentos● Se um objeto do tipo Usuario pode estar em vários objetos
do tipo Emprestimo…● Relacionamento UM PARA MUITOS…● Na classe Usuario
Mapeando relacionamentos● Se vários objetos do tipo Emprestimo podem ter um
mesmo objeto do tipo Veiculo...● Relacionamento MUITOS PARA UM…● Na classe Emprestimo
Mapeando relacionamentos● Se vários objetos do tipo Emprestimo podem ter um
mesmo objeto do tipo Usuario...● Relacionamento MUITOS PARA UM…● Na classe Emprestimo
Criando a interface● Para criar a interface utilizaremos
○ JavaServer Faces○ Biblioteca PrimeFaces
● Documentação de PrimeFaces
http://www.primefaces.org/showcase/
JavaServer Faces● JavaServer Faces
○ É um framework que tem o objetivo simplificar o desenvolvimento de interfaces para web
○ Fornece um conjunto de componentes para interação com o usuário
○ É baseado em eventos: o evento no cliente causa uma resposta do servidor
Aplicações web com Java● Uma aplicação web é um programa que fica hospedado
em um servidor ● O usuário acessa o programa por meio do browser● O acesso aos sistemas é feito utilizando o modelo
request/response● O cliente solicita que uma ação seja realizada(request) e o
servidor a realiza e responde ao cliente (response)
Aplicações web com Java● No mundo Java os servidores são chamados de Servlet
Container● Exemplos de servidores:
○ Glassfish○ Tomcat○ JBoss○ etc
Aplicações web com Java● Neste curso, utilizaremos a biblioteca de componentes
PrimeFaces● Utilizaremos o modelo MVC - Model - View - Controller● A ideia por trás do MVC é a separação de conceitos● Separa-se a informação (e regras de negócio) da interface
com a qual o usuário interage
Um pouco sobre MVC ● Modelo (model): dados da aplicação ● Visão (view): camada que
○ manipula os dados para exibição ○ exibe os dados
● Controlador: faz a mediação entre o modelo e a visão
(Nem todos concordam com isso...)
Vamos à prática - Uma classe do modelo ● Utilizaremos a classe Usuario, já criada:
○ Construtor sem argumentos○ Implementa a interface Serializable○ Atributos privados e métodos get e set para cada
atributo○ Anotação @Entity para relacionar com uma
tabela do banco○ Definição de uma chave primária
Criando o Controlador ● O controlador:
● Implementa a interface Serializable● Tem um construtor sem parâmetros● Fica “entre a tela e o modelo”
● Um controlador processa as requisições do usuário e devolve as respostas
Criando o controle ● Nome: opcional
○ Se não for dado, o padrão é o nome da classe com a primeira letra minúscula
● Escopo○ Tempo de vida do objeto (controlador)
Criando o controle ● Escopo
○ Request: o objeto “morre” a cada requisição○ View: o objeto vive enquanto a aplicação não mudar
de tela ○ Session: enquanto durar a sessão○ Application: enquanto a aplicação estiver
executando
Criando a tela● Nossas telas serão criadas em xhtml● Crie na pasta web do projeto (subpasta adequada)● Reaproveite o esqueleto de telas● É trabalhoso lembrar os detalhes ● Não se preocupe com aparência!! (por enquanto)
Criando um form● Sempre que houver entrada de dados na tela, os
campos devem estar dentro de um form
Criando um form● A classe Usuario tem três atributos:
○ codigo (atribuído automaticamente)○ nome○ unidade
● Vamos criar o campo para o usuário preencher o nome e unidade do novo usuário
Utilizando as tags do PrimeFaces● As tags dos componentes do PrimeFaces se iniciam
com <p: ● Um rótulo em PrimeFaces
● Componentes com uma linha terminam com />
Vinculando com o controller ● A vinculação com o controlador é feita por meio da
linguagem EL - expression language ● A EL utiliza os caracteres #{ }
Processando o evento● Vamos criar um método no controlador para processar
o evento gerado pelo botão
Retornando mensagem● É necessário dizer que queremos atualizar a tela (o
form) após o processamento da ação relativa ao botão
Navegação entre páginas● Por meio do componente link
● outcome → é a página destino● novoUsuario → é o nome do xhtml
Navegação entre páginas● Por meio de método no controlador
● return null → permanece na página● return menu → vai para menu.xhtml
Gerenciando Usuários (Cadastrar, Alterar, Excluir, Consultar)
● Já vimos como cadastrar um novo usuário (gravar o objeto no arquivo)
● Agora melhorar nossa tela para listar os objetos cadastrados, bem como poder alterá-los e excluí-los
● Utilizaremos um componente DataTable
Listando Usuários Cadastrados● Já temos o método listarTodos( ) na classe DAO que nos
retorna uma lista com todos os objetos gravados no arquivo
● Precisamos uma lista no controlador para receber estes objetos
Excluindo Usuários● Adicionamos uma coluna com um link “excluir”
● Observe que há um método no controlador...
Componentes de seleção● Alguns componentes exigem um tratamento diferente,
como SelectOneMenu e SelectOneRadio
Converter e sua necessidade● Tudo que é exibido em uma página html é texto● É preciso converter o texto para um objeto● No caso, a lista exibida no combo contém apenas as
placas dos veículos● Quando o usuário seleciona a placa, é necessário
recuperar o objeto correspondente
Criando o SelectOneMenu para Veículos● É preciso criar uma lista de opções (selectItem)● A lista pode estar vinculada a uma lista no controlador
(veiculos é uma List com todos os veículos)
Criando o SelectOneMenu para Veículos● O itemValue é o valor que o componente contém
quando o usuário selecionar● O itemLabel é o que aparecerá na tela● var é uma “variável” para cada item da lista
(você pode ver este código em emprestarVeiculo.xhtml)