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

jm19_capa.gif 

Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

JSTL no Tomcat 5

Crie páginas JSP complexas sem código Java

Aprenda na prática a usar a JSTL, que fornece um conjunto padronizado de tags, eliminando a necessidade de scriptlets em páginas JSP

Na primeira parte desta série, na Edição 18, vimos a instalação do Tomcat 5.0.x, suas ferramentas de administração e como escrever páginas JSP 2.0. Propositadamente, foram deixados de fora alguns recursos da especificação JavaServer Pages, pois o objetivo não é escrever aplicações inteiramente como páginas JSP. Queremos utilizar a tecnologia apenas como camada de apresentação, deixando a lógica de negócios e o acesso a dados para classes Java “tradicionais”, que são bem melhor equipadas para a tarefa.

Nesta segunda parte, o objetivo é apresentar na prática a JSTL, a biblioteca padrão de tags JSP. São demonstrados também os recursos incorporados à versão 1.1 da JSTL, que foi criada para compatibilizá-la com novas APIs do JSP 2.0. A JSTL permite criar páginas dinâmicas bastante complexas sem utilizar nenhum scriptlet, ou seja, sem escrever código Java na página JSP, o que facilita bastante a interação entre desenvolvedores e web designers. Além disso, fornece tags que tornam fáceis tarefas que exigiriam várias linhas de código Java, como a formatação de números e datas seguindo as configurações regionais do usuário.

Instalando o JSTL no Tomcat 5

Para que possamos tirar proveito da JSTL, iremos acrescentar ao nosso ambiente (que atualmente é apenas o Tomcat 5.0.x) outro pacote de software livre fornecido pelo projeto Apache Jakarta, o Taglib-Standard, que é a implementação de referência da JSTL.

Visite jakarta.apache.org/site/binindex.cgi e navegue até o subtítulo “Taglibs”; clique em “Library Releases” e na página seguinte entre na pasta standard. Ou utilize diretamente um dos muitos sites espelho do projeto, por exemplo ftp.pucpr.br/apache/jakarta/taglibs. Entre na pasta binaries e baixe o arquivo jakarta-taglibs-standard-1.1.1.zip, ou uma versão mais recente que se torne disponível depois deste artigo ser publicado. Descompacte o pacote ZIP em um diretório de sua preferência. O resultado será a criação da estrutura de pastas apresentada na Figura 1.

 

Atenção: Não baixe os arquivos jakarta-taglibs-standard-1.0.x.zip. Eles são voltados ao JSP 1.2 (Tomcat 4.x) e não para o JSP 2.0 (Tomcat 5.0.x). Veja mais no quadro "JSTL 1.1 x JSTL 1.0".

 

Na verdade, você nunca irá instalar o JSTL em um container web J2EE como o Tomcat – você incorpora a JSTL à sua aplicação web, ou seja, adiciona-a ao pacote WAR correspondente, como uma biblioteca de classes qualquer.

Testando a instalação da JSTL

Copie o arquivo standard-examples.war fornecido com o Taglibs Standard para a pasta webapps da sua instalação do Tomcat 5.0.x (a versão do JSTL sugerida não irá funcionar com a série 4.x do Tomcat). Inicie o servidor e visite a URL http://127.0.0.1:8080/standard-examples. O resultado deverá ser o mostrado na Figura 2.

Observe a faixa azul com links para os exemplos, que são categorizados pelas tags utilizadas. Entre na categoria “Conditionals” e procure pelo exemplo “<choose> Mutually Exclusive Conditional Execution”. Clique no ícone com engrenagens ( ). O resultado deverá ser o apresentado na Figura 3.

O outro ícone que aparece em todos os exemplos () exibe o fonte do exemplo, ou seja, a página JSP original com os tags customizados. A aplicação demo fornecida com o Taglibs Standard é bastante útil como tutorial e até mesmo como referência ao para o conjunto de tags padrão.

A documentação do Taglibs Standard, que vem empacotada no arquivo standard-doc.war, contém apenas arquivos HTML estáticos. Portanto pode ser descompactada pelo utilitário jar do JSDK ou qualquer outra ferramenta que suporte o formato ZIP, e ser consultada sem que seja feito o deploy em um container web. Porém, esta documentação descreve apenas particularidades da implementação feita pela Apache Foundation do padrão JSTL criado pelo JCP, como quais pacotes JAR contêm quais tags e o JavaDoc das classes que implementam esses tags.

Será necessário baixar a especificação (ou algum tutorial) para obter a lista de tags e seus atributos. Afinal, como o pacote Jakarta Taglibs Standard apenas implementa a especificação JSTL, não há necessidade de repetir em sua documentação o que já foi dito na especificação. Uma opção mais leve para conhecer detalhes da JSTL, e suficiente para a maioria dos casos, é a série "JSTL Guia Completo" de Felipe Leme, publicada nas Edições 7, 8 e 9. Mais sobre o projeto Jakarta Taglibs em geral pode ser visto na Edição 15.

Primeiro exemplo: tags de formatação

Poderíamos inserir páginas JSP no contexto standard-examples para iniciar o aprendizado de JSTL, mas, como vimos na primeira parte como criar um novo contexto no Tomcat, vamos partir logo para uma aplicação independente, livre de páginas e classes desnecessárias, e que o leitor poderá usar como modelo para suas próprias aplicações.

Em uma pasta qualquer, crie o diretório javamagazine-jstl, que será a raiz do nosso projeto. Dentro dele, crie as pastas WEB-INF/classes e WEB-INF/lib, e o arquivo WEB-INF/web.xml mínimo, que é apresentado na Listagem 1, para quem não está com a edição anterior da Java Magazine à mão.

Finalizada a estrutura de nossa aplicação web, vamos criar uma página que ilustra um pouco do poder da JSTL. Ela exibe a data atual, formatada corretamente para as configurações regionais do usuário, o que exigiria o uso de várias linhas de código Java se fossem usados scriptlets.

A Listagem 2 apresenta a página JSP (que será explicada linha a linha mais adiante). Agora vamos nos concentrar em instalar a aplicação no Tomcat 5 e executá-la com sucesso.

Salve a página no arquivo hoje.jsp sob a raiz do projeto e copie os arquivos .jar que estão dentro da pasta lib da sua instalação do Taglibs Standard para a pasta WEB-INF/lib do projeto. Isso é necessário para que a aplicação inclua as classes Java que implementam os tags do JSTL. O resultado deve ser uma estrutura de diretórios idêntica à apresentada na Figura 4.

 

Nota: A instalação do JSTL feita anteriormente não foi propriamente uma instalação, visto que não torna a JSTL automaticamente disponível para todas as aplicações hospedadas pelo Tomcat. Cada aplicação deve incluir, por si só, as taglibs desejadas, independentemente das bibliotecas usadas por outras aplicações hospedadas no mesmo servidor.

 

Para fazer o deployment de uma aplicação no Tomcat, há três alternativas:

1.      Inserir toda a estrutura da aplicação em um pacote WAR, que pode ser criado com o utilitário jar padrão fornecido com o JSDK, e então copiar o pacote para o diretório webapps do Tomcat.

2.      Copiar (ou mover) o diretório raiz do projeto inteiro para dentro da pasta webapps do Tomcat; isto é o que chamamos de pacote aberto (ou "explodido").

3.      Editar o arquivo server.xml do Tomcat para criar um novo contexto, indicando que o diretório raiz do nosso projeto é o diretório de páginas do contexto.

 

A segunda opção é mais fácil, além de oferecer a possibilidade de se modificar uma página JSP e ver imediatamente o resultado no navegador (após uma atualização ou recarga da página). Isso sem necessidade de reiniciar o Tomcat ou recarregar o contexto. Portanto, daqui em diante, vamos considerar que a pasta javamagazine-jstl, descrita na Figura 4, está dentro da pasta webapps do Tomcat. Sendo isto verdade e com o servidor em execução, podemos ver o resultado da execução do exemplo, pedindo ao navegador a URL http://127.0.0.1:8080/javamagazine-jstl/hoje.jsp. A Figura 5 apresenta a página que o leitor deverá ver.

Se algo saiu errado, certifique-se que a estrutura de diretórios e arquivos em seu contexto (subdiretório da pasta webapps do Tomcat) esteja correta e que os arquivos hoje.jsp e web.xml foram digitados exatamente como nas listagens. Confirme também se foram copiados os JARs do Taglibs Standard para a pasta WEB-INF/lib da aplicação de exemplo. Por fim, verifique nos logs do Tomcat se houve erros durante o deployment da aplicação ou na inicialização do próprio servidor.

 

Dica: Como a cópia de arquivos não é uma operação atômica na maioria dos sistemas operacionais, pode ser que o Tomcat inicie a ativação da nova aplicação antes que todos os seus arquivos estejam em seus lugares, fazendo com que o servidor considere que a aplicação está “incompleta”, não a ativando. Neste caso, utilize a aplicação ...

Quer ler esse conteúdo completo? Tenha acesso completo