background image

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

forTokens



Znacznik

if



Znaczniki 

choose

when

otherwise



Znacznik 

set

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

ń

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 &

background image

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>

background image

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

ę

żą

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