height=264 alt=capa10.JPG src="/imagens/webmobile/edicoes/10/capa10.JPG" width=201 border=0>

Clique aqui para ler todos os artigos desta edição

JSP Tag Files

Crie sua biblioteca de tags personalizada sem precisar criar classes ou arquivos XML

A tecnologia JavaServer Pages (ou simplesmente JSP) se tornou a ferramenta predileta de muitos desenvolvedores web. Uma das principais razões é a imensa quantidade de recursos auxiliares que a tecnologia dispõe e que estão em constante evolução.

Um desses recursos auxiliares é o JSTL, ou JavaServer Pages Standard Tag Library, que oferece ao desenvolvedor um conjunto padrão de tags a serem utilizadas nas páginas JSP. Por serem tags, utilizam sintaxe semelhante ao HTML e, na maioria dos casos, evitam a necessidade de se utilizar códigos Java diretamente nas páginas JSP (os chamados scriptlets). Com isso, o desenvolvedor consegue não só um conjunto de componentes visuais reutilizáveis, como também consegue manter a parte lógica da sua aplicação separada e independente da interface gráfica.

O JSTL, além de oferecer um conjunto padrão de tags, também permite que você implemente suas próprias tags, criando assim sua biblioteca personalizada de tags. O processo, porém, por implicar na criação de uma classe Java por tag e na criação de um arquivo XML .tld para uma ou para um conjunto de tags (biblioteca), pode se tornar um tanto quanto dispendioso, principalmente quando o objetivo é apenas encapsular pequenos trechos de HTML a serem reutilizados em várias páginas de um projeto.

O objetivo deste artigo é demonstrar uma maneira alternativa para se criar tags personalizadas, que não envolve a criação de nenhuma classe Java ou arquivo XML adicional. Com isto, é possível criar, de maneira bastante simples, tags reutilizáveis que possibilitarão ao desenvolvedor, de forma extremamente prática, utilizar um mesmo trecho de código HTML em diversas partes de seu site JSP.

Inicialmente vamos demonstrar as duas maneiras possíveis de se criar tags personalizadas: Tag Files e Tag Libs. Em seguida, em um exemplo prático, vamos usar tag files para fazer tags simples que demonstram como reutilizar layout através dos arquivos de tags.

Tag Files e Tag Libs

Antes de iniciarmos, vamos destacar as diferenças entre os conceitos de Tag Files e Tag Libs.

Como os nomes sugerem, Tag Files refere-se a “arquivos de tags”, enquanto que Tag Libs refere-se a “bibliotecas de tags”.

Para utilizar Tag Libs, você precisará primeiro instalar as bibliotecas necessárias. O mais comum é utilizar as tags padrão da implementação JSTL 2.0 (disponível para download no site da Sun), ou então implementar as suas próprias tags. A instalação consiste em copiar alguns arquivos .jar para a pasta WEB-INF/lib e os arquivos XML .tld correspondentes a cada biblioteca para o interior da pasta WEB-INF da sua aplicação.

Tag files, por sua vez, não exige a instalação de nenhuma biblioteca extra, nem configurações ou arquivos XML adicionais. Você precisa apenas criar os seus “arquivos de tags”, que são, nada mais, do que arquivos com extensão .tag na pasta WEB-INF/tags da sua aplicação.

Outro detalhe é em relação à diretiva <%@taglib, presente nas páginas JSP para indicar o uso de tags personalizadas. Para Tag Files, utiliza-se o atributo tagdir (ver Listagem 1), cujo valor é algum diretório no interior da pasta WEB-INF/tags da sua aplicação. Este diretório contém os arquivos .tag que correspondem, um a um, às implementações de suas tags personalizadas.

 

Listagem 1. Exemplo de configuração para a utilização de Tag Files em uma página JSP.

1 %@taglib prefix="p" tagdir=”/WEB-INF/tags/”%>

2

3

 

Para Tag Libs, utiliza-se o atributo uri (ver Listagem 2), cujo valor é algum arquivo XML .tld no interior da pasta WEB-INF da sua aplicação. Este arquivo .tld (Tag Library Descriptor, ver Nota 1) corresponde a uma ou mais de uma tag personalizada. Como cada Tag Lib é implementada em uma classe Java, é neste arquivo .tld que definimos qual classe corresponde a qual tag. Este arquivo também define as demais características da tag, como o seu nome, seus atributos, se os atributos são obrigatórios ou não, entre outros.

 

 

Listagem 2. Exemplo de configuração para a utilização de Tag Libs em uma página JSP.

1 <%@taglib prefix="p" uri=”/WEB-INF/fooBar.tld”%>

2

3

 

Nota 1. O arquivo Tag Library Descriptor

Arquivos .tld servem para informar as características das tags que foram implementadas. Este arquivo também possui a configuração sobre qual versão das especificações JSTL e JSP é utilizada na aplicação. É também o local onde se pode colocar informações gerais sobre o uso da tag.

Primeiro exemplo de Tag Files: tag sem corpo

Vamos agora apresentar três maneiras de se implementar e utilizar Tag Files. A implementação Tag Files necessita de apenas um arquivo .tag para cada tag personalizada e este, no nosso exemplo, será constituído de apenas código HTML. Feito isto, implementaremos as mesmas três tags como Tag Libs, para mostrar que, para cada tag personalizada, se faz necessário criar uma classe Java e um arquivo .tld.

Primeiramente vamos apresentar o exemplo mais simples de um arquivo de tags: uma tag que apenas exibe um texto na tela. Nossa tag representará o tradicional “Hello, Word!”, que apenas retornará o texto “Olá, Mundo!”. A estrutura dos arquivos é bastante simples, conforme mostra a Figura 1 que exibe a estrutura dos arquivos desta aplicação.

 

image002.jpg

Figura 1. O primeiro exemplo de Tag Files, no arquivo olaMundo.tag.

 

A aplicação é formada por três arquivos:

·         default.jsp: é a página JSP que utilizará a tag que estamos demonstrando. Possui uma diretiva <%@taglib que informa onde se encontra a implementação da tag, conforme mostra a Listagem 3;

·         WEB-INF/tags/olaMundo.tag: é a implementação da tag olaMundo (ver Listagem 4);

·         WEB-INF/web.xml: descritor da aplicação web (padrão JSP). Contém apenas informação sobre qual versão da especificação de Servlets será utilizada (ver Listagem 5).

 

Listagem 3. Utilizando uma tag personalizada em uma página JSP.

1 <%@taglib prefix="om" tagdir="/WEB-INF/tags/"%>

2

3

4    

5        

6    

7 ...

Quer ler esse conteúdo completo? Tenha acesso completo