Baixar Aulas 05 e 06

Propaganda
Programação para Internet II
Aulas 05 e 06
Fernando F. Costa
[email protected]
Fundamentos básicos de JavaBeans
JavaBeans são componentes de softwares escritos em
Java que também são conhecidos como Beans.
A API JavaBeans foi lançada pela Sun em fevereiro de
1997, na versão 1.1 do JDK, sendo criada com a
cooperação da indústria.
Fundamentos básicos de JavaBeans
Qual é a diferença entre uma classe Java e um JavaBean?
Resposta:
“Um JavaBean normalmente é uma classe (poderia ser
mais
de
uma
classe),
mas
uma
classe
não
é
necessariamente um JavaBean.”
(TODD, 2003)
Fundamentos básicos de JavaBeans
Podemos definir um Bean como uma classe Java que
segue
um
conjunto
de convenções de design e
nomeação definidos pela especificação de JavaBeans do
J2SE. Ao contrário de outras tecnologias Java, os beans
não precisam obrigatoriamente estender uma classe ou
implementar uma interface. Entretanto é uma boa
prática a implementação da interface Serializable.
Fundamentos básicos de JavaBeans
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 divididos em métodos de
leitura e de escrita.
Fundamentos básicos de JavaBeans
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)
●
public Boolean isNomeDaPropriedade()
Fundamentos básicos de JavaBeans
Com o uso de Beans, os programadores de conteúdo
podem alavancar o poder de Java para adicionar elementos
dinâmicos às suas páginas sem escrever uma única linha
de código Java.
Containers Bean
Container Bean é uma aplicação, ambiente ou linguagem
de programação que permite que os programadores
chamem
Beans,
os
configurem
e
acessem
suas
informações e comportamentos.
Permitem a interação com Beans em um nível mais alto,
onde o container Bean define um meio de apresentação e
interação com Beans e escreve o código Java resultante.
Propriedades Bean
Os containers Bean permitem trabalhar com Beans em
termos de propriedades (atributos nomeados do Bean que
mantêm seu estado e controlam seu comportamento).
Estas propriedades podem ser alteradas em tempo de
execução e são o único mecanismo que o container Bean
usa para expor Beans ao programador.
Propriedades Bean
Como exemplo imaginem um bean chamado BeanTempo. Este bean
conhece várias informações a respeito de previsões e condicões
meteorológicas. Para o cliente, não é importante saber onde ele irá
conseguir estas informações, se é de um banco de dados, ou diretamente
de algum sensor meteorológico. O que importa é que ele pode fornecer
informações como temperatura atual, previsão de chuva, etc. em formas
de propriedades, cujos valores podem ser acessados pela nossa
aplicação.
Propriedades Bean
De acordo com o tipo de informação, podemos classificar
as propriedades dos beans como somente-leitura, leitura e
escrita, etc.
Exemplo: Usando novamente o BeanTempo, não seria
interessante que a temperatura máxima p/ hoje seja uma
propriedade editável, mas sim somente-leitura.
Tipos de Propriedades
Em Beans temos alguns tipos de propriedades, entre elas:
●
Propriedades linkadas e acionadoras – também conhecidas como
vinculadas. São propriedades que ao terem seu valor alterado,
acionam algum evento específico no back-end da aplicação. Exemplo:
CEP no BeanTempo.
●
Propriedades indexadas – São propriedades que armazenam uma
coleção de valores. Ex: Temperatura prevista na semana.
OBS: As tags Beans de JSP não reconhecem propriedades indexadas.
Para se trabalhar com este tipo de informação devemos usar scriplets JSP
ou tag(s) JSP personalizadas.
Tipos de Dados das Propriedades
Beans podem armazenar qualquer tipo de informação. Isto significa que
ele pode conter qualquer tipo primitivo, assim como objetos Java.
No entanto, com tag(s) Bean, toda propriedade é tratada como se fosse
do tipo String. Valores passados para um propriedade são textos e valores
retornados também são texto. Será tarefa do container JSP fazer as
devidas conversões internamente, facilitando assim o uso de Beans pelo
programadores de conteúdo.
Folhas de Propriedades
As
capacidades
de
um
Bean
normalmente
são
documentadas em uma tabela conhecida como folha de
propriedades. Ela é útil para descrever aos usuários destes
Beans,
qual
informação
ele
comportamento ele pode fornecer.
pode
conter
e
que
Folhas de Propriedades
Exemplo da folha de propriedades do BeanTempo:
Programação de componentes
baseada em tag(s)
JSP e JavaBeans necessitam de apenas 3 tags simples para interagirem.
Isso fornece a facilidade de utilização de Beans por programadores de
conteúdo, mas no entanto gera várias limitações.
Mas essa é a intenção, pois caso seja necessário uma maior
complexidade na interação entre estes dois componentes, existem os
scriplets JSP, assim como as Tags JSP personalizadas.
Como acessar componentes JSP
Para interagir com um Bean, primeiro dizemos à página onde encontrar o
Bean e atribuímos um nome a ele. Em seguida, fazendo uso deste nome
podemos acessar e alterar valores armazenados nas propriedades do
Bean.
Para isto utilizamos as seguintes tags:
●
<jsp:useBean>
●
<jsp:getProperty>
●
<jsp:setProperty>
Como acessar componentes JSP
<jsp:useBean>
●
Serve para informar a página atual que um Bean será utilizado.
●
Permite escrever JSP´s que utilizam classes JavaBean.
Sintaxe:
<jsp:useBean id=”nome bean” class=”nome classe” />
ou
<jsp:useBean id=”nome bean” class=”nome classe”>
</jsp:useBean>
Como acessar componentes JSP
<jsp:useBean> - Atributos
Período de vida e Acessibilidade
A tabela a seguir resume o período de vida e a acessibilidade que um
Bean pode assumir:
Como acessar componentes JSP
<jsp:getProperty>
●
Permite recuperar o valor de uma propriedade em um JavaBean e
incorporá-lo a saída.
●
Não possui elemento de corpo
●
Espera 2 atributos: name e property
Sintaxe:
<jsp:getProperty name=”nome bean” property=”nome propriedade” />
Como acessar componentes JSP
<jsp:setProperty>
●
Permite configurar o valor de uma propriedade em um JavaBean.
●
Não possui elemento de corpo
●
Espera 3 atributos: name, property e value
Sintaxe:
<jsp:setProperty name=”nome bean” property=”nome propriedade”
value=”valor”/>
Construindo um JavaBean
Exemplo 01
Fatorial
Construindo um JavaBean
Fatorial.java
package fimes.edu.pi2;
public class Fatorial {
public Fatorial() { }
private int numero;
private int fatorial;
public void setNumero(int num) {
this.numero = num;
}
public int getNumero() {
return numero;
}
Fatorial.java
Construindo um JavaBean
public int getFatorial() {
fatorial = numero;
if (numero > 0) {
if (numero > 1) {
for (int x = numero - 1; x > 1; x--) {
fatorial = fatorial * x;
}
}
} else {
ArithmeticException Ex = new ArithmeticException("Não é possível
calcular fatorial de um número negativo");
throw Ex;
}
return fatorial;
}
}
Construindo um JavaBean
index.html
<html>
<body>
<form name="fatorialbean" action="fatorialBean.jsp" method="POST">
<h1>Fatorial Bean</h1>
Valor:<input type="text" id="valor" name="valor" value="" />
<input type="submit" value="Calcular" name="calc" />
</form>
</body>
</html>
Construindo um JavaBean
fatorialBean.jsp
<html>
<body>
<% int num = 1;
try {
num = Integer.parseInt(request.getParameter("valor"));
} catch (NumberFormatException nfe) { }
%>
<jsp:useBean class="fimes.edu.pi2.Fatorial" id="fator" scope="session" />
<jsp:setProperty name="fator" property="numero" value='<%= num %>' />
O Fatorial de
<jsp:getProperty name="fator" property="numero" />
usando a tag jsp:useBean é:
<jsp:getProperty name="fator" property="fatorial" />
</body>
</html>
Construindo um JavaBean
Exemplo 02
Data
Construindo um JavaBean
DataHoraAtualBean.java
package br.edu.fimes.pi2;
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
public class DataHoraAtualBean {
private boolean dataApenas;
public boolean isDataApenas() { return dataApenas; }
public void setDataApenas( Boolean dataApenas ) { this.dataApenas = dataApenas; }
public String getData()
{
SimpleDateFormat formatoApenasData = new SimpleDateFormat("MMM dd yyyy");
Date hoje = new Date();
if ( dataApenas ) {
return formatoApenasData.format(hoje);
}
else
return hoje.toString();
}
}
Construindo um JavaBean
HoraAtual.jsp
<jsp:useBean id=“datahorabean” class=“br.edu.fimes.pi2.DataHoraAtualBean”
scope=“page”>
<jsp:setProperty name=“datahorabean” property=“dataApenas” value=“true” />
</jsp:usebean>
<HTML><BODY><TABLE>
<TR>
<TD> A data de hoje é: </TD>
<TD><jsp:getProperty name=“datahorabean” property=“data” /></TD>
</TR>
<jsp:setProperty name=“datahorabean” property=“dataApenas” value=“false” />
<TR>
<TD> A hora atual é: </TD>
<TD><jsp:getProperty name=“datahorabean” property=“data” /></TD>
</TR>
</TABLE></BODY></HTML>
Exercício 01
Utilizando JavaBeans, faça uma página que efetue
a soma de dois números e retorne a soma deles.
Exercício 02
Utilizando Beans, construa uma página JSP que:
●
Possua um formulário para cadastrar dados de um determinado
professor (Nome, Instituição de Ensino, Cidade, Disciplinas, Ano), e
um botão cadastrar.
●
Ao acionar o botão cadastrar, exiba uma página com informações
semelhantes as dadas a seguir:
Dados Cadastrados com sucesso!
Professor: Fernando Freitas Costa
Instituição onde leciona: Fundação Integrada Municipal de Ensino Superior
Cidade: Mineiros
Disciplinas: Análise de Algoritmos, Estrutura de Dados II e Programação para Internet II
Ano: 2011
Boa Noite!
Download