30
LINGUAGEM DE PROGRAMAÇÃO III APLICAÇÕES WEB

JSP: Etiquetas

Embed Size (px)

Citation preview

Page 1: JSP: Etiquetas

LINGUAGEM DE PROGRAMAÇÃO IIIAPLICAÇÕES WEB

Page 2: JSP: Etiquetas

ETIQUETAS

• Etiquetas constituem uma forma mais clara e mais poderosade se organizar código Java em JSPs

• A medida que lógicas de negócios se tornam complexas, passaa ser crucial mover partes do código Java para blocosgerenciáveis

• Não seria conveniente se simplesmente desenvolvessemostodo o conteúdo de um SCRIPTLET, em um IDE java separado,compilando-o lá, déssemos um nome especial a esse trechode código e tivéssemos nossa própria etiqueta especial na JSP,especificando que o código JAVA associado a ela está na classeTAL? É isso o que uma ETIQUETA faz.

Page 3: JSP: Etiquetas

ETIQUETAS

• O princípio de ETIQUETAS é o mesmo de etiquetas HTML

• O nome da etiqueta personalizada precisa ser associado a umarquivo existente da classe JAVA, contendo o código JAVA quetoda instância dessa etiqueta precisará executar.

• Para fazer o mapeamento da etiqueta com a classe JAVA énecessário usar um arquivo XML, chamado DESCRITOR DE TAG

• Cada etiqueta personalizada deverá pertencer a umaBIBLIOTECA DE ETIQUETAS

Page 4: JSP: Etiquetas

ETIQUETAS

• Você pode ter várias bibliotecas de etiquetas

• CORPO DA ETIQUETA: é a parte na qual queremos realizaroperações tal como formatação

• Sintaxe:

<prefixo_biblioteca:nome_etiqueta

atributo1=“valor1” atributo2=“valor2” .... >

... Corpo ....

</prefixo_biblioteca:nome_etiqueta>

Page 5: JSP: Etiquetas

ETIQUETAS

• Passos para criar uma etiqueta personalizada:

1. Criar o arquivo JAVA que conterá o código Java para

a etiqueta. Não esquecer de criar um pacote.

2. Criar o Descritor de Biblioteca de Etiquetas (Tag Lib

Descriptor). Criar uma pasta chamada TLDS dentro

da pasta WEB-INF e colocar o arquivo ai.

3. Configurar o arquivo web.xml para o mapeamento da

biblioteca de tag

4. Usar a tag nas páginas JSP desejadas

Page 6: JSP: Etiquetas

ETIQUETAS

• Se comparar um SCRIPTLET com uma etiqueta

personalizada, você estará simplesmente movendo o

conteúdo do SCRIPTLET (linhas de código JAVA no

SCRIPTLET) para uma classe JAVA separada,

substituindo, na JSP, o SCRIPTLET por uma etiqueta

“personalizada” especial e concisa, especificando a

associação entre a etiqueta personalizada e sua classe

JAVA em um arquivo .TLD separado.

• A JSP parece mais limpa

Page 7: JSP: Etiquetas

ETIQUETAS

• Uma classe de etiqueta precisa sempre ESTENDER de

TAGSUPPORT

• DOSTARTTAG() e DOENDTAG(): métodos

chamados automaticamente pela estrutura quando o

servidor encontrar o inicio e o final da etiqueta

personalizada

• O código personalizado deve estar dentro de

DOSTARTTAG()

Page 8: JSP: Etiquetas

ETIQUETAS

• Se examinar a documentação da API de

TAGSUPPORT, você verá que ela tem um atributo

PROTECTED, chamado PAGECONTEXT, que

contém o mesmo objeto implícito PAGECONTEXT

disponível em uma JSP – a estrutura cuida de assegurar

que a TAGSUPPORT obtenha o mesmo

PAGECONTEXT em seu atributo

• GETOUT(): retorna um JSPWRITER que pode ser

usado para transferir HTML

Page 9: JSP: Etiquetas

ETIQUETAS

• SKY_BODY: é uma constante do tipo int definida na

interface TAG. Comunica ao chamador de

DOSTARTTAG() que a parte de avaliação do corpo da

etiqueta deve ser descartada, isto é, a etiqueta não tem

corpo.

• EXEMPLOS

Page 10: JSP: Etiquetas

CICLO DE VIDA

• Uma etiqueta pode conter uma etiqueta inicial, umaetiqueta final e um corpo entre elas

• A maioria das etiquetas não precisa ter corpo

• TAGSUPPORT e BODYSUPPORT são classes de suporteque fornecem implementação padrão para alguns dosmétodos obrigatórios

• BODYSUPPORT usado apenas quando a etiqueta temcorpo

Page 11: JSP: Etiquetas

CICLO DE VIDA

• TAGSUPPORT e BODYSUPPORT implementam asinterfaces TAG, ITERATIONTAG e BODYTAG

• Quando estender uma classe para TAGSUPPORT ouBODYSUPPORT lembre-se de que precisarásobrescrever alguns métodos, como, por exemplo, oDOSTARTTAG()

• Etiquetas de iteração: são usadas em um laço e devemimplementar ITERATIONTAG. Exemplo: processar oconjunto resultante de uma consulta a banco

Page 12: JSP: Etiquetas

CICLO DE VIDA

• MÉTODOS IMPORTANTES:

1. DOSTARTTAG()

2. DOINITBODY()

3. DOAFTERBODY()

4. DOENDTAG()

5. RELEASE()

• Os métodos 1, 3 e 4 determinam quando descartar ouchamar os métodos seguintes na sequencia. Retornam umvalor inteiro

• Esses cinco métodos devem ser chamados na sequencia

Page 13: JSP: Etiquetas

CICLO DE VIDA

• Sequencia de chamada

Page 14: JSP: Etiquetas

INTERFACE TAG

• Interface: TAG

• Método: doStartTag(0

• É chamado uma vez quando o inicio da etiqueta éprocessado.

• É usado para inicializar a etiqueta e, geralmente, oprocessamento completo da etiqueta (para etiquetassem corpo)

Page 15: JSP: Etiquetas

INTERFACE TAG

• Valores retornados:

• Tag.SKIP_BODY: o corpo da etiqueta deverá ser vazio eserá descartado

• Tag.EVAL_BODY_INCLUDE: o corpo da etiqueta deveráestar presente e será avaliado

• BodyTag.EVAL_BODY_BUFFERED: o corpo da etiquetaserá colocado em uma memória temporária, podendoser processado mais tarde

Page 16: JSP: Etiquetas

INTERFACE BODYTAG

• Interface: BodyTag

• Método: doInitBody

• É chamado apenas para etiquetas com corpo

• É chamado uma vez após doStartTag(), mas antes do corpoda etiqueta ser processado

• É usado para inicializar a etiqueta (além de doStartTag())

• Valor de retorno: void

Page 17: JSP: Etiquetas

INTERFACE INTERATIONTAG

• Interface: InterationTag

• Método: doAfterBody()

• É chamado apenas para etiquetas de iteração/corpo

• É chamado após o corpo da etiqueta ter sidoprocessado, mas antes de doEndTag()

Page 18: JSP: Etiquetas

INTERFACE INTERATIONTAG

• Valores retornados:

• InterationTag.EVAL_BODY_AGAIN: doAfterBody() deveser chamado mais uma vez

• Tag.SKIP_BODY: fim de processamento de corpo deetiqueta

Page 19: JSP: Etiquetas

INTERFACE TAG

• Interface: Tag

• Método: doEndTag()

• É chamado uma vez quando o fim da etiqueta éprocessado

• Valores retornados:

• Tag.EVAL_PAGE: avalia o restante da página

• Tag.SKIP_PAGE: descarta o restante da página apósesta estiqueta

Page 20: JSP: Etiquetas

INTERFACE TAG

• Interface: TAG

• Método: release()

• É chamado uma vez quando termina o processamentoda etiqueta

• É usado para liberar recursos não utilizados

Page 21: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• Elementos de ação são elementos JSP que parecem

com etiquetas HTML, tem um nome de etiqueta e umalista de pares, nome de atributo/valor

• O elemento de ação obtém a lista de pares, nome deatributo/valor, e os passa adiante para uma classeJAVA associada ao nome da etiqueta

• Cada elemento de ação tem um nome

Page 22: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• A especificação JAVA exige que cada elemento de ação

pertença a um grupo nomeado de elementos

• Etiquetas personalizadas são um tipo de elemento deação

• Um grupo nomeado de elementos é uma biblioteca deetiquetas predefinidas

• Todos os elementos padrão devem começar com oprefixo <jsp:

Page 23: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• Elementos de ação padrão:

• Representam o padrão, a rotina ou as ações maiscomumente usadas que uma JSP necessite realizar

• Não são etiquetas personalizadas

• Exemplos:

• <jsp:include page=“index.jsp”/>

• <jsp:forward page=“erro.jsp”/>

Page 24: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• <jsp:usebean>

• É uma etiqueta padrão predefinida que permite quevocê especifique uma classe JAVA personalizada epasse atributos a ela

• Tem comportamento similar ao de uma etiquetapersonalizada

• Um BEAN ou JAVABEANS é uma classe JAVA (pojo)

Page 25: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• Regras para a criação de uma classe JAVA BEAN:

• A classe deve ser public

• Deve fornecer um construtor padrão sem argumentos

• As propriedades dos beans devem ser manipuladasseparadamente (métodos set e get)

• Convenção de nome. Exemplo: dataAtual, horaAtual.

Page 26: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• Para invocar um bean na JSP, será necessário usar o

elemento de ação-padrão <jsp:useBean>

• Sintaxe:

• <jsp:useBean id=“nome_bean” class=“classe_bean”scope=“escopo_bean”>

• Atributo: ID

• Significado: nome usado para identificar o objeto beanna JSP. Deve ser único na JSP

Page 27: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• Atributo: CLASS

• Significado: nome totalmente qualificado da classebean, incluindo pacote

• Atributo: SCOPE

• Significado: escopo no qual um BEANS permanecedefinido.

• VALORES DO ATRIBUTO SCOPE: page, request, session,aplication

Page 28: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• PAGE: o bean estará em escopo somente na página JSP

• REQUEST: o bean estará em escopo nesta página, epara qualquer página para a qual a solicitação sejaencaminhada

• SESSION: o bean estará em escopo na sessão atual

• APPLICATION: o bean estará em escopo em todo oaplicativo Web

Page 29: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• <jsp:getProperty> e <jsp:setProperty>: usados para

acessar e alterar o bean (como em get e set na classejava)

• Exemplo:

<jsp:useBean id=“datahorabean”

class=“br.com.Etiqueta.DataHoraAtualBe

an” scope=“page”/>

<jsp:getProperty name=“datahorabean”

property=“dataApenas”/>

<jsp:setProperty name=“datahorabean”

property=“dataApenas” value=“true”/>

Page 30: JSP: Etiquetas

ELEMENTOS DE AÇÃOE JAVABEANS• O servidor web substituirá a tag pelo valor da

propriedade em si, convertido para uma string.

• Name corresponde ao atributo ID do elemento (ambos

devem conter extamente o mesmo valor)

• Exemplo