Was sind „TagLibs“

Werbung
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
<< Was sind
„TagLibs“ ? >>
1
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Was sind TagLibs ?
Um grössere Java Scriptlets in JSP‘s zu
vermeiden, musste eine Möglichkeit her diese
auszulagern und einfach abrufbar zu gestalten.
Es wurde daher ein Framework zur Handhabung
von eigenen Tags (Custom Tags) eingeführt
<myTag>
<p> text text text
<b> bold </b></p>
</myTag>
class MyTagHandler
{
public void doStartTag(){...};
public void doEndTag(){...};
}
Das TagLib Framework bietet die Möglichkeit für
Tags seine eigenen Handler festzulegen
2
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Beispiel einer einfachen Taglib: DateFormat
<%@ taglib
uri="http://jakarta.apache.org/taglibs/datetime-1.0"
prefix="dt" %>
<html>
<body>
<h2> The current time is:
<dt:format pattern="MM/dd/yyyy hh:mm">
<dt:currentTime/>
</dt:format>
</h2>
</body>
<html>
3
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Beispiel einer einfachen Taglib: DateFormat
4
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Beschaffung und Installation einer Taglib:
Für die Taglibs gibt es unzählige Portale und
Hersteller:
• Apache:
jakarta.apache.org/taglibs
• JspTags:
jsptags.com/tags/index.jsp
• ServletSuite: www.servletsuite.com/jsp.htm
Um die TagLib verwenden zu können, muss das
„.jar“ File in die Webapplikation aufgenommen
werden „WEB-INF/lib“ und registriert werden.
Die Registrierung kann auf zwei Arten erfolgen:
5
• mittels META-INF im Jar File
Î erfolgt durch Hersteller selber, Normalfall
• manuelle Eintragung im „web.xml“
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Anwendung Taglib:
Um die TagLib nun anzuwenden muss diese
innerhalb der JSP bekannt gemacht werden.
Dies geschieht durch die Direktive „<%@ taglib
url=xxx“ … %>“
Die Angaben innerhalb der „taglib“ Direktive ist vom
Hersteller vorgegeben. Üblicherweise eine URL
sowie ein Prefix.
z.B.:
<%@ taglib
uri="http://jakarta.apache.org/taglibs/mailer-1.1"
prefix="mt" %>
6
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Beispiel einer einfachen Taglib: mail
<%@ taglib uri="http://jakarta.apache.org/taglibs/mailer1.1" prefix="mt" %>
<html>
<body>
<h2> Send Email…
<mt:mail
server="localhost" to="[email protected]"
from="[email protected]" subject="mail taglib">
<mt:message>text of email...<mt:message>
<mt:send/>
</mt:mail>Ok
</h2>
</body>
<html>
7
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - Jakarta
Beschaffung und Installation:
Die meist verbreiteten Taglibs sind die von Apache
jakarta.apache.org/taglibs (Supported TagLibs)
Um diese Taglibs verwenden zu können benötigt es
einen Container der den Standard JSP v1.1 sowie
Servlet v2.0 unterstützt.
Zurzeit lassen sich solche Container (z.B. Tomcat
4.x) und Taglibs noch unter Java 1.3.x betreiben
Das Package von Jakarta kommt mit diversen
fertigen „war“ Beispielen und lässt sich so
problemlos in dem Container deployen
8
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - Jakarta
Übersicht Jakarta Taglibs (1/2):
• Application
• Benchmark
• BSF
• Cache
• DateTime
• I18N
• Input
• IO
• JMS
• JNDI
• Log
• Mailer
• Page
• Random
9
Zugriff auf Implizites JSP Obj „application“
Für Performancemessungen
Scripting Languages einbinden z.B. Tcl, JS
temporärer Zwischenspeicher
Datum Ausgabe & Formatierungen
Ausgabe & Formatierungen nach Lokalität
HTML Formulare mit Java Beans verknüpfen
TCP/IP Requests auslösen, z.B. SOAP
Java Message Service Anbindung
Java Naming Directory Anbindung
Jakarta Logging Framework Anbindung
Email versenden
Zugriff auf Implizites JSP Obj „page“
Um Zufallswerte zu generieren
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - Jakarta
Übersicht Jakarta Taglibs (2/2):
• RegExp
• Request
• Response
• Scrape
• Session
• String
• XTags
Verwendung von Regulären Expressions
Zugriff auf Implizites JSP Obj „request“
Zugriff auf Implizites JSP Obj „response“
Webinhalte anderer Seiten einbinden
Zugriff auf Implizites JSP Obj „session“
String Operationen durchführen
XML Aktionen, parsing & transformation
• Image*
• Iterators*
• DataGrid*
• Unstandard*
• RDC*
Bildbearbeitung, Thumbnailerzeugung
Iteration über Collections
Dynamische Erstellung von Tabellen
Java Operations (equals, instanceOf, size)
Reusable Dialog Component
*) Beta Stadium
10
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta IO Tag
Installation Jakarta Taglibs - IO
Die IO-Taglibrary benötigt nur ein „*.jar“ Faile
welches sich im „WEB-INF/lib“ Verzeichnis der
Webapp befinden muss.
11
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta IO Tag
Übersicht Jakarta Taglibs - IO
Mittels den IO Tags lassen sich TCP/IP Requests
verschiedenster Protokolle auf andere Server
tätigen
Es werden zurzeit die folgenden Protokolle
unterstützt: HTTP, HTTPS, FTP, XML-RPC und
SOAP
z.B. HTTP Get Request mit Parametern ausführen
„http://jakarta.apache.org?foo=123&bar=123“
12
<%@ taglib uri="http://jakarta.apache.org/taglibs/io-1.0"
prefix="io" %>
<io:http url="http://jakarta.apache.org" action="GET"/>
<io:param name="foo" value="123"/>
<io:param name="bar">123</io:param>
</io:http>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta IO Tag
Jakarta Taglibs - IO: Prinzip
Mittels dem IO Tag können also Ressourcen von
anderen Servern geholt und in meine Seite
eingebunden werden
Request
Request
JSP
IO Tag
Web
server
Client
Response
Response
Web
WebApp
AppContainer
Container
Response Request
Ext. Web
server
13
jakarta.apache.org
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta IO Tag
Beispiel SOAP Webservice Request mit IO Taglib
14
<%@ taglib uri="http://jakarta.apache.org/taglibs/io-1.0"
prefix="io" %>
<io:soap
url="http://services.xmethods.net:80/perl/soaplite.cgi"
SOAPAction="urn:xmethodsBabelFish#BabelFish">
<io:body>
<SOAP:Envelope
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
">
<SOAP:Body>
<m:BabelFish xmlns:m="urn:xmethodsBabelFish">
<translationmode>en_fr</translationmode>
<sourcedata>SOAP is quite easy with JSP.</sourcedata>
</m:BabelFish>
</SOAP:Body>
</SOAP:Envelope>
</io:body>
</io:soap>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta IO Tag
Beispiel SOAP Webservice Request mit IO Taglib
15
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
Übersicht Jakarta Taglibs - XTags
In der Jakarta Taglibs existieren zur Handhabung von
XML die XTags.
Mittels den XTags lässen sich DOM aus XML erzeugen,
XPath Auswertungen , sowie XSL Transformationen
durchzuführen.
Übersicht XTags:
•
•
•
•
•
16
style , param
XSL Transformation
parse
DOM Erzeugung
add, remove, replace DOM Inhalte hinzufügen / entfernen
valueOf, forEach
XSL Anweisungen
choose, when, otherwise, if, break, variable, stylesheet,
template, applyTemplates, element, attribute, output, copy,
copyOf, context,
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
Installation Jakarta Taglibs - XTags
Die XTags benötigen noch zusätzliche „*.jar“
Libraries. Bei Java 1.4.x ist noch das „dom4j“
Framework zusätzlich nötig: www.dom4j.org
17
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:parse>: XML parsen, DOM erzeugen
Mittels „<xtags:parse>“ lassen sich XML Daten
parsen und daraus ein DOM erzeugen
Es können externe XML Daten sowie als inline
verwendet werden.
z.B. XML parsen und DOM erzeugen
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse id="ExtDoc" uri="/foo/cdcatalog.xml"/>
<xtags:parse>
<root>inline</root>
</xtags:parse>
18
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:add>, <xtags:remove>, <xtags:replace>:
DOM Operationen durchführen
Mittels diesen Tags lassen sich DOM Strukturen
verändern
z.B.
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse uri="/foo/cdcatalog.xml"/>
<xtags:forEach select="//cd">
<xtags:add><category>pop</category></xtags:add>
</xtags:forEach>
<xtags:remove select="//cd[@id = 123]"/>
19
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:valueOf> : Mittels XPath Werte auslesen
„<xtags:valueOf>“ lässt sich wie „<xsl:value-of>“
verwenden. Es lässt sich somit mittels XPath ein
Wert aus einem zuvor erzeugten DOM auslesen
z.B. DOM erzeugen und mittels XPath Wert auslesen
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse id="doc" uri="/foo/cdcatalog.xml"/>
<xtags:parse uri="/foo/dvdcatalog.xml"/>
<xtags:valueOf select="//cd/title" context="<%=doc%>"/>
<xtags:valueOf select="//dvd/title" />
20
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:forEach> : über ein selekt. NodeSet iterieren
„<xtags:forEach>“ lässt sich wie „<xsl:forEach>“
verwenden. Es kann so über ein selektiertes
NodeSet iteriert werden.
z.B.
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse id="doc" uri="/foo/cdcatalog.xml"/>
<xtags:parse uri="/foo/dvdcatalog.xml"/>
<xtags:forEach select="//cd" context="<%=doc%>">
<xtags:valueOf select="@country"/>
</xtags:forEach>
21
<xtags:forEach select="//dvd/title" id="title">
<%= title %>
</xtags:forEach>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:if>, <xtags:choose> : Bedingte Anweisungen
z.B.
„<xtags:if>“ u. „<xtags:choose>“ lassen sich wie
seine Verwandten bei XSL verwenden. Es lassen
sich so Anweisungen mittels XPath Bedingung
ausführen oder nicht.
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse id="doc" uri="/foo/cdcatalog.xml"/>
<xtags:if test="//cd[price > 15.0]" context="<%=doc%>">
The cd’s here are too expensive
</xtags:if>
22
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:style> : XSL Transformation durchführen
Mittels „<xtags:style>“ wird eine XSL
Transformation durchgeführt.
z.B.
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse id="doc" uri="/foo/dvdcatalog.xml"/>
<xtags:style document="<%=doc%>" xsl="dvd2html.xsl"/>
<xtags:style xml="cdcatalog.xml" xsl="catalog2html.xsl"/>
23
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Jakarta XTags
<xtags:output> : DOM Serialisierung vornehmen
Mittels„<xtags:output>“ lässt sich wieder ein zuvor
erzeugtes DOM wieder in einen String überführen.
z.B.
<%@ taglib uri="http://jakarta.apache.org/taglibs/xtags1.0" prefix="xtags" %>
<xtags:parse uri="/foo/dvdcatalog.xml"/>
<xtags:output method="xml" indent=" "
omitXmlDeclaration="false">
<xtags:copyOf select="/dvdcatalog"/>
<xtags:output>
24
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
JSP Standard Tag Library (JSTL)
TagLibs werden heute sehr verbreitet eingesetzt. Es
gibt eine Unmenge von Herstellern die
unterschiedliche Bibliotheken anbieten.
Der Java Community Process führte daher die JSTL
ein. Eine Taglibrary, die die grundlegendsten Java
Funktionen in Form von Tags zur Verfügung stellen.
Die JSTL ist in 4 Bereiche unterteilt:
• Core Tags
Variabels, Flow Control, Iterator, URL
• SQL Actions
Queries, Inserts, Updates, Transactions
• XML Processing XPath, Parser, Transformation
• I18N
25
Formatierungen n. Lokalität & Sprache
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
Beispiel einer Anwendung mit JSTL: <c:forEach>
Parameter als XML ausgeben mit normalen Scriplets
<%@ page import="java.util.*"%>
ohne
<%@ page contentType="text/xml" %>
JSTL
<?xml version="1.0" encoding="ISO-8859-1"?>
<request>
<% Enumeration enum = request.getParameterNames();
while(enum.hasMoreElements()) {
String param = enum.nextElement().toString(); %>
<param name="<%=param%>">
<%=request.getParameter(param)%>
</param> <% } %>
</request>
26
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
Beispiel einer Anwendung mit JSTL: <c:forEach>
Parameter als XML ausgeben mittels JSTL
<%@ taglib prefix="c"
mit
uri="http://java.sun.com/jsp/jstl/core" %>
JSTL
<%@ page contentType="text/xml" %>
<?xml version="1.0" encoding="ISO-8859-1"?>
<request>
<c:forEach var="item" items="${param}">
<param name="${item.key}">${item.value}</param>
</c:forEach>
</request>
27
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
Beispiel Request Daten als XML mittels JSP
28
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
Beschaffung und Installation der JSTL:
Für die JSTL gibt es zwei Hersteller:
• SUN:
• Apache:
java.sun.com/products/jsp/jstl/
jakarta.apache.org/taglibs/doc/standarddoc/intro.html
Die JSTL v1.1 basiert auf der JSP 2.0 und Servlet
2.4 Spezifikation. Der jeweilige Webapp Container
muss dies unterstützen!
Solche Container (z.B. Tomcat 5.x) lassen sich nur
noch mit Java 1.4.x betreiben
29
Um die JSTL verwenden zu können, muss das „.jar“
File in die Webapplikation aufgenommen werden
(„WEB-INF/lib“).
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
Installation der JSTL
Die JSTL besteht nur aus „*.jar“ Files . Einmal aus
der Interface Definition und einmal aus deren
Implementation.
30
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs - JSTL
Anwenden der JSTL:
Die JSTL muss in der jeweiligen JSP Page
zuerst bekannt gemacht werden. Hierzu muss
die entsprechende TagLib Direktive
angegeben werden.
z.B.:
31
Library
Prefix URI
Core
c
http://java.sun.com/jstl/core
SQL Actions
sql
http://java.sun.com/jstl/sql
XML Processing x
http://java.sun.com/jstl/xml
I18N
http://java.sun.com/jstl/fmt
fmt
<%@ taglib uri="http://java.sun.com/jstl/xml"
prefix="x" %>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
Übersicht XML Processing Tags der JSTL:
Die JSTL stellt für die XML Verarbeitung einige Tags zu
Verfügung:
• <x:parse>
• <x:out>
• <x:set>
• <x:if>
• <x:choose>
• <x:forEach>
• <x:transform>
• <x:param>
32
DOM Erzeugung von XML Daten
XPath Evaluieren und ausgeben
XPath Evaluieren und in Variable schreiben
XPath Evaluieren und Bedingung ausführen
XPath Evaluieren und Bedingungen ausführen
XPath Evaluieren und über Selektion iterieren
XSL Transformation ausführen
Parameter an XSL Transformation übergeben
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:parse>, <x:out>: XML Daten parsen und ausgeben
Mittels „<x:parse>“ können XML Daten geparst und
in eine Variable als DOM geschrieben werden.
„<x:out>“ erlaubt es uns diese DOM Daten mittels
XPath zu selektieren und auszugeben
z.B. XML Daten von Datei parsen und 1. Title ausgeben :
33
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml"%>
<c:import var="cdcatalog" url="cdcatalog.xml"/>
<x:parse doc="${cdcatalog}" var="doci"/>
<html>
1st Title is "<x:out select="$doci//cd/title"/>"
</html>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:parse>, <x:out>: XML Daten parsen und ausgeben
z.B. XML Daten inline parsen und 2.Title ausgeben :
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<html>
<x:parse var="doci">
<catalog >
<cd country="UK"><title>Hide your heart</title></cd>
<cd country="USA"><title>Still got the blues</title></cd>
<catalog >
</x:parse>
<body>
2nd Title is "<x:out select="$doci//cd[2]/title"/>"
</body>
</html>
34
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:set>: XML Daten auswerten und in Variable schreiben
„<x:set>“ ist fast wie „<x:out>“ nur, dass anstelle
das XPath Resultat ausgegeben es in eine Variable
geschrieben wird.
z.B. XML Daten von Datei parsen und 1.Title ausgeben :
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="cdcatalog" url="cdcatalog.xml"/>
<x:parse doc="${cdcatalog}" var="doci"/>
<x:set select="$doci//cd/title/text()" var="result"/>
<html>
1st Title is "${result[0].nodeValue}"
</html>
35
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:if>, <x:choose>: XML Daten bedingt verarbeiten
„<x:if>“ und „<x:choose>“ sind mit den bekannten
XSL Anweisungen „<xsl:if>“ und „<xsl:choose>“
gleichzusetzen. Treffen die XPath Bedingungen zu
so wird die Anweisung ausgeführt
z.B. XML Daten von Datei parsen und Preis überprüfen :
36
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="cdcatalog" url="cdcatalog.xml"/>
<x:parse doc="${cdcatalog}" var="doci"/>
<html>
<x:if select="$doci//cd/price > 10.0">
1st cd is too expensive!
</x:if>
</html>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:forEach>: über XML Daten iterieren
„<x:forEach>“ ist mit den bekannten XSL
Anweisung „<xsl:forEach>“ gleichzusetzen. Es
kann so über ein XPath Resultat iteriert werden.
z.B. XML Daten von Datei parsen und alle Titel ausgeben :
37
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="cdcatalog" url="cdcatalog.xml"/>
<x:parse doc="${cdcatalog}" var="doci"/>
<html>
<x:forEach select="$doci//title">
<x:out select="."/><br>
</x:forEach>
</html>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:transform>,<x:param>: XSL Transformation
Mittels „<x:transform>“ kann eine XSL
Transformation durchgeführt werden
Mittels „<x:param>“ können zusätzliche
Parameter an die Transformation übergeben
werden. Î <xsl:param>
z.B. XML Cd Katalog in HTML transformieren :
38
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="xml" url="cdcatalog.xml"/>
<c:import var="xsl" url="cdcatalog.xsl"/>
<x:transform doc="${xml}" xslt="${xsl}">
<x:param name="par1" value="123"/>
</x:transform>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:transform>,<x:param>: XSL Transformation
z.B. Inline XSL Transformation:
39
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="xsl" url="cdcatalog.xsl"/>
<x:transform xslt="${xsl}">
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<price>10.90</price>
</cd>
</catalog>
</x:transform>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
<x:transform>,<x:param>: XSL Transformation
z.B. Inline XSL Transformation mit Inline Stylesheet:
40
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
<c:set var="xsl">
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
</xsl:stylesheet>
</c:set>
<x:transform xslt="${xsl}">
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
...
</catalog>
</x:transform>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – Nachteile JSTL XML Tags
Nachteile der XML Actions der JSTL
Serialisierung von DOM Daten zu String nicht
direkt möglich
Î Manueller Einsatz des Apache Xerces Serializers
Î Einsatz anderer Taglibs z.B. <xtags:output>
Î Einsatz einer 1:1 XSL Transformation
Keine SAX Unterstützung, grössere XML könnten
zu Performance Problemen führen
Kein Zugriff auf das JAXP API, Konfigurationen
können so nicht durchgeführt werden
41
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs – JSTL XML Tags
Lösung mittels XSLT DOM serialisieren
42
<%@ taglib prefix="c" uri="..." %>
<%@ taglib prefix="x" uri="..." %>
<%@ page contentType="text/xml" %>
<c:import var="articles" url="tagesanzeiger.xml"/>
<x:parse doc="${articles}" var="dom"/>
<?xml version="1.0" encoding="iso-8859-1" ?>
<c:set var="xsl">
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xmldeclaration="yes"/>
<xsl:template match="node()">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
</c:set>
<root>
<x:transform xslt="${xsl}" doc="${dom}"/>
</root>
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Nachteile Taglibs (1/2)
Bei den eingesetzten Taglibs muss die Version
des jeweiligen Standards (JSP, Servlet sowie auch
der Java Version) berücksichtigt werden
Die jeweiligen Taglibs benötigen oft noch weitere
Libraries (*.jar) , dies bemerkt man erst zur
Laufzeit . Weitere Versionskonflikte möglich
Debugging ist sehr schwierig, hier hilft nur
regelmässiges Logging und Testen
Syntax ist jeweils von der jeweiligen Taglibrary
und Hersteller abhängig. Kompatibilität zwischen
den Taglibs of nicht gewährleistet z.B.
<xtags:parse>, <x:parse >
43
XML mit
Java OpenSource
(c) Mark Egloff 2003
TagLibs
Nachteile Taglibs (2/2)
Taglibs bieten viele Möglichkeiten, jedoch kann es
das Architekturprinzip MVC auch zerstören da
keine Trennung mehr zwischen Businesslogik und
Präsentationslogik erfolgt
Taglibs sind nicht immer die beste Wahl wenn es
um Performance geht, hier spielt alleine die
Implementation eine Rolle. Eventuell einfache Java
Beans mit Logik einsetzen
Zuviel Logik (egal ob Scriptlets ode Taglibs)
machen JSP Seiten schlecht wartbar. Darum
diese immer so einfach und schlank wie möglich
halten
44
XML mit
Java OpenSource
(c) Mark Egloff 2003
XML & TagLibs - Links
• Sun JSP TagLibs
http://java.sun.com/products/jsp/taglibraries/index.jsp
• Sun JSP JSTL
http://java.sun.com/products/jsp/jstl/
• Apache TagLibs
http://jakarta.apache.org/taglibs/
• Apache JSTL
http://jakarta.apache.org/taglibs/doc/standard- doc/intro.html
• O‘Reilly On Java - Jakarta Taglibs
http://www.onlamp.com/pub/a/onjava/2001/05/29/jsp_servlets.ht
ml
• SUN JSP JSTL Tutorial
http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSTL3.html
45
Herunterladen