0% acharam este documento útil (0 voto)
176 visualizações7 páginas

JSTL

Este documento descreve a JSTL (JSP Standard Tag Library), uma biblioteca padrão de tags para JSP que permite criar páginas dinâmicas sem escrever código Java nelas. A JSTL consiste em bibliotecas com tags para diferentes propósitos como formatação, acesso a banco de dados e processamento de XML.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
176 visualizações7 páginas

JSTL

Este documento descreve a JSTL (JSP Standard Tag Library), uma biblioteca padrão de tags para JSP que permite criar páginas dinâmicas sem escrever código Java nelas. A JSTL consiste em bibliotecas com tags para diferentes propósitos como formatação, acesso a banco de dados e processamento de XML.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 7

17/09/2018 JSTL

JSTL - JSP Standard Tag Library

Biblioteca Padrão de Tags JSP

Qual o problema?

Dificuldade de contruir páginas JSPs bem organizadas internamente;


Páginas JSPs com muito código Java;
Web designers não sabem programar em Java;
Problemas na interação entre desenvolvedores e web designers.

O que queremos?

Criar páginas dinâmicas bastante complexas sem escrever código Java dentro delas;
Fornecer tags que tornem fáceis tarefas que exigiriam várias linhas de código Java,
como formatação de números e datas seguindo configurações regionais do usuário;
Facilitar a interação entre desenvolvedores e web designers.

Qual a solução?

Utilizar JSTL.

JSTL

JSTL consiste em uma coleção de bibliotecas, tendo cada uma um propósito bem
definido, que permitem escrever páginas JSPs sem código Java, aumentando assim a
legibilidade do código e a interação entre desenvolvedores e web designers.
Uma página JSTL é uma página JSP contendo um conjunto de tags JSTLs.
Cada tag realiza um determinado tipo de processamento (equivalente a código Java
dentro de JSP).
Cada tag JSTL, faz parte uma biblioteca JSTL.
Uma página JSTL pode utilizar várias bibliotecas JSTLs.
Exemplo de uma página 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>

O exemplo apresenta a data atual em dois formatos: um curto e outro longo.


Observe que não existe nenhum código Java.
Na primeira linha, temos o seguinte: <%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
Essa declaração informa ao compilador de JSPs utiliza um biblioteca de
tags, cujos tags serão reconhecidos pelo prefixo "fmt", de modo a evitar
possíveis conflitos com tags de mesmo nome de outras bibliotecas.
A biblioteca de tags é identificada pelo atributo uri.
A tag padrão <jsp:useBean> é utilizada para instanciar um objeto
java.util.Date (inicializado por padrão com a data e hora atuais do sistema)
A variável agora, criada pelo tag <jsp:useBean>, é depois referenciada
dentro do atributo value dos tags <fmt:formatDate>, que aparece duas
vezes na página.
Observe que o atributo dateStyle do tag <fmt:formatDate> define se será
utilizado um formato resumido da data ou um formato longo.

http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 1/7
17/09/2018 JSTL

Versão Curta: 25/07/2005

Versão Longa: Segunda-feira, 25 de Julho de 2005

EL - Expression Language

O valor de qualquer expressão pode ser acessado da seguinte forma: ${expressão}


Exemplo

Outros exemplos
Operador Descrição Exemplo Resultado
== Igualdade ${5 == 5} true
eq
!=
Desigualdade ${5 != 5} false
ne
<
Menor que ${5 < 7} true
lt
> Maior que ${5 > 7} false
gt
<=
Menor ou igual que ${5 le 5} true
le
>= Maior ou igual que ${5 ge 6} false
ge
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
!
Negação ${not true} false
not

Bibliotecas padrão
Biblioteca JSTL Prefixo URI Tipos de uso Exemplo de tag
Acessar e modificar
Core c http://java.sun.com/jstl/core dados em memória <c:forEach>
Comandos condicionais
Loop

Parsing (leitura) de
documentos
Processamento de Impressão de partes de
x http://java.sun.com/jstl/xml documentos XML <x:forEach>
XML Tomada de decisão
baseado no conteúdo de
um documento XML

Leitura e impressão de
números
Internacionalização e Leitura e impressão de
fmt http://java.sun.com/jstl/fmt datas <fmt:formatDate>
formatação Ajuda a sua aplicação
funcionar em mais de
uma lingua

Acesso a banco de Leitura e escrita em


sql http://java.sun.com/jstl/sql banco de dados <sql:query>
dados via SQL

Tags básicas

Tags de Iteração

A biblioteca core do JSTL fornece tags para executar trechos repetidamente, de


maneira similar aos comandos for e while da linguagem Java.
Tag <c:forEach>
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 2/7
17/09/2018 JSTL

Permite realizar um loop


Exemplo
Imprime os valores entre dois e cinco.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<html>
<body bgcolor="#FFFFFF">

<c:forEach var="i" begin="2" end="5">


<c:out value="${i}"/>;
</c:forEach>

</body>
</html>

Saída

2;3;4;5;

Tag <c:forTokens>
Quebra uma string em substrings, de acordo com o delimitador indicado como
atributo
Exemplo
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>).
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 3/7
17/09/2018 JSTL

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
Contexto
context "/" seguido do nome da aplicação web local Não
corrente
Nome do atributo onde será armazenado o
var Não Nenhum
conteúdo da página importada
Escopo do atributo onde será armazenado o
scope conteúdo da página importada Não page
Pode ser: page, request, session, application

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
Nome do atributo onde será armazenado o resultado
var Não Nenhum
do processamento do atributo "value"
Escopo do atributo.
scope Não page
Pode ser: page, request, session, application

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"/>

http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 4/7
17/09/2018 JSTL
<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

Os exemplos anteriores se detiveram em apresentar apenas as tags JSTL básicas.


Vamos agora mostrar alguns exemplos mais elaborados utilizando objetos Java.
Exemplo 1
Acessando uma coleção de objetos Java
Seja a classe Java ColecaoDeNomes
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;
}
}

Queremos iterar a coleção de nomes existente dentro da classe


ColecaoDeNomes (veja o exemplo abaixo)
Observe que o objeto da classe ColecaoDeNomes foi instanciado
utilizando a tag <jsp:useBean>.
Além disso, o nome da instância criada é "colecao".
Note que o atributo items da tag <c:forEach> faz referência à instância
criada (batizada como "colecao").
Os objetos existentes dentro da coleção nomes (java.util.Collection)
dentro da classe ColecaoDeNomes está sendo acessado da seguinte
forma: ${colecao.nomes}
${colecao.nomes}: colecao é o nome da instância da classe
ColecaoDeNomes recém criada
${colecao.nomes}: nomes faz referência ao nome do método
getNomes()

<%@ 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 >

http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 5/7
17/09/2018 JSTL
</body>
</html>

Saída

Maria
Zeca
Carlos

Exemplo 2
Agora utilizando mais recursos da tag <c:forEach>
<%@ 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>

Saída
Id Nome
Primeiro Maria
Número 2 Zeca
Último Carlos

Instalação de uma aplicação que utilize JSTL

Colocar os jars (jstl.jar e standard.jar) dentro de WEB-INF/lib


Editar o arquivo web.xml
Exemplo de um arquivo web.xml

<?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>

http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 6/7
17/09/2018 JSTL

Copiar os .class para a pasta WEB-INF/classes


Copiar os arquivos JSPs com as tags jstl do diretório da principal da aplicação.

Aprofundando-se em JSTL

Livro "JSTL in Action"


Exemplos da API

http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/jstl/jstl.htm 7/7

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy