Vous êtes sur la page 1sur 9

04/01/12

JSTL

JSTL - JSP Standard Tag Library Biblioteca Padro de Tags JSP Qual o problema? Dificuldade de contruir pginas JSPs bem organizadas internamente; Pginas JSPs com muito cdigo Java; Web designers no sabem programar em Java; Problemas na interao entre desenvolvedores e web designers. O que queremos? Criar pginas dinmicas bastante complexas sem escrever cdigo Java dentro delas; Fornecer tags que tornem fceis tarefas que exigiriam vrias linhas de cdigo Java, como formatao de n meros e datas seguindo configuraes regionais do usurio; Facilitar a interao entre desenvolvedores e web designers. Qual a solu o? Utili ar JSTL.

JSTL JSTL consiste em uma coleo de bibliotecas, tendo cada uma um propsito bem definido, que permitem escrever pginas JSPs sem cdigo Java, aumentando assim a legibilidade do cdigo e a interao entre desenvolvedores e web designers. Uma pgina JSTL uma pgina JSP contendo um conjunto de tags JSTLs. Cada tag realiza um determinado tipo de processamento (equivalente a cdigo Java dentro de JSP). Cada tag JSTL, faz parte uma biblioteca JSTL. Uma pgina JSTL pode utilizar vrias bibliotecas JSTLs. Exemplo de uma pgina JSTL

<@tgi pei=ft ui"tp/jv.u.o/s/slft % % alb rfx"m" r=ht:/aasncmjpjt/m" > <tl hm> <oybclr"FFF" bd goo=#FFF> <s:sBa i=aoa cas"aaui.ae/ jpueen d"gr" ls=jv.tlDt"> <r b> Vr oCra <m:omtaevle"{gr} / es ut: ftfraDt au=$aoa" >

<r b> Vr oLna <m:omtaevle"{gr} dtSye"ul/ es og: ftfraDt au=$aoa" aetl=fl"> <bd> /oy <hm> /tl

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


www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 1/9

04/01/12

JSTL

Observe que no existe nenhum c digo Java. Na primeira linha, temos o seguinte: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> Essa declarao informa ao compilador de JSPs utiliza um biblioteca de tags, cujos tags sero reconhecidos pelo prefixo "fmt", de modo a evitar possveis conflitos com tags de mesmo nome de outras bibliotecas. A biblioteca de tags identificada pelo atributo uri. A tag padro <jsp:useBean> utilizada para instanciar um objeto java.util.Date (inicializado por padro com a data e hora atuais do sistema) A varivel agora, criada pelo tag <jsp:useBean>, depois referenciada dentro do atributo value dos tags <fmt:formatDate>, que aparece duas vezes na pgina. Observe que o atributo dateStyle do tag <fmt:formatDate> define se ser utilizado um formato resumido da data ou um formato longo.
Vr oCra 2/720 es ut: 50/05 Vr oLna Sgnafia 2 d Jlod 20 es og: eud-er, 5 e uh e 05

EL - Expression Language O valor de qualquer expresso pode ser acessado da seguinte forma: ${expresso} Exemplo

Outros exemplos
Operador Descri o == Igualdade eq != Desigualdade ne < Menor que lt > Maior que gt <= Menor ou igual que le >= Maior ou igual que ge Checa se um parmetro est empty vazio and E && or
www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm

Exemplo ${5 == 5} ${5 != 5} ${5 < 7} ${5 > 7} ${5 le 5} ${5 ge 6} ${user.lastname}

Resultado true false true false true false depende

${param.month == 5 and param.day == depende 25} ${param.month == 5 or param.month


2/9

04/01/12

JSTL

|| + ! not

OU soma Negao

== 6} ${4 + 5} ${not true}

depende 9 false

Bibliotecas padro
Biblioteca JSTL Prefixo URI Tipos de uso Exemplo de tag Acessar e modificar dados em <c:forEach> memria Comandos condicionais Loop Parsing (leitura) de documentos Impresso de partes de documentos <x:forEach> XML Tomada de deciso baseado no conte do de um documento XML Leitura e impresso de n meros Leitura e impresso <fmt:formatDate> de datas Ajuda a sua aplicao funcionar em mais de uma lingua Leitura e escrita em banco de dados

Co e

http://java.sun.com/jstl/core

Processamento de XML

http://java.sun.com/jstl/xml

Internacionalizao e formatao

fmt

http://java.sun.com/jstl/fmt

Acesso a banco de dados via SQL

sql

http://java.sun.com/jstl/sql

<sql:query>

