Prof. Wanderson Leandro de Oliveira wanderson.l.oliveira@anhaguera.com
PROGRAMAÇÃO WEB II
JAVA PARA WEB
Bibliografia
Padrão
• BROGDEN, Bill; MINNICK, Chris. Guia do Desenvolvedor Java - Desenvolvendo e - Commerce com Java Xml e Jsp. São Paulo: Makron Books, 2012.
Complementar
• GONÇALVES, Edson. Desenvolvendo Aplicações Web Com Jsp ,Servlets , Javaserver Faces , Hibernate , Ejb 3 Persistence. Gonçalves, Edson. Rio De Janeiro: Ciência Moderna, 2007.
• MELO, Alexandre Altair. Programação Java Para A Web . 2 ed. São Paulo: Novatec,2015.
JSF - Components
A especificação do JSF fornece um conjunto de
componentes
visuais
básicos
em
sua
implementação de referência.
Inclui duas bibliotecas de componentes básicos:
Biblioteca “HTML” (sigla h): possui componentes que
representam diversos elementos HTML.
Biblioteca “Core” (sigla f): responsável por tarefas
comuns no desenvolvimento de sistemas, como
internacionalização, validação e conversão de dados
JSF - Components
Os principais componentes que a implementação de referência do JSF fornece são:
Formulários
Campos de entrada de texto
Campo de entrada de senha
Rótulos com textos
Textos de uma única linha
Links
Botões
Mensagens
Painéis
Tabela HTML
Tabela de dados (grid)
JSF - Components
Os principais componentes que a implementação de referência do JSF fornece são:
Formulários
Campos de entrada de texto
Campo de entrada de senha
Rótulos com textos
Textos de uma única linha
Links
Botões
Mensagens
Painéis
Tabela HTML
Tabela de dados (grid)
JSF
–
Biblioteca HTML
Declaração:
<html xmlns:h=“http://java.sun.com/jsf/html”>
Tag Descrição
body Representa a tag <html> do HTML button Cria um link <input type=“button”>
column Coluna de dados em um <h:dataTable> commandButt
on
Gera um botão de submit ou reset
commandLink Gera um link. Precisa estar dentro de um <h:form> dataTable Representa uma tabela html
form Representa o formulário html graphicImage Representa a tag <img> do html head Representa a tag <head> do html
inputHidden Gera um campo invisível. Correspondente a <input type=“hidden”>
JSF
–
Biblioteca HTML
continuação:
Tag Descrição
inputText Gera um campo de texto. Correspondente a <input type=“text”>
inputTextarea Gera um campo de texto multilinha. Correspondente a <textarea></textarea>
link Cria um link <a href> cujos parâmetros podem ser montados com as tags <f:param> aninhadas.
message Mostra o texto das mensagens de erro ou alerta associados ao componente messages Mostra todas as mensagens de erro geradas.
outputLabel Gera uma tag <label> que pode estar associada a um campo da tela. outputLink Gera um link html com a tag <a href>
outputText Gera em tela o texto especificado no atributo value.
panelGrid Permite montar um layout para a disposição de componentes
panelGroup Permite agrupar componentes para que sejam interpretados como um só por panelGrid.
selectBooleanCheckb ox
JSF
–
Biblioteca HTML
continuação:
Tag Descrição
selectManyCheckB ox
Gera uma lista de componentes <input type=“checkbox”/> do html, com base em valores fornecidos pelas tags
<f:selectItem/> ou <f:selectItems/>
selectManyListbox Gera um componente <select> com várias linhas visíveis, no qual é possível selecionar vários itens ao mesmo tempo.
selectManyMenu Gera um componente <select> com apenas uma linha visível, no qual é possível selecionar vários itens ao mesmo tempo. selectOneListbox Gera um componente <select>, no qual é possível selecionar
apenas um item por vez.
JSF - Exemplo
<?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"
>
<h:head> <title>
JSF 2.0 Hello World
</title> </h:head>
<h:body> <h3>
JSF 2.0 Hello World Example - hello.xhtml
</h3>
<h:form>
<h:inputText
value="#{helloBean.name}"
></h:inputText>
<h:commandButton
value="Welcome Me"
action="welcome"
></h:commandButton>
</h:form>
</h:body>
JSF
–
Passos Iniciais
Existem 4 passos básicos para iniciar o
desenvolvimento em JSF:
Criação da classe Bean
Mapeamento da classe Bean
Criação da página JSF
Passo 1: Criação da classe Bean
Bean
“Um
JavaBean normalmente é uma classe (poderia
ser mais de uma classe), mas uma classe não é
necessariamente um JavaBean.
”
É uma classe java que expõe propriedades e
eventos a um framework como o JSF. Por sua vez,
propriedade
é
um
valor
nomeado
de
um
Passo 1: Criação da classe Bean
Bean
Um
bean
tem
como
premissa
a
idéia
de
encapsulamento.
Assim sendo suas variáveis
devem obrigatoriamente serem acessadas através
de métodos.
Outra importante regra refere-se ao construtor. Ele
deve ser sem parâmetros.
Em
relação aos métodos,
eles podem
ser
Passo 1: Criação da classe Bean
Bean
As convenções adotadas para dar nomes aos métodos
de um Bean são:
public TipoDaPropriedade getNomeDaPropriedade()
Public void setNomeDaPropriedade(TipoDaPropriedade varName)
Em relação as variáveis booleanas vale o mesmo
conceito, com o uso da palavra is ao invés do get.
public void setNomeDaPropriedade(Boolean varName)
Passo 1: Criação da classe Bean
Beans Gerenciados
Beans Gerenciados (Managed beans) são beans que
podem ser acessados a partir de uma página JSF
Devem ter um nome e um escopo.
São
“gerenciados”
no sentido de que quando o nome de
um bean ocorre em uma página JSF, a implementação
JSF localiza o objeto que possui esse nome, ou então o
Passo 1: Criação da classe Bean
Beans de apoio
Em alguns casos é conveniente elaborar um bean com alguns
ou todos os objetos componentes de um formulário web. Um
bean deste tipo é conhecido como bean de apoio (Backing
bean).
Necessário quando se deseja que validadores e
manipuladores de eventos tenham acesso aos componentes
de um formulário
Quando se usa um backing bean é preciso conectar os
componentes do formulário àqueles existentes no bean
através do atributo binding. Ex:
Passo 1: Criação da classe Bean
Criação da classe Bean
–
Resumo
Deve seguir os padrões já apresentados anteriormente.
Fornecerá as informações exibidas na página e as operações
que serão executadas.
Para que uma página JSF acesse uma propriedade de um
Bean, ela precisa ter um método de acesso get.
Para que uma página JSF altere uma propriedade de um
Bean, ela precisa ter um método de modificação set.
Os métodos desta classe definem as operações da página JSF.
Eles devem ser do tipo void, quando não for necessária
navegação na página JSF, ou deve retornar uma String que
Passo 1: Criação da classe Bean
JSF
–
Classe Bean: Exemplo
public classPessoa implementsjava.io.Serializable {
// atributos são declarados como private
private String nome;
private booleanfalecido;
// Construtor sem parâmetros
public Pessoa() { }
// getXxxx para acessar o valor do atributo
public String getNome() { return this.nome; }
// setXxxx para modificar o valor dos atributos
public void setNome(String nome) { this.nome = nome; }
// isXxxx para acessar atributos booleanos
public booleanisFalecido() { return this.falecido; }
// setXxxx para modificar atributos booleanos
Passo 1: Criação da classe Bean
Escopo Beans
Quando um bean é definido, deve-se definir o
escopo deste bean, ou seja, por quanto tempo
as informações do bean serão mantidas.
O JSF 2.0 dá suporte aos escopos:
Sessão
Requisição
Aplicação
Visão
Passo 1: Criação da classe Bean
Escopo de Sessão
Mantém um registro de uma sessão, ou seja, de
repetidas conexões feitas por um mesmo cliente.
Persiste
desde
o
momento
em
que
a
sessão
é
estabelecido até o seu término.
A sessão termina se a aplicação web invocar o método
invalidade no objeto HttpSession ou se ocorrer o fim do
tempo limite (timeout).
No JSF 2.0, este escopo pode ser definido com a
Passo 1: Criação da classe Bean
Escopo de Aplicação
Persiste durante toda a duração da aplicação web
Compartilhado por todas as requisições e por todas as
sessões
É construído com a primeira requisição da aplicação e
permanece ativo até a aplicação ser removida do
servidor de aplicações
No JSF 2.0, este escopo pode ser definido com a
anotação
@ApplicationScoped
do
pacote
Passo 1: Criação da classe Bean
Escopo de Requisição
Tem vida curta
Começa quando uma requisição HTTP é enviada e
termina quando a resposta é mandada de volta ao
cliente
Uma nova instância é criada a cada requisição
No JSF 2.0, este escopo pode ser definido com a
Passo 1: Criação da classe Bean
Escopo de Visão
Adicionado no JSF 2.0
Persiste enquanto a mesma página JSF é exibida novamente.
Assim que o usuário navega para uma página diferente, o
bean fica fora do escopo.
Se você tem uma página que continua sendo reapresentada,
então você pode colocar o bean que contêm os dados para
esta página no escopo visão, reduzindo assim o tamanho do
escopo de sessão. Isto é particularmente útil para aplicações
Ajax.
No JSF 2.0, este escopo pode ser definido com a anotação
Passo 1: Criação da classe Bean
Escopo Personalizado
Em última análise, um escopo é simplesmente um mapa que
liga nomes a objetos.
Os tempos de vida dos 4 escopos padrão JSF (aplicação,
sessão, visão e requisição) são gerenciados pela aplicação
JSF.
A partir do JSF 2.0, você pode definir um bean personalizado
com a anotação:@ CustomScoped ("# {expr}")
onde # {expr} produz o mapa escopo.
Sua aplicação é responsável pela remoção de objetos do
Passo 1: Criação da classe Bean
Escopos de um Bean
A tabela a seguir resume o que já foi discutido sobre os escopos:
Escopo Descrição
@ApplicationScoped Apenas uma instância da classe em toda a aplicação. Todos os usuários acessam a mesma instância.
@SessionScoped Existe uma instância para cada usuário
@RequestScoped Existe uma instância pelo tempo de duração da requisição feita pelo usuário
@NoneScoped Cada vez que houver uma chamada a uma propriedade ou método da classe Bean será criada uma nova
instância
@ViewScoped Armazena a instância da classe Bean na página exibida. Enquanto esta estiver sendo manipulada, a mesma
instância da classe Bean estará disponível @CustomScoped(value