Upload
london
View
22
Download
3
Embed Size (px)
DESCRIPTION
JSTL - JSP Standard Tag Library. ETIS SS04. Gliederung. Motivation Bestandteile core - Kernfunktionalität function - Funktionen fmt - Formatierung / Internationalisierung Zusammenfassung. Tag-Handler. Motivation (I). ZIEL JSP: Web-Designer Arbeit mit Servlets ermöglichen - PowerPoint PPT Presentation
Citation preview
JSTL - JSP Standard Tag Library
ETIS SS04
ETIS SS04 JSTL 2
Gliederung
• Motivation
• Bestandteile
• core - Kernfunktionalität
• function - Funktionen
• fmt - Formatierung / Internationalisierung
• Zusammenfassung
ETIS SS04 JSTL 3
Motivation (I)
• ZIEL JSP: Web-Designer Arbeit mit Servlets ermöglichen
• ABER: eingebetteter Java-Code ist problematisch
• DAHER: Custom Tag Libraries mit JSP 1.1
– Tag-Library-Descriptor: XML-Datei, beschreibt, welche Tags die Library bereitstellt für jedes Tag eine Tag-Handler-Klasse festgelegt
– Tag-Handler, Java-Klassen, legen Aktionen bei Auftreten eines Tags fest
Tag-Library = Tag-Library-Decriptor + Tag-Handler
ETIS SS04 JSTL 4
Motivation (II)
• Standardisierte Tag Libraries fehlten lange
• JSTL (JSP Standard Tag Library)
– kapselt Kernfunktionalität, die vielen Webanwendungen gemeinsam ist (Iterationen, Internationalisierung, ...)
– Spezifikation unter JSR-52 „A Standard Tag Library for JavaServer Pages“ in JCP erarbeitet
• Referenzimplementierung vom Jakarta Taglibs-Projekt– aktuell Version 1.1 – JSP 2.0– mit JSTL Einführung der Expression Language (EL)– GUIs nicht durch JSTL abgedeckt Entwicklung: JSF
ETIS SS04 JSTL 5
Bestandteile
Tag-Bibliothek
Aufgabe
core Grundlegende Tags (für Schleifen, Bedingungen, Ausnahmebehandlung)
fmt Internationalisierung, Datums- und Zahlenformatierung
sql Tags zur Einbindung relationaler DBs
xml Umgang mit XML (Parsen, Transformieren von XML-Dokumenten)
functions Funktionen v.a. zur Verarbeitung von Zeichenketten
ETIS SS04 JSTL 6
Core – Kernfunktionalität (I)
• Bedingte Ausführung– mit Scriptlets:
<% if (comic.isBestseller()) { %> <b>Bestseller!</b> <% } %>
– mit Tags:
<%@ taglib prefix=“c“ uri=“http://java.sun.com/jsp/jstl/core“ %> <c:if test = “${comic.bestseller}“> <b>Bestseller!</b> </c:if>
ETIS SS04 JSTL 7
Core – Kernfunktionalität (II)
• Bedingte Ausführung (entspricht if-then-else) <%@ taglib prefix=“c“ uri=“http://java.sun.com/jsp/jstl/core“ %>
<c:choose>
<c:when test="${comic.bestseller}">
<c:out value="Bestseller"/>
</c:when>
<c:otherwise>
<c:out value="Buch"/>
</c:otherwise>
</c:choose>
ETIS SS04 JSTL 8
Core - Kernfunktionalität (II)
• Schleifen <%@ taglib prefix=“c“ uri=“http://java.sun.com/jsp/jstl/core“ %>
<c:forEach var=“autor“ items=“${comic.autoren}“> <c:out value=“${autor.name}“/> </c:forEach>
– items: als Scoped Variable gespeicherte Collection Scoped Variable: in einem Gültigkeitsbereich (page, request, session, application) einer Web-Anwendung gespeichertes Objekt
– var: Name einer Scoped Variable (enthält aktuellen Wert der Iteration)
ETIS SS04 JSTL 9
Core - Kernfunktionalität (III)
• Weitere Funktionalitäten:
– Ausnahmebehandlung
<c:catch ...>
– Links + Redirects
<c:url ...>
<c:redirect ...>
– Einbinden externer Ressourcen
<c:import ...>
ETIS SS04 JSTL 10
function - Funktionen
• Funktionen v.a. zur Verarbeitung von Zeichenketten
• Beispiele:
– contains(string, substring)
– join (collection, separator)
– toLowerCase(string)
– trim(string)
• konkretes Beispiel:
<%@ taglib prefix=“c“
uri=“http://java.sun.com/jsp/jstl/core“ %>
Autoren: ${fn:join(buch.autoren, “, “)}
ETIS SS04 JSTL 11
fmt – Internationalisierung/Formatierung (I)
• Internationalisierung (kurz: I18N)
– Anwendung für Benutzer verschiedener Sprachen zugänglich machen
Text in Sprache des Anwenders
Datumsangaben + Zahlen landesabhängig
– anstelle fest angegebener Zeichenketten treten Schlüssel in einer Art Zeichenkettentabelle (Resource Bundle)
– Ressource Bundle i.d.R. als Properties Datei gespeichert
#Message_en.properties
welcomePage.title = Welcome!
welcomePage.button.submit = Submit
Sprache im Datei-namen kodiert
ETIS SS04 JSTL 12
fmt – Internationalisierung/Formatierung (II)
• JSP-Seite:
<%@ taglib prefix=“c“
uri=“http://java.sun.com/jsp/jstl/fmt“ %>
<fmt:bundle bundle=“etis.jstl.Messages“ prefix=“welcomePage.“>
<fmt:message key=“title“/>
</fmt:bundle>
– hierbei: implizite Auswahl der Sprache/Land auf Grundlage des Accept-Language-Headers
– explizites Setzen möglich
<fmt:setLocale value="en"/>
ETIS SS04 JSTL 13
fmt – Internationalisierung/Formatierung (III)
• Zahlen- und Datumsformatierung
– länderabhängige Darstellung Beispiel:
10.950,00 (DE) / 10,950.00 (USA) / 10 950,00 (FR)
Dienstag, 15.Juni 2004 (DE) / Tuesday, June 15, 2004 (USA)
– Lösung: <fmt:formatNumber>
<%@ taglib prefix=“c“
uri=“http://java.sun.com/jsp/jstl/fmt“ %>
<fmt:formatNumber value=“35.2779“ type=“currency“ currencyCode=“EUR“/>
Ausgabetype (Zahl, Prozent-wert, Währung)
Währungssymbol
ETIS SS04 JSTL 14
fmt – Internationalisierung/Formatierung (IV)
• <fmt:formatDate> <%@ taglib prefix=“c“ uri=“http://java.sun.com/jsp/jstl/fmt“ %> <jsp:useBean id=“currentDate“ class=“java.util.Date“/>
<fmt:formatDate value=“${currentDate}“ type=“date“ dateStyle=“full“/>
• detaillierte Darstellungsformatierung mit dateStyle bzw. timeStyle – z.B. dateStyle=“full“: Dienstag, 15.Juni 2004– z.B. timeStyle=“full“: 9.30 Uhr CEST
ETIS SS04 JSTL 15
fmt – Internationalisierung/Formatierung (V)
Tags Aufgabe
setBundle Setzt Ressourcenbündel für den Rest der Seite (Zeichenketten-Dateien)
bundle Setzt im Rumpf des Tags zu verwendende Ressourcenbündel
setLocale Setzt zu verwendende Locale (Kombination Land Sprache de-DE de-AT)
message Gibt lokalisierte Zeichenkette aus
formatDate Formatiert Datums- und Uhrzeitangaben (abhängig von Locale)
formatNumber Formatiert Zahlen (abhängig von Locale)
ETIS SS04 JSTL 16
Zusammenfassung
• Grundlegende Anforderungen vieler Webanwendungen mit JSTL erfüllt
• Internationalisierung, Iteration, XML, DB, ...
• GUI-Entwicklung nicht abgedeckt
• wenige, flexibel verwendbare Tags anstelle vieler ähnlicher Tags
ETIS SS04 JSTL 17
Literatur
• Turau, V., Saleck, K., Lenz, C., Web-basierte Anwendungen entwickeln mit JSP2, dpunkt.verlag, Heidelberg, 2004
• Wille, S., Go To Java Server Pages, Addison-Wesley, München, 2001
• http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html