Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
PARTNERZY:
PARTNERZY:
JSTL - biblioteka standardowych
znaczników JSP
Beata Pa
ń
czyk
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
2
Plan wykładu
Biblioteka JSTL
Znacznik
out
Znacznik
forEach
i
forTokens
Znacznik
if
Znaczniki
choose
,
when
i
otherwise
Znacznik
set
i
remove
Znacznik
import
Znacznik
redirect
Znacznik
catch
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
3
Biblioteka JSTL
Biblioteka JSTL (JSP Standard Tag Library)
zawiera wiele znaczników stosowanych na
stronach JSP, szczególnie u
ż
ytecznych przy
korzystaniu z wzorca MVC
Nie jest cz
ęś
ci
ą
JSP, stanowi oddzieln
ą
specyfikacj
ę
i wymaga instalacji
J
ę
zyk wyra
ż
e
ń
EL (Expression Language) wywodzi
si
ę
z JSTL ale obecnie jest ju
ż
cz
ęś
ci
ą
specyfikacji
JSP 2.0, JSP 2.1 i JSF
Strona domowa JSTL:
http://jakarta.apache.org/taglibs/doc/standard-
doc/intro.html
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
4
Instalacja biblioteki JSTL
Biblioteka JSP Standard Tag Library 1.2 do
pobrania ze strony:
http://jstl.java.net/download.html
Po pobraniu i rozpakowaniu (do dowolnego
katalogu) pliku .zip nale
ż
y skopiowa
ć
pliki
standard.jar i jstl.jar do folderu
WEB-INF/lib
aplikacji
Kolejny krok - import biblioteki do strony JSP
dyrektyw
ą
taglib:
<%@taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core"
%>
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
5
Prefiksy JSTL
c (ang. core – rdze
ń
) – biblioteka bazowa
fmt (ang. format – formatowanie danych) –
biblioteka zawiera akcje pozwalaj
ą
ca na
formatowanie dat, licz, walut
sql (ang. Structured Query Language) – biblioteka
pozwala na wykonywanie podstawowych zapyta
ń
w
j
ę
zyku SQL
xml (ang. eXtensible Markup Language) - biblioteka
pozwala na przetwarzanie danych w formacie XML
fn (ang. functions) - biblioteka zawiera funkcje
operuj
ą
ce na ła
ń
cuchach znaków i kolekcjach
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
6
Znacznik c:out
Znacznik ma posta
ć
:
<c:out value= "... " default= "... " escapeXML= "true" >
Przypomina wyra
ż
enia skryptowe
<%=
…
%>
oraz wyra
ż
enia JSP EL
${
…
}
Dodatkowe zalety:
zwi
ę
ksza czytelno
ść
(jest to zwykły znacznik)
pozwala wskazywa
ć
domy
ś
ln
ą
warto
ść
(je
ś
li jest
null)
posiada atrybut
escapeXML= "true"
, dzi
ę
ki któremu
wszystkie znaki specjalne XML (< , > , & , ' , ")
automatycznie zast
ę
puje odpowiednimi
sekwencjami &
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
7
Przykład c:out
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE
…
>
<html> <head></head>
<body>
<h1> <c:out value="Znacznik <c:out>" /> </h1>
<h3> Identyfikator: <c:out value="${account}" default="brak" /> </h3>
</body>
</html>
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
8
Znaczniki c:forEach, c:forTokens
Znacznik c:forEach
umo
ż
liwia wykonywanie
podstawowej iteracji i obsługuje wiele ró
ż
nych
typów kolekcji; mo
ż
e działa
ć
jak zwykła p
ę
tla for z
licznikiem, dla której mo
ż
na zdefiniowa
ć
warto
ść
pocz
ą
tkow
ą
begin
, ko
ń
cow
ą
end
oraz krok
step
;
dzi
ę
ki atrybutowi
var
mo
ż
na wskaza
ć
klucz
Znacznik c:forTokens
działa podobnie – ale wykonuje
iteracje przez ci
ą
g znaczników oddzielonych od
siebie separatorem (separator jest definiowany
przez wymagany atrybut
delims
)
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
9
Przykład c:forEach, c:forTokens
<h3><c:out value="Znacznik <c:forEach> jak zwykła pętla:" /></h3>
<ul> <c:forEach var="i" begin="1" end="7" step="2" >
<li>i=${i}</li>
</c:forEach>
</ul>
<% java.util.List lista=new java.util.ArrayList();
lista.add("jeden"); lista.add("dwa");lista.add("trzy");
request.setAttribute("lista",lista); %>
<h3><c:out value="Znacznik <c:forEach> dla listy:" /></h3>
<ul> <c:forEach var="item" items="${lista}" >
<li>${item}</li>
</c:forEach>
</ul>
<h3><c:out value="Znacznik <c:forTokens>:" /></h3>
<ul> <c:forTokens var="item" delims="<).(%>"
items="<Pewnego)razu.na(Dzikim%Zachodzie...>" >
<li>${item}</li>
</c:forTokens>
</ul>
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
10
Przykład –
wynik
działania
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
11
Przykład - znacznik c:if
Znacznik c:if
<ul> <c:forEach var="i" begin="1" end="7" step="2" >
<li>i=${i} <c:if test ="${i>3}" >
(większy niż 3)
</c:if>
</li>
</c:forEach>
</ul>
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
12
Przykład - znacznik c:choose
<ul><c:forEach var="i" begin="1" end="7" step="2" >
<li>i=${i}
<c:choose>
<c:when test="${i<3}" >(mniejszy od 3)</c:when>
<c:when test="${i==3}" >(r
ó
wne 3)</c:when>
<c:otherwise>(wiekszy od 3)</c:otherwise>
</c:choose>
</li>
</c:forEach>
</ul>
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
13
Znaczniki c:set
Znacznik
c:set
definiuje atrybut o okre
ś
lonym zasi
ę
gu
albo uaktualnia/tworzy wła
ś
ciwo
ś
ci komponentów
bean
oraz
warto
ś
ci
map
Np.:
<c:set var ="NazwaAtrybutu" value="JakaśWartość" />
<c:set target ="map" property="klucz_elementu"
value="wartość_Elementu" />
<c:set target ="bean" property="nazwisko"> Jan Kowalski </c:set>
Warto
ść
znacznika
c:set
mo
ż
e by
ć
definiowana na 2
sposoby:
poprzez warto
ść
atrybutu
value
poprzez umieszczenie jej w tre
ś
ci
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
14
Znacznik c:remove
Je
ż
eli warto
ś
ci
ą
znacznika
c:set
oka
ż
e si
ę
null
– jest to
równoznaczne z wywołaniem metody:
odwołanieDoZasięgu.setAtrybut(null);
przy czym odwołanie do zasi
ę
gu mo
ż
e oznacza
ć
zasi
ę
g
żą
dania, odpowiedzi, sesji itp.
Odwołanie do zasi
ę
gu powoduje usuni
ę
cie atrybutu
z zasi
ę
gu
Dla wygody udost
ę
pniono znacznik
c:remove
za pomoc
ą
którego mo
ż
na wskaza
ć
nazw
ę
atrybutu do usuni
ę
cia za
pomoc
ą
atrybutu
var
i zasi
ę
gu
scope
(domy
ś
lnie -
usuni
ę
cie atrybutu ze wszystkich zasi
ę
gów)
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
15
Przykład – znaczniki
c:set, c:remove
<c:set var ="mapa" value="<%= new java.util.HashMap() %>"
scope="request" />
<c:set target ="${mapa}" property="podtytul" value="<przeczytaj to/>" />
<c:set target ="${mapa}" property="tytul" >
<c:out value="${mapa.podtytul} " /><br />Serwlety i JSP Tom II
</c:set>
<h1> ${mapa.tytul} </h1>
<c:set var="autor" value="Marty Hall" scope="request" />
<c:set var="autor" > Autorzy </c:set>
<h2> -- ${autor}: ${requestScope.autor} -- </h2>
<c:remove var="autor" />
<h2> -- ${pageScope.autor}:${requestScope.autor} --</h2>
Projekt współfinansowany przez Uni
ę
Europejsk
ą
w ramach Europejskiego Funduszu Społecznego
16
Literatura
Marthy Hall, Larry Brown, Yaakov Chaikin: "Core.
Java Servlets i JavaServer Pages", Helion, 2009
Krzysztof Rychlicki-Kicior, "Java EE 6.
Programowanie aplikacji WWW", Helion, 2010
http://download.oracle.com/javaee/1.4/tutorial/doc
/JSTL.html