Aula 12 - JSTL
-
Upload
antoniocezars -
Category
Documents
-
view
28 -
download
3
Transcript of Aula 12 - JSTL
Objetivos da AulaObjetivos da AulaObjetivos da Aula
• Aprenderemos:
MotivaMotivaMotivaçççãoãoão
• Falta de padrão no desenvolvimento JSP– Scriptlets espalhados em vários páginas
– Código confuso = manutenção +trabalhosa
– Regras de negócio não deveriam ser tratadas dentro do JSP (foge ao padrão MVC)
– JSP deve ser usado somente para a camada de visualização (viewer), somente exibindo o conteúdo dos objetos e nada de scriptlets.
• Tag Libs– Biblioteca de Tags
– Estende a semântica das páginas jsp
– Tags personalizadas
– Facilita o entendimento de páginas jsp
JSTL JSTL JSTL --- JSP Standard JSP Standard JSP Standard TagTagTag LibraryLibraryLibrary
• Conjunto de marcações (tags) que encapsulam funcionalidades comuns a muitas aplicações JSP:
– Linguagem de Expressão
– Simplifica o processo de criação de páginas
– Redução ou supressão do uso de scriptlets• Melhoria na legibilidade;
Estrutura da JSTLEstrutura da JSTLEstrutura da JSTL
• Divisão em cinco taglibs:– Core: saída, repetição, decisão e seleção
• http://java.sun.com/jsp/jstl/core
– Database: acesso a BD• http://java.sun.com/jsp/jstl/sql
– Formatting e I18N: formatação e internacionalização• http://java.sun.com/jsp/jstl/fmt
– XML Processing: processamento de documentos XML• http://java.sun.com/jsp/jstl/xml
– Funções Diversas• http://java.sun.com/jsp/jstl/functions
Inclusão de Inclusão de Inclusão de TaglibsTaglibsTaglibs
• Formato:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml" %><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
TagsTagsTags JSTLJSTLJSTL
PrefixoSub-FunçãoÁrea
Manipulação de Stringsfn
Tamanho de ColeçõesFunções
sqlSQLBanco de Dados
Formatação de Datas e Números
Formatação de Mensagem fmt
Local
Internacionalização
Transformação
Controle de Fluxo xCore
XML
Gerenciamento de URL
Controle de Fluxo cSuporte a Variáveis
Core
Biblioteca JSTL
CORE
TagTagTag outoutout
• Definição:– Imprime o valor de uma expressão.
• Atributos:
• Corpo da tag:– Atributo default
Determina se os caracteres <,>,&,'," na string resultante devem ser convertido para código. Valor padrão é true.
FalseescapeXml
Valor padrão se o valor resultante é null.Falsedefault
value
Nome
Expressão avaliada.True
DescriçãoObrigatório
Exemplos Exemplos Exemplos outoutout
<c:out value="${umaExpressao}"/><c:out value="Texto${umaExpressao}${outraExpressao}"/>
<c:out value="Texto"/>
<c:out value="${pessoa.nome}" />
<c:out escapeXml="true" value="<html>" />
<c:out value="${a}" default="nulo" />
<c:out value="${a}"> Nulo</c:out>
TagTagTag ififif
• Definição:– Executa o corpo da tag apenas se a expressão de teste for
verdadeira.
• Atributos:
• Corpo da tag:– Bloco a ser executado se a expressão teste for verdadeira.
Escopo de var.FalseScope
Nome da variável de escopo exportada para o valor resultante do teste de condicional. O tipo da variável de escopo é Boolean.
Falsevar
test
Nome
Indica a condição a ser avaliada.True
DescriçãoObrigatório
Exemplo Exemplo Exemplo ififif
<c:if test=“${usuario.nome == 'Felipe' || usuario.nome == 'Michael'}”>Permissão ok!<br></c:if>
<c:if test=”${usuario.nome == 'Felipe'}” var=”acesso”>Permissão ok!<br></c:if>
Acesso: <c:out value=”${acesso}”/>
TagTagTag choosechoosechoose
• Definição:– Tag condicional que estabelece um contexto para operações
condicionais mutuamente exclusivas, definidas por <when> e <otherwise>.
• Atributos:– Não há atributos.
• Corpo da Tag:– Tags <when> (1 ou +) e <otherwise> (0-1)
TagTagTag whenwhenwhen
• Definição:– Inclui o que for definido em seu corpo se sua condição for avaliada
como verdadeira.
• Atributos:
• Corpo da Tag:– Bloco a ser executado quando condição teste for verdadeira
test
Nome
Testa a condição indicando se o corpo será ou não incluido.True
DescriçãoObrigatório
TagTagTag otherwiseotherwiseotherwise
• Definição:– Subtag da tag <choose> que acompanha as tags <when> e executa
somente se todas as condições anteriores forem avaliadas como “false”.
• Atributos:– Não há atributos.
• Corpo da Tag:– Bloco a ser executado quando condição teste for verdadeira.
ExemploExemploExemplo
<c:choose>
<c:when test=”${usuario.nome == 'Felipe'}”>Permissão ok!<br/>
</c:when>
<c:when test=”${usuario.nome == 'Michael'}”>Permissão ok!<br/>
</c:when>
<c:otherwise>
Permissão negada!<br/></c:otherwise>
</c:choose>
ExemploExemploExemplo
<c:choose>
<c:when test="${nota lt 30}">Reprovado
</c:when>
<c:when test="${nota lt 70}">Recuperação
</c:when>
<c:otherwise>
Aprovado</c:othewise>
</c:choose>
TagTagTag forEachforEachforEach
• Definição:– Tag de interação. Aceita diferentes tipos de coleções.
• Atributos:
• Corpo da Tag:– Bloco a ser executado em cada iteração.
Variável que recebe o status de cada iteração.FalsevarStatus
Variável que recebe o valor de cada iteração.Falsevar
Frequencia das iterações.Falsestep
Índice do último passo da iteração.Falseend
Índice do primeiro passo da iteração.Falsebegin
items
Nome
Coleção a ser iterada.False
DescriçãoObrigatório
Exemplo Exemplo Exemplo forEachforEachforEach
<table border="1" cellspacing="0" cellpadding="0"><c:forEach items="${listaPessoa}" var="pessoa" varStatus="status">
<tr>
<td><c:out value="${status.count}" /></td>
<td><c:out value="${parametro.nome}" /></td>
<td><c:out value="${parametro.sobrenome}" /></td>
</tr>
</c:forEach>
</table>
<ul>
<c:forEach var="i" begin="1" end="10"><li><c:out value="${i}"/> </li>
</c:forEach>
</ul>
TagTagTag forTokensforTokensforTokens
• Definição:– Iteração sobre os tokens de uma string.
• Atributos:
• Corpo da Tag:– Bloco a ser executado em cada iteração.
Variável que recebe o status de cada iteração.FalsevarStatus
Variável que recebe o valor de cada iteração.Falsevar
Frequencia das iterações.Falsestep
Índice do último passo para iteração.Falseend
Índice do primeiro passo para iteração.Falsebegin
Delimitadores dos tokens.Falsedelims
items
Nome
String com os tokens.True
DescriçãoObrigatório
Exemplo Exemplo Exemplo forTokensforTokensforTokens
<table>
<c:forTokens items="a,b;c,d,e,f;g;h" delims=",;" var="token" varStatus="status">
<tr>
<td><c:out value="${status.count}"/></td><td><c:out value="${token}"/></td>
</tr>
</c:forTokens>
</table>
ResumoResumoResumo
Iteração sobre tokens, separados pelos delimitadores fornecidos.
forTokens
Tag de iteração básica, aceita uma grande quantidade de tipos de coleções e suporta subsetting e outras funcionalidade.
forEach
Subtag de <choose> que acompanha as tags <when> e executa somente se todas as condições anteriores forem falsas.
otherwise
Subtag de <choose> que inclui seu corpo se sua condição for verdadeira.
when
Tag condicional que estabelece um contexto operações condicionais mutuamente exclusivas, definidas nas tag<when> e <otherwise>.
choose
Avalia o corpo da tag se a condição for verdadeira.if
Mesmo que <%= ... >, mas para expressões. out
TagTagTag setsetset
• Definição:– Define o valor de uma variável ou propriedade de um objeto.
• Atributos:
• Corpo da Tag:– Atributo value
Escopo da variável (page, request, session ou application).FalseScope
Propriedade do objeto alvo.Falseproperty
Objeto alvo.Falsetarget
Valor a ser atribuído na variável.Falsevalue
var
Nome
Nome da variávelFalse
DescriçãoObrigatório
Exemplo Exemplo Exemplo setsetset
<c:set var="nome" value="Andre"/><br>Variável nome: <c:out value="${nome}"/><br>
<c:set target="${usuario}" property="nome" value="${nome}"/>Propriedade nome do objeto usuário: <c:out value="${usuario.nome}"/><br>
TagTagTag removeremoveremove
• Definição:– Remove uma variável de escopo.
• Atributos:
• Corpo da Tag:– Não utilizado.
Escopo da variável (page, request, session ou application).Falsescope
var
Nome
Nome da variável a ser removida.True
DescriçãoObrigatório
Exemplo Exemplo Exemplo removeremoveremove
Antes da remoção: <c:out value="${nome}"/><br><c:remove var="nome"/><c:out value="${nome}" escapeXml="false">
Variável <i>nome</i> foi removida do escopo!</c:out>
TagTagTag catchcatchcatch
• Definição:– Captura uma exceção ocorrida no corpo da tag.
• Atributos:
• Corpo da Tag: – Bloco (html/jsp/tags) cujas exceções serão capturadas pela tag.
var
Nome
variável, de escopo de página (page), que receberá a exceção. Caso não seja definida, a exceção será ignorada.
False
DescriçãoObrigatório
Exemplo Exemplo Exemplo catchcatchcatch
<%-- O seguinte trecho gera exceção, já que a propriedade NOME não existe na classe usuario --%>
<c:catch var="excecao"><c:set target="${usuario}" property="nome" value="${nome}"/>
</c:catch>
Exceção: <c:out value="${excecao}">Nenhuma</c:out><br/>
TagTagTag urlurlurl
• Definição:– Cria uma string representando uma url
• Atributos:
• Corpo da Tag: – Tags <c:param> (opcionais).
Contexto da urlfalsecontext
Valor da url (relativa ou absoluta).falsevalue
Escopo da variável.falsescope
var
Nome
Variável que recebe a url. Caso omitido, url será impressa na página.
false
DescriçãoObrigatório
TagTagTag paramparamparam
• Definição:– Cria uma string representando uma url.
• Atributos:
• Corpo da Tag: – Atributo value
Valor do parâmetro.FalseValue
Name
Nome
Nome do parâmetro.True
DescriçãoObrigatório
Exemplo Exemplo Exemplo urlurlurl / / / paramparamparam
URL direto na página: <c:url value="hello.jsp"/>
URL com parâmetros atribuída a uma variável: <c:url value="/hello.jsp" var="url"><c:param name="nome" value="Andre"/><c:param name="sobreNome" value="Schwerz"/>
</c:url>
<c:out value="${url}"/>
TagTagTag redirectredirectredirect
• Definição:– Redireciona o cliente para outra URL.
• Atributos:
• Corpo da Tag: – Tags <c:param> (opcionais).
Contexto da URL redirecionada.Falsecontext
url
Nome
URL a ser redirecionada.False
DescriçãoObrigatório
Exemplo Exemplo Exemplo redirectredirectredirect
<c:redirect url="http://www.justjava.com.br"/>
<c:redirect url="/showUser.jsp"><c:param name="user" value="felipeal"/>
</c:redirect>
TagTagTag importimportimport
• Definição:– Importa o conteúdo de uma url.
• Atributos:
• Corpo da Tag: – Tags <c:param> (opcionais).
código de caracteres (opcional) do recurso da URLfalsecharEncoding
variável do tipo java.io.Reader que receberá a URLfalsevarReader
Url do recurso a ser importado.trueurl
Contexto da urlfalsecontext
Escopo da variável.falsescope
var
Nome
Variável que recebe a url. Caso omitido, url será impressa na página.
false
DescriçãoObrigatório
Biblioteca JSTL
FMT
• Sintaxe padrão
FMTFMTFMT
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
• Definição:– Formata um valor numérico de acordo com as preferências de localização
do usuário ou de forma customizada com número, moeda e porcentagem.• Atributos:
TagTagTag <<<fmtfmtfmt:::formatNumberformatNumberformatNumber>>>
Escopo da variávelFalsescope
Variável que conterá a saída.Falsevar
Dígitos mínimos da parte fracionária da saída.FalseminFractionDigits
Dígitos máximos da parte fracionária da saída.FalsemaxFractionDigits
Dígitos mínimos da parte inteira da saída.FalseminIntegerDigits
Dígitos máximos da parte inteira da saída.FalsemaxIntegerDigits
Indica se a saída conterá separadores decimais, de milhar, etc.FalsegroupingUsed
Símbolo da moeda.FalsecurrencySymbol
Código ISO da moeda.FalsecurrencyCode
Padrão de formatação.Falsepattern
Number | Currency |PercentFalsetype
value
Nome
Valor a ser formatado.False
DescriçãoObrig.
Exemplo Exemplo Exemplo <<<fmtfmtfmt:::formatNumberformatNumberformatNumber>>>
<fmt:formatNumber type="currency" value="999.999" /><fmt:formatNumber type="number" value="999.999" /><fmt:formatNumber type="percent" value="0.10" />
<fmt:formatNumber type="number" pattern="000.000" value="99.99" /><fmt:formatNumber type="number" pattern="##0.000" value="99.99" /><fmt:formatNumber type="number" pattern="#,#00.0#" value="2999" />
<fmt:formatNumber type="number" maxFractionDigits="2" value="999.999"/><fmt:formatNumber type="number" maxIntegerDigits="2" value="899.999"/>
R$ 1.000,00
999,999
10%
099,990
99,990
1.000
99,999
• Definição:– Analisa a representação de número, moeda ou porcentagem.
• Atributos:
• Corpo da Tag: – Atributo value
TagTagTag <<<fmtfmtfmt:::parseNumberparseNumberparseNumber>>>
Escopo da variável.Falsescope
Variável que conterá a saída.Falsevar
Especifica que somente a porção inteira deve ser analisada.FalseintegerOnly
Identifica locale para o analisador.FalseparseLocale
Padrão de formatação.Falsepattern
number | currency | percentFalsetype
value
Nome
String a ser analisadaFalse
DescriçãoObrigatório
Exemplo Exemplo Exemplo <<<fmtfmtfmt:::parseNumberparseNumberparseNumber>>>
<c:set var="reais" value="R$ 5,00" />
<fmt:parseNumber value="${reais}" type="currency"parseLocale="pt_BR" />
TagTagTag <<<fmtfmtfmt:::formatDateformatDateformatDate>>>
• Definição:– Formata data/hora
• Atributos:
• Corpo da Tag: – Não há corpo.
Escopo da variável.Falsescope
Variável que conterá a saídaFalsevar
TimeZone da data/hora a ser formatado.FalsetimeZone
Padrão de formatação customizadoFalsePattern
Formatação da hora: default | short | meddium | long |fullFalsetimeStyle
Formatação da data: default | short | meddium | long |fullFalsedataStyle
Date | Time | BothFalseType
Value
Nome
Valor a ser formatadoTrue
DescriçãoObrigatório
Exemplo Exemplo Exemplo <<<fmtfmtfmt:::formatDateformatDateformatDate>>>
<jsp:useBean id="data" class="java.util.Date" />
<fmt:formatDate type="date" value="${data}"/>
<fmt:formatDate type="time" value="${data}"/>
<fmt:formatDate type="both" value="${data}"/>
<fmt:formatDate type="date" dateStyle="default" value="${data}"/><fmt:formatDate type="date" dateStyle="short" value="${data}"/> <fmt:formatDate type="date" dateStyle="medium" value="${data}"/><fmt:formatDate type="date" dateStyle="long" value="${data}"/> <fmt:formatDate type="date" dateStyle="full" value="${data}"/>
<fmt:formatDate type="time" timeStyle="default" value="${data}"/><fmt:formatDate type="time" timeStyle="short" value="${data}"/> <fmt:formatDate type="time" timeStyle="medium" value="${data}"/><fmt:formatDate type="time" timeStyle="long" value="${data}"/> <fmt:formatDate type="time" timeStyle="full" value="${data}"/>
29/11/2009
29/11/09
29/11/2009
29 de Novembro de 2009
Domingo, 29 de Novembro de 2009
29/11/2009
16:48:27
29/11/2009 16:48:27
16:48:27
16:48
16:48:27
16h48min27s BRST
16h48min27s BRST
TagTagTag <<<fmtfmtfmt:::parseDateparseDateparseDate>>>
• Definição:– Analisa o formato da data/hora de acordo com o padrão.
• Atributos:
• Corpo da Tag: – Não há corpo.
Escopo da variável.Falsescope
Variável que conterá a saídaFalsevar
TimeZone da data/hora a ser formatado.FalsetimeZone
Padrão de formatação customizadoFalsePattern
Formatação da hora: default | short | meddium | long |fullFalsetimeStyle
Formatação da data: default | short | meddium | long |fullFalsedataStyle
Date | Time | BothFalseType
Value
Nome
Valor a ser formatadoTrue
DescriçãoObrigatório
TagTagTag <<<fmtfmtfmt:::requestEncodingrequestEncodingrequestEncoding>>>
• Definição:– Configura a codificação de caractere da requisição.
• Atributos:
• Corpo da Tag: – Não há corpo.
value
Nome
Nome da codificação dos caracteres aplicado aos parâmetros da requisição.
false
DescriçãoObrigatório
TagTagTag <<<fmtfmtfmt:::setLocalesetLocalesetLocale>>>
• Definição:– Define uma variável locale.
• Atributos:
• Corpo da Tag: – Não há corpo.
Escopo do Locale.Falsescope
???Falsevariant
value
Nome
Exemplo: pt_BR | en_US | pt_PT Ver ISO-639 e ISO-3166True
DescriçãoObrigatório
Exemplo Exemplo Exemplo <<<fmtfmtfmt:::setLocalesetLocalesetLocale>>>
<fmt:setLocale value="en_US"/><fmt:formatNumber value="9876543.99" type="currency"/><br />
<fmt:setLocale value="pt_BR"/><fmt:formatNumber value="9876543.99" type="currency"/><br />
<fmt:setLocale value="pt_PT"/><fmt:formatNumber value="9876543.99" type="currency"/><br />
TagTagTag <<<fmtfmtfmt:::timeZonetimeZonetimeZone>>>
• Definição:– Especifica um fuso horário para o corpo da página.
• Atributos:
• Corpo da Tag: – Tags <fmt:formatDate>
Value
Nome
O valor do fuso horário. Uma string é interpretada como um ID. Pode ser um ID suportado pela plataforma Java, (tal como "America/Los_Angeles") ou um ID personalizado (tal como "GMT-8").
True
DescriçãoObrigatório
TagTagTag <<<fmtfmtfmt:::setTimeZonesetTimeZonesetTimeZone>>>
• Definição:– Configura o fuso horário em uma variável de configuração.
• Atributos:
• Corpo da Tag: – Não há corpo.
Escopo da variável ou do fuso horário especificado.Falsescope
Nome da variável de escopo que armazenará o fuso horáriodo tipo java.util.TimeZone.
Falsevar
value
Nome
O valor do fuso horário. Uma string é interpretada como um ID. Pode ser um ID suportado pela plataforma Java, (tal como "America/Los_Angeles") ou um ID personalizado (tal como "GMT-8").
True
DescriçãoObrigatório
ExemploExemploExemplo
<jsp:useBean id="currentDate" class="java.util.Date" />
<fmt:timeZone value="GMT+7:00">
<fmt:formatDate value="${currentDate}" type="both" dateStyle="full"timeStyle="full"/>
</fmt:timeZone>
<br/>
<hr/>
<fmt:setTimeZone value="GMT-10:00" var="timeZone" scope="page"/>
<fmt:timeZone value="${timeZone}"><fmt:formatDate value="${currentDate}"
type="both"dateStyle="full"timeStyle="full"/>
</fmt:timeZone>
TagTagTag <<<fmtfmtfmt:::bundlebundlebundle>>>
• Definição:– Carrega um resource bundle usado no corpo da página.
• Atributos:
• Corpo da Tag: – Tags <fmt:message>
O prefixo para o valor da chave da mensagem de qualquer ação <fmt:message>.
falseprefix
basename
Nome
Nome base do resource bundle. Este é o nome base do resource que pode ter sufixo tais com “.class” e “.properties”
true
DescriçãoObrigatório
TagTagTag <<<fmtfmtfmt:::setBundlesetBundlesetBundle>>>
• Definição:– Carrega um resource bundle e o armazena em uma variável.
• Atributos:
• Corpo da Tag: – Não há corpo.
Escopo da variável.FalseScope
Nome da variável de escopo que armazena o resource bundle.Falsevar
Basename
Nome
Nome base do resource bundle. Este é o nome base do resource que pode ter sufixo tais com “.class” e “.properties”
true
DescriçãoObrigatório
TagTagTag <<<fmtfmtfmt:::messagemessagemessage>>>
• Definição:– Chave dos mapas para localização de mensagens e execução de
substituição de parâmetros.
• Atributos:
• Corpo da Tag: – Tags <fmt:param>
Escopo da variável.falsescope
Variável que armazena a mensagem.falsevar
Resource bundle em que a mensagem será procurada.falsebundle
key
Nome
Chave da mensagem que será buscada.false
DescriçãoObrigatório
ExemploExemploExemplo
<fmt:bundle basename="labels">Hello: <fmt:message key="hello" />GoodBye: <fmt:message key="goodbye" />
</fmt:bundle>
<fmt:bundle basename="file_en" prefix="cliente.">Primeiro Nome: <fmt:message key="primeiroNome" /><br/>Último Nome: <fmt:message key="ultimoNome" /><br/>
</fmt:bundle>
hello=Olágoodbye=Até mais
cliente.primeiroNome=First Namecliente.ultimoNome=Last Namecliente.endereco=address
TagTagTag <<<fmtfmtfmt:param>:param>:param>
• Definição:– Fornece um argumento que será substituído na mensagem.
• Atributos:
• Corpo da Tag: – Atributo value
Value
Nome
Argumento usado para ser substituído.True
DescriçãoObrigatório
ExemploExemploExemplo
<fmt:bundle basename="file_en" prefix="cliente.">Primeiro Nome: <fmt:message key="primeiroNome" /><br/>Último Nome: <fmt:message key="ultimoNome" /><br/><fmt:message key="saudacao">
<fmt:param value="André" /></fmt:message>
</fmt:bundle>
cliente.primeiroNome=First Namecliente.ultimoNome=Last Namecliente.endereco=addresscliente.saudacao=Olá Sr.{0}
ResumoResumoResumo
DescriçãoTags
Analisa a representação de uma data e/ou hora.parseDate
Formata a data e/ou hora usando um padrão e estilo especificados.formatDate
Analisa a representação de um número, moeda ou porcentagem.parseNumber
Formata um valor numérico como um número, moeda ou porcentagem.formatNumber
Fornece um argumento que será substituído na mensagem.param
Exibe uma mensagem baseado em sua chave.message
Carrega um resource bundle e armazena na sua variável de configuração.setBundle
Carrega um resource bundle para o corpo da página.bundle
Configura a variável de fuso horário.setTimeZone
Especifica o fuso horário para o corpo da página.timeZone
Armazena um locale na variável de configuração locale.setLocale
Configura a codificação dos caracteres da requisição.requestEncoding