Olá desenvolvedores, hoje iremos falar sobre o JSTL – JavaServer Pages Standard Tag Library ouBiblioteca Padrão de Tags JSP. Esta biblioteca que faz parte do escopo de desenvolvimento da plataforma de desenvolvimento Java EE, esta no contexto do JSP – JavaServer Pages. O JSTL adiciona uma biblioteca de tags JSP para tarefas comuns.
Mas dada a facilidade de implementação do JSTL junto ao JSP, ou seja, usando tags em vez de código Java é comum que desenvolvedores principalmente no início, façam uso exacerbado de scriptlets. Resguarda as devidas proporções de uso, sua utilização é ideal para aplicações rápidas, não robustas.
É interessante observar que o recurso EL – Expression Language foi introduzido pelo JSTL. A Expression Language ou Linguagem de Expressão é usada principalmente em aplicações Java Web para incorporar expressões em páginas web, visto que constitui uma forma simples de acessar e manipular objetos. A sintaxe de uma EL é composta por um “cifrão”, seguido por um par de chaves, contendo o nome do objeto.
${objeto.nomeAtributo}
Ela permite ainda a criação de expressões aritméticas e lógicas. Assim, dentro de uma expressão JSP EL, você pode usar números inteiros, números de ponto flutuante, cadeias, e os valores booleanos true e false.
IMPORTANDO A BIBLIOTECA JSTL
Para poder utilizar o JSTL é preciso declará-lo em uma página JSP, e o faremos na página principal a index.jsp. Neste caso, a declaração inclui a biblioteca de tags do pacote core, que inclui tags relacionadas à lógica e controle como (, entre outras). E o prefixo “C” que será utilizado para referenciar a biblioteca core, a partir dele serão listados todas as tags desta biblioteca.
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
O Eclipse apontará um erro na declaração da taglib, para corrigir será necessário acessar a pasta bin do servidor Apache TomCat a lib jstl-1.2.jar. Se ela não esteja dentro da pasta teremos que fazer o download da mesma.
Desse modo, no navegador de sua preferência acesse a página MVN Repository para fazer o download do arquivo .jar para dentro da subpasta lib que está dentro da subpasta WEB-INF. Pronto, o erro irá desaparecer.
TAGS JSTL
Agora sim, o ambiente está pronto para começarmos a desenvolver. Comecemos com a tag <c: out>, que serve para exibir dados em um JSP. Sempre dentro do escopo da tag <body> insira a linha de código abaixo.
<c:out value="${'Bem-vindo ao JSTL1'}" />
TAG IMPORT
A próxima tag é o <c: import> esta tag tem a mesma função que o include, mas com ela podemos apontar para urls inteiras. Ou seja, ela faz a recuperação de uma URL absoluta ou relativa, e traz para dentro da sua página o conteúdo HTML da página para qual apontou.
Será preciso declarar uma variável e depois recuperá-la, e note que para a variável não utilizaremos as aspas simples.
<c:import var="data" url="https://www.google.com.br" />
<c:out value="${data}"/>
TAG SET
A próxima será a tag <c: set> que serve para armazenar dados. É importante ressaltar que podemos determinar o escopo da variável, isto é, se ela terá a validade de uma ou mais sessões, ou se terá validade somente nesta o naquela página. E o valor da tag set, será uma expressão que será armazenada na variável data e posteriormente recuperada, onde o resultado será exibido.
<c:set var="data" scope="page" value="${500 * 5}" />
<c:out value="${data}" />
TAG REMOVE
E então você “setou” e deseja removê-lo, para isso poderá utilizar a tag <c: remove> que serve para apagar dados. No caso deste exemplo a instrução estará entre o set e o out.
<c:remove var="data"/>
TAG CATCH
Tem tag de tratamento de exceção? Tem também, é a <c: catch>, e como já intuímos, esta tag é utilizada para o tratamento de erros, ela captura qualquer Throwable que ocorre em seu corpo. Vejamos na prática como ela funciona, para simular um erro, criaremos uma variável que receberá o resultado de uma divisão por zero.
<c:catch var=”erro”><%int var = 100 / 0; %></c:catch>
Mas é preciso exibir o erro, para que possamos saber o que está acontecendo, utilizaremos então a tag <c: if>, que implementa um laço de decisão. Desse modo, se acontecer um erro, exibiremos este erro.
<c:if test="${erro != null}">
${erro.message}
</c:if>
A resposta a esta implementação será “/ by zero”, apontando que o erro se refere a uma tentativa de dividir um número por zero.
TAG CHOOSE
Agora iremos aprender uma tag <c: choose> que nos permite fazer uma verificação. Ela estabelece um contexto para operações condicionais mutuamente exclusivas, marcadas por <when> e <otherwise>. Onde primeiro <when> é utilizado para determinar as condições, mas se nenhuma das condições for satisfeita, o fluxo de processamento entrará no <otherwise>.
Assim, inicialmente iremos “setar” uma variável que receberá o resultado de uma divisão.
O legal é que dentro de cada bloco de tags <c:when> poderíamos colocar uma página jsp, por exemplo.
Continuando com a exploração das tags, temos também a correspondente ao foreach, a tag <c: forEach>, que trabalha especificamente com objetos. Como atributos ela traz o var que recebe o nome da variável representando a entrada atual. O begin que marca o início e o end que grosso modo determina a condição de continuidade.
<c:set var="numero" value="${100/20}" />
<c:forEach var="n" begin="1" end="#{numero}">
item: ${n}
</c:forEach>
O resultado da implementação acima será: “Item: 1 Item: 2 Item: 3 Item: 4 Item: 5”. E observe também que aproveitamos a tag set para determinar o valor de parada.
TAG TOKEN
A próxima tag é a <c:token> cuja função é repetir os tokens, separados pelos delimitadores fornecidos. Em outras palavras ela promove a quebra de uma string sempre que encontrar o delimitador indicado
A resposta a esta implementação será ainda mais interessante: “Nome: Alex Nome: Fernando Nome: Egidio”.
TAG URL
E podemos também criar uma URL com parâmetros de consulta opcionais usando a tag <c:url>. Usaremos o atributo var para armazenar a URL formatada. E fora da url iremos escrever uma instrução jsp para “pegar” a variável.
Os parâmetros irão entrar na montagem da url, “/curso-jsp/acesoliberado.jsp?para1=Curso¶2=Java”.
Ainda no contexto das urls podemos, também, dada uma determinada condição, redirecionar para uma página específica.
EM POUCAS PALAVRAS
Vimos então uma série de tags que com certeza irão agilizar o desenvolvimento de suas aplicações. Unindo o conhecimento adquirido até o momento, é possível implementar muita coisa bacana. E é o que iremos fazer a partir do próximo tutorial, eu fico por aqui.