Esse artigo faz parte da revista Java Magazine edição 13. Clique aqui para ler todos os artigos desta edição.

AMILY: 'Verdana','sans-serif'; mso-bidi-font-family: Palatino">É comum em aplicações web a ne­cessidade de apresentar algum tipo de listagem para o usuário, e quando a quantidade de itens é grande, torna-se importante exibir os dados de forma paginada, reduzindo os tempos de resposta e mantendo a escalabilidade da aplicação. A paginação de dados resolve vários problemas. Normalmente apenas alguns dados de uma consulta são real­mente utilizados; a exibição de listagens extensas pode consumir muitos recursos do servidor de banco de dados, e aumentar desnecessariamente o tráfego da rede e o consumo de memória (causando a instan­ciação de um grande número de objetos que não serão usados).

 

Muitas vezes são criadas soluções pró­prias para a paginação. Acaba-se “rein­ventando a roda” quando há ferramentas prontas que podem ajudar muito, ou até mesmo solucionar inteiramente o proble­ma. Dentre as várias alternativas, esco­lhemos duas bibliotecas de tags (taglibs) com enfoques diferentes, mas capacidades semelhantes de paginação: a Pager Tag Li­brary e a Display Tag Library. A primeira é voltada totalmente para a paginação; a segunda é mais forte na apresentação dos dados. Vamos mostrar exemplos de ambas, buscando um resul­tado semelhante ao da Figura 1 – uma listagem paginada com índice para navegação, num es­tilo bastante popular na web. Nos arquivos disponíveis para download, incluímos exemplos que usam recursos exclusivos de cada taglib.

 

Usamos também tags da JSTL, a biblioteca padrão de JSP (veja detalhes sobre o assunto na série de artigos “JSTL – Guia Completo”, nas Edições 7, 8 e 9). Para executar as aplica­ções, utilizamos o Tomcat e uma base de dados MySQL, que pode ser criada com o script da Listagem 1. Veja os detalhes básicos da configuração desse ambiente nos quadros “Primeiros passos” e “Ins­talação das taglibs”.

 

No quadro “Versão alternativa com HSQLDB”, mostramos como configurar o ambiente para utilizar esse banco de da­dos embutido, em vez do MySQL, criando uma solução “autocontida” (veja detalhes sobre o HSQLDB na Edição 7). Final­mente, no quadro “Paginação na web ou no banco de dados” são analizados os limites e aplicabilidade das bibliotecas de tags apresentadas.

Pager

A taglib Pager oferece tudo o que é re­almente necessário para a paginação de dados, embora apresente poucos recursos de customização. Ela é distribuída em um pacote WAR, é software livre (LGPL) e vem com vários exemplos que simulam a aparência de buscadores populares, como Google, Yahoo e Altavista.

 

A Listagem 2 mostra um exemplo utili­zando a taglib Pager e as tags sql da JSTL, usadas para o acesso ao banco de dados (note que referenciamos uma folha de esti­los CSS, para padronizar a formatação).

Veja a estrutura simplificada usada para as tags da biblioteca Pager :

 

<pg:pager ... >

  <pg:param ... />

  <!-- Itens para paginação: uma tag por item -->

  <pg:item> ... </pg:item>

  <!-- Indice do paginador -->

  <pg:index>

    <! -- Elementos de paginação -->

    <pg:first> ... </pg:first>

    <pg:prev>  ... </pg:prev>

    <pg:page>  ... </pg:page>

    <pg:pages> ... </pg:pages>

    <pg:next>  ... </pg:next>

    <pg:last>  ... </pg:last>

    <pg:skip>  ... </pg:skip>

  </pg:index>

</pg:pager>

...

Quer ler esse conteúdo completo? Tenha acesso completo