JSTL - JSP Standard Tag Library
Biblioteca Padrão de Tags JSP
Qual o problema?
O que queremos?
Qual a solução?
JSTL
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<body bgcolor="#FFFFFF"><jsp:useBean id="agora" class="java.util.Date"/>
<br>
Versão Curta: <fmt:formatDate value="${agora}" /><br> Versão Longa: <fmt:formatDate value="${agora}" dateStyle="full"/>
</body>
</html>
Versão Curta: 25/07/2005
Versão Longa: Segunda-feira, 25 de Julho de 2005
EL - Expression Language
Operador | Descrição | Exemplo | Resultado |
== |
Igualdade | ${5 == 5} | true |
!= ne |
Desigualdade | ${5 != 5} | false |
< lt |
Menor que | ${5 < 7} | true |
> |
Maior que | ${5 > 7} | false |
<= le |
Menor ou igual que | ${5 le 5} | true |
>= |
Maior ou igual que | ${5 ge 6} | false |
empty | Checa se um parâmetro está vazio | ${user.lastname} | depende |
and && |
E | ${param.month == 5 and param.day == 25} | depende |
or || |
OU | ${param.month == 5 or param.month == 6} | depende |
+ | soma | ${4 + 5} | 9 |
! not |
Negação | ${not true} | false |
Bibliotecas padrão
Biblioteca JSTL | Prefixo | URI | Tipos de uso | Exemplo de tag |
Core | c |
http://java.sun.com/jstl/core |
|
<c:forEach> |
Processamento de XML | x |
http://java.sun.com/jstl/xml |
|
<x:forEach> |
Internacionalização e formatação | fmt |
http://java.sun.com/jstl/fmt |
|
<fmt:formatDate> |
Acesso a banco de dados via SQL | sql |
http://java.sun.com/jstl/sql |
|
<sql:query> |
Tags básicas
Tags de Iteração
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body bgcolor="#FFFFFF"><c:forEach var="i" begin="2" end="5">
</body>
<c:out value="${i}"/>;
</c:forEach>
</html>
2;3;4;5;
- Imprime os valores entre dois e cinco.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body bgcolor="#FFFFFF">
<c:forTokens var="i" delims="," items="2,3,4,5">
<c:out value="${i}"/>;
</c:forTokens > </body> </html>- Saida
2;3;4;5;
Tags condicionais
Tag <c:if>
- Equivamente ao comando if
- Atributo test realiza o teste condicional
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <body bgcolor="#FFFFFF"> Elementos pares: <c:forTokens var="i" delims="," items="2,3,4,5"> <c:if test="${i % 2 == 0}"> <c:out value="${i}"/>; </c:if> </c:forTokens > </body> </html>- Saída
Elementos pares: 2; 4;- Uma falha da biblioteca é a inexistência do complemento do comando if, ou seja, o comando else (caso se deseje criar fluxos alternativos, deve-se utilizar <c:choose>).
Tag <c:choose>
- Equivalente ao comando switch
- Tags utilizadas
- <c:when>, realiza o teste condicional;
- <c:otherwise>, se todos os testes condicionais falharem, ele será utilizado.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <body bgcolor="#FFFFFF"> <c:forTokens var="i" delims="," items="2,3,4,5"> <c:choose> <c:when test="${i % 2 == 0}">${i} (par)</c:when> <c:otherwise>${i} (impar)</c:otherwise> </c:choose> ; </c:forTokens > </body> </html>- Saída
2 (par) ; 3 (impar) ; 4 (par) ; 5 (impar) ;Tags de atribuição e importação
Tag <c:import>
- Permite importar páginas web do mesmo contexto web, de contextos diferentes e até mesmo de máquinas diferentes.
Atributo Descrição Requerido? Default url URL a ser importada Sim Nenhum context "/" seguido do nome da aplicação web local
Não Contexto corrente var Nome do atributo onde será armazenado o conteúdo da página importada Não Nenhum scope Escopo do atributo onde será armazenado o conteúdo da página importada
Pode ser: page, request, session, application
Não page
Tag <c:set>
- Permite a atribuir valores a variáveis em um determinado escopo.
Atributo Descrição Requerido? Default value Expressão a ser processada Não Nenhum var Nome do atributo onde será armazenado o resultado do processamento do atributo "value" Não Nenhum scope Escopo do atributo.
Pode ser: page, request, session, application
Não page
- Exemplo
- Nesse exemplo, a variável "title" é criada com o valor "Welcome to Page 1" com escopo "request"
- Em seguida, a página "header.jsp" é carregada, e seu conteúdo é armazenado na variável "headerText"
- Finalmente, imprimimos o conteúdo da variável "title" e da variável "headerText"
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<body>
<c:set scope="request" var="title" value="Welcome to Page 1"/>
<c:import var="headerText" url="header.jsp"/>
<br>Minha página:${title}
<br>Texto importado:${headerText}
</body>
</html>
- Arquivo "header.jsp"
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> #${title}#
- Saída
Minha página:Welcome to Page 1 Texto importado: #Welcome to Page 1#
Acessando objetos Java
package test; import java.util.*; import java.io.*; public class ColecaoDeNomes implements Serializable{ private Collection nomes = new ArrayList(); public ColecaoDeNomes() { nomes.add("Maria"); nomes.add("Zeca"); nomes.add("Carlos"); } public Collection getNomes() { return nomes; } }
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <body bgcolor="#FFFFFF"> <jsp:useBean id="colecao" class="teste.ColecaoDeNomes"/> <c:forEach var="nome" items="${colecao.nomes}"> <br>${nome} </c:forEach > </body> </html>
Maria Zeca Carlos
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html> <body bgcolor="#FFFFFF"> <jsp:useBean id="colecao" class="teste.ColecaoDeNomes"/>
<table border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td bgcolor="#e0e0e0">Id</td>
<td bgcolor="#e0e0e0">Nome</td>
</tr>
<c:forEach var="nome" items="${colecao.nomes}" varStatus="status">
<tr> <td bgcolor="#f0f0f0"> <c:choose>
<c:when test="${status.first}">Primeiro</c:when>
<c:when test="${status.last}">Último</c:when>
<c:otherwise>Número ${status.count}</c:otherwise> </c:choose>
</td>
<td bgcolor="#f0f0f0">${nome}</td>
</tr>
</c:forEach > </table>
</body>
</html>
Id | Nome |
Primeiro | Maria |
Número 2 | Zeca |
Último | Carlos |
Instalação de uma aplicação que utilize JSTL
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. --> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> <welcome-file-list> <welcome-file>index.htm</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> </web-app>
Aprofundando-se em JSTL