Tags bsicas 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> Permite realizar um loop Exemplo Imprime os valores entre dois e cinco.
<@tgi pei=c ui"tp/jv.u.o/s/slcr"% % alb rfx"" r=ht:/aasncmjpjt/oe > <tl hm> <oybclr"FFF" bd goo=#FFF> <:oEc vr""bgn""ed"" cfrah a=i ei=2 n=5> <:u vle"{ "> cot au=$i /;
www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 3/9

04/01/12

JSTL

<cfrah /:oEc> <bd> /oy <hm> /tl

Sa da
2345 ;;;;

Tag <c:fo Token > Quebra uma string em substrings, de acordo com o delimitador indicado como atributo Exemplo Imprime os valores entre dois e cinco.

<@tgi pei=c ui"tp/jv.u.o/s/slc % alb rfx"" r=ht:/aasncmjpjt/o <tl hm> <oybclr"FFF" bd goo=#FFF> <:oTkn vr""dlm=, ies",,," cfroes a=i eis"" tm=2345> <:u vle"{ "> cot au=$i /; <cfroes> /:oTkn <bd> /oy <hm> /tl

Saida
2345 ;;;;

Tag condicionai Tag <c:if> Equivamente ao comando if Atributo test realiza o teste condicional

<@tgi pei=c ui"tp/jv.u.o/s/slcr" % alb rfx"" r=ht:/aasncmjpjt/oe% <tl hm> <oybclr"FFF" bd goo=#FFF> Eeetsprs lmno ae: <:oTkn vr""dlm=, ies",,," cfroes a=i eis"" tm=2345> <:fts=$i%2= 0" ci et"{ = > <:u vle"{ "> cot au=$i /; <ci> /:f <cfroes> /:oTkn <bd> /oy <hm> /tl

Sa da
Eeetsprs 2 4 lmno ae: ; ;

Uma falha da biblioteca a inexistncia do


www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 4/9

04/01/12

JSTL

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.

<@tgi pei=c ui"tp/jv.u.o/s/slcr" % alb rfx"" r=ht:/aasncmjpjt/oe% <tl hm> <oybclr"FFF" bd goo=#FFF> <:oTkn vr""dlm=, ies",,," cfroes a=i eis"" tm=2345> <:hoe ccos> <:hnts=$i%2= 0"$i (a)/:hn cwe et"{ = >{ pr<cwe> <:tews>{ (ma)/:tews> cohrie$i ipr<cohrie <ccos> /:hoe ; <cfroes> /:oTkn <bd> /oy <hm> /tl

Sada
2(a);3(ma);4(a);5(ma); pr ipr pr ipr

Tags de atribui o e importa o Tag <c:import> Permite importar pginas web do mesmo contexto web, de contextos diferentes e at mesmo de mquinas diferentes.
Atributo Descri o url URL a ser importada "/" seguido do nome da aplicao context web local Nome do atributo onde ser var armazenado o conte do da pgina importada Escopo do atributo onde ser armazenado o conte do da pgina importada scope Pode ser: page, request, session, application Requerido? Default Sim Nenhum Contexto No corrente No Nenhum

No

page

Tag <c:set> Permite a atribuir valores a variveis em um determinado escopo.


www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 5/9

04/01/12

JSTL

Atributo Descri o value Expresso a ser processada Nome do atributo onde ser var armazenado o resultado do processamento do atributo "value" Escopo do atributo. scope Pode ser: page, request, session, application

Requerido? Default No Nenhum No Nenhum

No

page

Exemplo Nesse exemplo, a varivel "title" criada com o valor "Welcome to Page 1" com escopo "request" Em seguida, a pgina "header.jsp" carregada, e seu conte do armazenado na varivel "headerText" Finalmente, imprimimos o conte do da varivel "title" e da varivel "headerText"
<@tgi pei=c ui"tp/jv.u.o/slcr"% % alb rfx"" r=ht:/aasncmjt/oe > <tl hm> <oy bd> <:e soe"eus"vr"il"vle"ecm t Pg 1/ cst cp=rqet a=tte au=Wloe o ae "> <:motvr"edret ul"edrjp/ cipr a=haeTx" r=hae.s"> <rMnapgn:{il} b>ih ia$tte <rTxoiprao$haeTx} b>et motd:{edret <bd> /oy <hm> /tl

Arquivo "header.jsp"
<@tgi pei=c ui"tp/jv.u.o/slcr" % alb rfx"" r=ht:/aasncmjt/oe #{il} $tte# % >

Sada
Mnapgn:ecm t Pg 1 ih iaWloe o ae Txoiprao #ecm t Pg 1 et motd: Wloe o ae #

Acessando objetos Java Os exemplos anteriores se detiveram em apresentar apenas as tags JSTL bsicas. Vamos agora mostrar alguns exemplos mais elaborados utilizando objetos Java. Exemplo 1 Acessando uma coleo de objetos Java Seja a classe Java ColecaoDeNomes
pcaets; akg et ipr jv.tl* mot aaui.; ipr jv.o* mot aai.; pbi casClcoeoe ipeet Sraial{ ulc ls oeaDNms mlmns eilzbe piaeCleto nms=nwAryit) rvt olcin oe e raLs(; pbi Clcoeoe( { ulc oeaDNms) nmsad"ai"; oe.d(Mra)
www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 6/9

04/01/12

JSTL

nmsad"ea) oe.d(Zc"; nmsad"als) oe.d(Cro";

pbi Cleto gtoe( { ulc olcin eNms) rtr nms eun oe;

Queremos iterar a coleo de nomes existente dentro da classe ColecaoDeNomes (veja o exemplo abaixo) Observe que o objeto da classe ColecaoDeNomes foi instanciado utilizando a tag <j p: eBean>. Alm disso, o nome da instncia criada "colecao". Note que o atributo i em da tag <c:fo Each> faz referncia instncia criada (batizada como "colecao"). Os objetos existentes dentro da coleo nomes (java.util.Collection) dentro da classe ColecaoDeNomes est sendo acessado da seguinte forma: ${colecao.nomes} ${colecao.nomes}: colecao o nome da instncia da classe ColecaoDeNomes recm criada ${colecao.nome }: nomes faz referncia ao nome do mtodo getNomes()
<@tgi pei=c ui"tp/jv.u.o/s/slcr"% % alb rfx"" r=ht:/aasncmjpjt/oe > <tl hm> <oybclr"FFF" bd goo=#FFF> <s:sBa i=clco cas"et.oeaDNms/ jpueen d"oea" ls=tseClcoeoe"> <:oEc vr"oe ies"{oea.oe " cfrah a=nm" tm=$clconms > <r$nm b>{oe <cfrah> /:oEc <bd> /oy <hm> /tl

Sa da
Mra ai Zc ea Cro als

Exemplo 2 Agora utilizando mais recursos da tag <c:fo Each>


<@tgi pei=c ui"tp/jv.u.o/s/slcr"> % alb rfx"" r=ht:/aasncmjpjt/oe% <tl hm> <oybclr"FFF" bd goo=#FFF> <s:sBa i=clco cas"et.oeaDNms/ jpueen d"oea" ls=tseClcoeoe"> <al bre=0 ain"etr clpdig""clsaig"" tbe odr"" lg=cne" eladn=2 elpcn=2> <r t>
www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 7/9

04/01/12

JSTL

<dbclr"eee"I<t> t goo=#000>d/d <dbclr"eee"Nm<t> t goo=#000>oe/d <t> /r <:oEc vr"oe ies"{oea.oe} vrt cfrah a=nm" tm=$clconms" aSa <r t> <dbclr"fff" t goo=#000> <:hoe ccos> <:hnts=$sau.is}>r cwe et"{ttsfrt"P <:hnts=$sau.at" lio cwe et"{ttsls}> tm< <:tews>eo$sau.on}/ cohrieNmr {ttscut< <ccos> /:hoe <t> /d <dbclr"fff"$nm}/d t goo=#000>{oe<t> <t> /r <cfrah> /:oEc <tbe /al> <bd> /oy <hm> /tl

Sada
Id Primeiro Nmero 2 ltimo Nome Maria Zeca 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

<xlvrin"."ecdn=UF8? ?m eso=10 noig"T-"> <- Cprgt()20 b OjcLan AlRgt Rsre.-> !- oyih c 02 y beter. l ihs eevd <e-p xls"tp/jv.u.o/m/sje" wbap mn=ht:/aasncmxln/2e xlsxi"tp/www.r/01XLceaisac" mn:s=ht:/w.3og20/MShm-ntne xishmLcto=ht:/aasncmxln/2ewbap24x s:ceaoain"tp/jv.u.o/m/sje e-p__. vrin"." eso=24> <ecm-iels> wloefl-it <ecm-ieidxhm/ecm-ie wloefl>ne.t<wloefl> <wloefl-it /ecm-iels> <ro-ae errpg> <ro-oe44/ro-oe errcd>0<errcd> <oain/ro.s<lcto> lcto>errjp/oain <errpg> /ro-ae <wbap /e-p>

Copiar os .cla para a pasta WEB-INF/classes Copiar os arquivos JSPs com as tags jstl do diretrio da principal da aplicao. Aprofundando-se em JSTL
www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm 8/9

04/01/12

JSTL

Livro "JSTL in Action" E emplos da API

www.dsc.ufcg.edu.br/ jacques/cursos/daca/html/jstl/jstl.htm

9/9

Vous aimerez peut-être aussi