17
JSTL - JSP Standard Tag Library ETIS SS04

JSTL - JSP Standard Tag Library

  • 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

Page 1: JSTL - JSP Standard Tag Library

JSTL - JSP Standard Tag Library

ETIS SS04

Page 2: JSTL - JSP Standard Tag Library

ETIS SS04 JSTL 2

Gliederung

• Motivation

• Bestandteile

• core - Kernfunktionalität

• function - Funktionen

• fmt - Formatierung / Internationalisierung

• Zusammenfassung

Page 3: JSTL - JSP Standard Tag Library

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

Page 4: JSTL - JSP Standard Tag Library

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

Page 5: JSTL - JSP Standard Tag Library

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

Page 6: JSTL - JSP Standard Tag Library

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>

Page 7: JSTL - JSP Standard Tag Library

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>

Page 8: JSTL - JSP Standard Tag Library

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)

Page 9: JSTL - JSP Standard Tag Library

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

Page 10: JSTL - JSP Standard Tag Library

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, “, “)}

Page 11: JSTL - JSP Standard Tag Library

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

Page 12: JSTL - JSP Standard Tag Library

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

Page 13: JSTL - JSP Standard Tag Library

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

Page 14: JSTL - JSP Standard Tag Library

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

Page 15: JSTL - JSP Standard Tag Library

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)

Page 16: JSTL - JSP Standard Tag Library

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

Page 17: JSTL - JSP Standard Tag Library

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