2 Folien/Seite

Transcription

2 Folien/Seite
Gliederung
1. Software-Komponenten: Grundlegende Begriffe
2. Systematischer Entwicklungsprozess für Komponenten-Software
mit UML
3. Java-Komponenten-Technologien
3.1 JavaBeans-Technologie
3.2 Web-Komponenten mit Java
3.3 Enterprise JavaBeans-Technologie
4. Komponentenspezifikation
5. Komponententechnologien im Vergleich
5.1 Microsoft COM/DCOM/COM+
5.2 CORBA Component Model
5.3 Vergleich der Komponentenstandards
6. Zusammenfassung und Ausblick
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Kapitel 3
Java-Komponenten-Technologien
3.2
Web-Komponenten mit Java
– Dynamische Webseiten
– Servlets
– Java Server Pages
– Einsatz von JavaBeans in Web-Anwendungen
– Definition von Tags mit Java
Literatur:
– Volker Turau/Ronald Pfeiffer: Java Server Pages, dpunkt 2000
– Karl Avedal et al.: Professional JSP, Wrox Press 2000
Technische Universität Dresden
Prof. Hußmann
Seite 1
Softwarekomponenten
Zähler mit Java Server Pages: Anzeige
Beispiel unter Verwendung der Entwicklungsumgebung "Forte for Java"
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Zähler mit Java Server Pages: HTML-Quelle
<html>
<head><title>Counter Demo Page</title></head>
<body>
<jsp:useBean id="counter" scope="session" class="Counter"/>
<% if (request.getParameter("CountButton")!=null) {
counter.count();
};
if (request.getParameter("ResetButton")!=null) {
counter.reset();
}
%>
<h2 align="center">Counter Demo</h2>
Current counter value =
<jsp:getProperty name="counter" property="current" />
<br>
<form method="POST" action="CounterJSP.jsp">
<input name="CountButton" type="submit" value="Count">
<input name="ResetButton" type="submit" value="Reset">
</form>
</body>
</html>
Technische Universität Dresden
Prof. Hußmann
Seite 2
Softwarekomponenten
Einschub: <form>-Anweisung in HTML
• Zweck: Interaktive Abfrage von Daten vom Benutzer (Formular)
• Prinzipieller Aufbau:
<form> method=M action=P FT </form>
Attributwerte:
– für M: "GET" (Kodierung in URL), "POST" (HTTP-Header; empfohlen)
– für P: Programm, das die Daten verarbeitet
– für FT: Formulartext, enthält spezielle Eingabe-Tags:
<select>
Auswahl (Drop-Down-Menüs)
<textarea> Mehrzeilige Textfelder
<input>
Andere Eingabeelemente
• Attributwerte für Eingabe-Tags am Beispiel <input>:
– name=N
– type=T
– value=V
Technische Universität Dresden
Name des Eingabeelements
Art des Eingabeelements
"text":
Einzeilige Texteingabe
"submit": Klickbarer Knopf
Standardwert bzw. Name
Prof. Hußmann
Softwarekomponenten
Beispiel zur <form>-Anweisung
<form method="POST" action="CounterJSP.jsp">
Startwert:
<input name="StartValue" type="text" size=10
value="0"><br>
<input name="CountButton" type="submit"
value="Count">
<input name="ResetButton" type="submit"
value="Reset">
</form>
Technische Universität Dresden
Prof. Hußmann
Seite 3
Softwarekomponenten
Web-basierte Anwendungen: Überblick
• Statik vs. Dynamik:
– HTML ist als statische Sprache ausgelegt
– Komplexe Anwendungen: Interaktion, dynamische Inhaltsänderung
• Client-seitige Lösungen:
– Festinstallation zusätzlicher Programme
» Spezialanwendungen, Hilfsprogramme, Plug-Ins
– Dynamisches Laden von Programm-Code
» Java Applets
Probleme:
Portabilität,
Interoperabilität,
Sicherheit,
Skalierbarkeit
• Server-seitige Lösungen:
– Aufruf externer Server-Programme
» CGI (Common Gateway Interface), Server-APIs, Java Servlets
– Erweiterungen der Web-Server-Funktionalität
» "Server Side Includes", Server-Skripte, JSP
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Server-seitige Lösungen: Überblick (1)
• Common Gateway Interface (CGI)
– einfach zu verwenden
» Parameter über Umgebungsvariablen
» Ergebnis Text auf Standardausgabe
– CGI-Anwendungen in jeder Programmiersprache realisierbar
– Nachteile:
» Performance, Skalierbarkeit, Unterstützung von "Sitzungen"
• Web-Server APIs
– Beispiele: NSAPI (Netscape), ISAPI (Microsoft), Java Servlets (Sun)
– Dynamisches Laden von Programmteilen in den Server
– Vorteile:
» Bessere Performance, Realisierbarkeit von Transaktionen, ...
– Nachteile:
» teilweise proprietär; schlecht portabel
» schlechte Trennung von Anwendungslogik und Präsentation
Technische Universität Dresden
Prof. Hußmann
Seite 4
Softwarekomponenten
Beispiel: Einfaches Java Servlet
• Aufgabe: HTML-Seite mit aktuellem Datum
public class DateServlet extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String title = "Date Servlet Page";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println(title);
out.println("</TITLE></HEAD><BODY>");
out.println("<H1>" + title + "</H1>");
out.print("<P>Current time is: ");
out.println(new java.util.GregorianCalendar().getTime());
out.println("</BODY></HTML>");
out.close();
}
}
Java HTML
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Kombination von Programmiersprache und HTML
• Servlets (und ebenso CGI, NSAPI, ISAPI):
– Programme zum Erzeugen von HTML-Code
– HTML-Elemente als Argumente von "print"-Anweisungen
– Vorteil:
» Flexibilität
– Nachteil:
» Unübersichtlich; HTML-Editoren ("Autorensysteme") nicht verwendbar
• Rollenkonflikt:
– Softwareentwickler:
» bevorzugen Programmiersprache als "Basis" mit eingebettetem HTML
– Web-Designer:
» bevorzugen HTML mit Erweiterungen für dynamische Anzeige
» wollen interaktive Werkzeuge mit "WYSIWYG"-Effekt
• Vgl.: Einbettung von SQL in Programmcode
Technische Universität Dresden
Prof. Hußmann
Seite 5
Softwarekomponenten
Beispiel: Java Server Page (JSP)
• Gleiche Aufgabe: HTML-Seite mit aktuellem Datum
<HTML>
<%! String title = "Date JSP"; %>
<HEAD><TITLE> <%=title%> </TITLE></HEAD>
<BODY>
<H1> <%=title%> </H1>
<P>Current time is:
<% java.util.Date now = new GregorianCalendar().getTime(); %>
<%=now%>
</BODY></HTML>
• (Naheliegende) Grundidee für Java Server Pages:
– Definition durch in HTML eingebettete Skripte ("Scriptlets")
– Automatische Übersetzung in Java Servlet
Java HTML
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Server-seitige Lösungen: Überblick (2)
• Server-Side Includes
– Erstmals im NCSA Web-Server realisiert: "umgekehrte Einbettung"
– Eingeschränkte Anweisungen; keine volle Programmiersprache
• Server-seitige Skripte (Aktive Server-Seiten)
– Benutzung vollwertiger Programmier- oder Skriptsprache
– Beliebte Sprache für Server-Skripte: PHP (Personal Home Page)
– Microsoft Active Server Pages (ASP)
» Verwendung verschiedener Skriptsprachen (JScript, VBScript)
» Einsatz von Komponenten (Active/X und DCOM)
– Java als Skript-Sprache: Java Server Pages
» Einsatz von Komponenten (JavaBeans und EJBs), sh. später
Technische Universität Dresden
Prof. Hußmann
Seite 6
Softwarekomponenten
Vergleich JSP / ASP
• Prinzipiell sind JSP und ASP sehr ähnlich.
• Vorteile von JSP:
– Plattformunabhängigkeit (alle bekannten Web-Server)
– Leistungsfähige Programmiersprache mit Anschluß an umfangreiche
Standard-APIs
– Bessere Separierung Logik/Präsentation durch benutzerdefinierte Tags
(sh. später)
– Code wird bei erneuter Ausführung nur auf Byte-Code-Ebene interpretiert
(Übersetzung in Byte-Code nur einmalig)
• Im folgenden:
– Grundprinzipien von JSP/Servlets
– Beispiel zur Übertragung auf andere Plattformen/Technologien
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Kapitel 3
Java-Komponenten-Technologien
3.2
Web-Komponenten mit Java
– Dynamische Webseiten
– Servlets
– Java Server Pages
– Einsatz von JavaBeans in Web-Anwendungen
– Definition von Tags mit Java
Technische Universität Dresden
Prof. Hußmann
Seite 7
Softwarekomponenten
Java Servlets
• Erste Version der Servlet API: 1996 (Java: 1995)
• Java Server Pages: 1997-1999
• Wichtige Referenz-Implementierung:
– "Jakarta"-Projekt der "Apache"-Gruppe
» Apache: weitverbreiteter OpenSource-Web-Server
– "Tomcat":
» Unterstützung für Servlet und JSP
» Separat oder als Modul für Apache-Server
» Entwicklungsumgebung "Forte" z.B. enthält eigenen Tomcat-Server
• Grundprinzip der Ausführung:
– Web-Server ruft Servlet bei Client-Requests auf (Muster Template Method)
– Servlet bestimmt über Datenstrukturen die Antwort für den Client
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Servlet-API: Grundzüge
• abstract class javax.servlet.GenericServlet
– Deklariert Methode service()
• abstract class javax.servlet.http.HttpServlet
– Definiert Standardimplementierung für Methode service()
– Gemäß Muster "Template Method" werden aufgerufen:
» doPost(), doGet(), doPut() etc. je nach Benutzer-Anfrage
– protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
– protected void doPost(HttpServletRequest req,
HttpServletResponse resp)
• interface javax.servlet.http.HttpServletRequest
– Deklariert Methoden wie getAttribute(), getParameter(),
getReader()
• interface javax.servlet.http.HttpServletResponse
– Deklariert Methoden wie setContentType(), getWriter()
Technische Universität Dresden
Prof. Hußmann
Seite 8
Softwarekomponenten
Kapitel 3
Java-Komponenten-Technologien
3.2
Web-Komponenten mit Java
– Dynamische Webseiten
– Servlets
– Java Server Pages
– Einsatz von JavaBeans in Web-Anwendungen
– Definition von Tags mit Java
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Java Server Pages und Servlets
Übersetzung in Servlet
bei erster Anfrage
oder bei Installation
• Lebenslauf einer JSP:
Client
JSP-Server
xyz.jsp
xyz.jsp
installieren
übersetzen
xyz-Servlet
starten
res1
res1: HTML
xyz.jsp
starten
res2
Technische Universität Dresden
res2: HTML
Prof. Hußmann
Seite 9
Softwarekomponenten
JSP-Sprachelemente
• Skript-Elemente
– Einbettung von Java-Code
• Implizite Objekte
– Einfacher Zugriff auf wichtige Servlet-Bestandteile
• Direktiven
– Globale Anweisungen an Übersetzungsvorgang
• Aktionen
– Standardelemente für Laufzeitverhalten
• Prinzipiell kann JSP zur Generierung beliebiger Texte verwendet
werden.
– Neben HTML zunehmend wichtige Zielsprache: XML
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Einbettung von Java-Code in HTML
• Möglichkeiten zur Einbettung:
– Spezielle Tags (z.B. <script> für JavaScript)
» Gefahr der Inkompatibilität mit HTML-Weiterentwicklung
– Tags aus Sonderzeichen
» Unelegant, aber bequem manuell zu handhaben
» JSP: <%, <%!, <%=, <%@, %>, <%--, --%>
– XML-Namespaces
» "Namespace" (xmlns) durch URL definiert, z.B. "jsp"
» Tags der Form <jsp: xyz>
• JSP benutzt zwei Varianten der Einbettung
– Derzeit: Namespace-Syntax nur für Aktionen üblich
– Mittelfristig: Übergang zu Namespace-Syntax wahrscheinlich
(bei besserer Werkzeugunterstützung)
Technische Universität Dresden
Prof. Hußmann
Seite 10
Softwarekomponenten
JSP-Skript-Elemente
• Vereinbarungen
– Syntax:
– Beispiel:
<%! Vereinbarungen %>
<%! String title = "Date JSP"; %>
– Wird in Instanzvariable der generierten Klasse übersetzt.
• Anweisungen (Scriptlets)
– Syntax:
– Beispiel:
<% Anweisungen %>
<% java.util.Date now = new
GregorianCalendar().getTime(); %>
– Lokale Variablen: in anderen Anweisungen sichtbar, nicht in Methoden
• Ausdrücke
– Syntax:
– Beispiel:
– Äquivalent zu
<%= Ausdruck %>
<%= now %>
<% out.print(now); %>
Hinweis: Fehlermeldungen des Java-Compilers beziehen sich auf das
generierte Servlet!
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Kommentare in JSP
• JSP-Kommentare
– Syntax:
– Beispiel:
<%-- Vereinbarungen --%>
<%-- JSP Kommentar --%>
– Dokumentation der JSP; nicht in Servlet übernommen
• HTML/XML-Kommentare
–
–
–
–
–
Syntax:
<!-- Vereinbarungen -->
Beispiel:
<!-- HTML Kommentar -->
Dokumentation des generierten Texts
Ausgabeanweisungen für Kommentar im Servlet generiert
Beispiel für dynamisch generierten Kommentar:
<!-- Version vom <%=heute%> -->
Technische Universität Dresden
Prof. Hußmann
Seite 11
Softwarekomponenten
Implizite Objekte in JSP-Skripten
• Auswahl der wichtigsten impliziten Objekte:
• request (javax.servlet.http.HttpServletRequest)
– Lesen von HTTP-Headern, Parametern, Cookies etc. der Anfrage
• response (javax.servlet.http.HttpServletResponse)
– Ausgeben von HTTP-Headern, Cookies etc. in der Antwort
• session (javax.servlet.http.HttpSession)
– Verfolgung von "Sitzungen" (zusammengehörigen Interaktionen)
• out (javax.servlet.jsp.JspWriter)
– Ausgabestrom (Ergebnisseite)
– Übliche print- und println-Operationen stehen zur Verfügung
• Beispiel:
<% if (request.getParameter("CountButton")!=null) {
counter.count();
}; %>
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Erzeugter Servlet-Code (Auszug)
<HTML>
<%! String title = "Date JSP"; %>
<HEAD><TITLE> <%=title%> </TITLE></HEAD>
<BODY>
<H1> <%=title%> </H1>
<P>Current time is:
<% java.util.Date now = new GregorianCalendar().getTime(); %>
<%=now%>
</BODY></HTML>
...
out.write("\r\n");
out.write("<html>\r\n");
out.write("");
out.write("\r\n");
out.write("<head><title>");
out.print(title);
out.write("</title></head>\r\n");
out.write("<body>\r\n");
out.write("<H1>");
Vollständiger Code für das Beispiel:
out.print(title);
Datei sk4-CalendarServlet.java
out.write("</H1>\r\n"); ...
Technische Universität Dresden
Prof. Hußmann
Seite 12
Softwarekomponenten
JSP-Direktiven
• Syntax für Direktiven:
<%@DirektivenName AttributName = Wert %>
• Direktive "include":
– Einkopieren anderer Dateien zur Übersetzungszeit
– Bsp: <%@include file="fusszeile.html" %>
• Direktive "page":
– Steuerung des Übersetzungsvorgangs
– Wichtigste Attribute:
import:
Analog zum Java-Import-Statement
Bsp: <%@page import="java.util.*" %>
session:
Bereitstellung von Sitzungsverfolgung
Bsp: <%@page session="false" %>
(Standardwert ist "true")
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
JSP-Aktionen
• Syntax für Aktionen:
<jsp:AktionsName AttributName = Wert/>
• Standardaktionen:
– <jsp:include page = "pfad" flush="true"/>
» "Sprung" zur Ausführungszeit zu anderer JSP-Seite; mit Rücksprung
» Attributwert kann auch dynamisch bestimmt werden
– <jsp:forward page = "pfad"/>
» analog ohne Rücksprung
– Aktionen zum Arbeiten mit JavaBeans (sh. nächste Folie)
• Benutzerdefinierte Aktionen (sh. später: Tag-Bibliotheken)
Technische Universität Dresden
Prof. Hußmann
Seite 13
Softwarekomponenten
Kapitel 3
Java-Komponenten-Technologien
3.2
Web-Komponenten mit Java
– Dynamische Webseiten
– Servlets
– Java Server Pages
– Einsatz von JavaBeans in Web-Anwendungen
– Definition von Tags mit Java
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Beispiel: Java Server Page mit JavaBeans
<P>Current time is:
<% java.util.Date now = new GregorianCalendar().getTime(); %>
<%=now%>
</BODY></HTML>
Gleicher Effekt mit Nutzung von JavaBeans:
<jsp:useBean id="clock" scope="page"
class="java.util.GregorianCalendar"/>
<P>Current time is:
<jsp:getProperty name="clock" property="time"/>
</BODY></HTML>
• Wo liegt der Unterschied?
– Programmkomponenten für Web-Designer nutzbar machen
– Keine Programmierkenntnisse nötig: nur HTML-Tags
– Visuelle Werkzeuge möglich
Technische Universität Dresden
Prof. Hußmann
Seite 14
Softwarekomponenten
JavaBeans in JSP: Aktion useBean
• Syntax für useBean-Aktion:
<jsp:useBean id=LokalerName class=KlassenName
scope=Gültigkeitsbereich />
• Attribute:
id:
class:
scope:
Name einer lokalen Java-Variablen
Verwendbar auch in Skript-Elementen
Name einer Bean-Klasse
(Mit Attribut "type"zusätzlicher Cast möglich.)
"page":
"request":
Nur in aktueller Seite verfügbar
Nur in aktueller Anfrage verfügbar
(evtl. mehrere Seiten wegen include/forward)
"session":
Nur in aktueller Sitzung verfügbar
(evtl. mehrere Seiten wegen include/forward)
"application": In gesamter Anwendung verfügbar
• Ausführung:
Zuerst Suche, ob Bean-Instanz existiert, dann ggf. Instanziierung
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Zugriff auf Eigenschaften von JavaBeans in JSP
• Lesen von Eigenschaften:
<jsp:getProperty
name=LokalerName
property=EigenschaftsName/>
– <jsp:getProperty name=counter property=current/>
ist gleichwertig zu:
<%=counter.getCurrent;%>
• Setzen von Eigenschaften:
<jsp:setProperty
name=LokalerName
property=EigenschaftsName/>
value=WertAlsString/>
– <jsp:setProperty name=counter property=startValue
value="1"/>
ist gleichwertig zu (Typkonversionen automatisch erzeugt!):
<% counter.setStartValue(Integer.parseInt(new
String("1")));%>
• Spezielle Unterstützung für Setzen von Eigenschaften aus RequestParametern (d.h. z.B. Eingabefeldern einer <form>)
Technische Universität Dresden
Prof. Hußmann
Seite 15
Softwarekomponenten
Zähler mit Java Server Pages: HTML-Quelle
<html>
<head><title>Counter Demo Page</title></head>
<body>
<jsp:useBean id="counter" scope="session" class="Counter"/>
<% if (request.getParameter("CountButton")!=null) {
counter.count();
};
if (request.getParameter("ResetButton")!=null) {
counter.reset();
}
%>
<h2 align="center">Counter Demo</h2>
Current counter value =
<jsp:getProperty name="counter" property="current" />
<br>
<form method="POST" action="CounterJSP.jsp">
<input name="CountButton" type="submit" value="Count">
<input name="ResetButton" type="submit" value="Reset">
</form>
</body>
</html>
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
MVC-Architektur mit JavaBeans und JSP
Web Service
(JSP Server)
request
Web Client
Browser
Controller
JSP/Servlet
forward
response
Technische Universität Dresden
Model
JavaBeans
Datenbanken,
EJBs...
View
JSP
Prof. Hußmann
Seite 16
Softwarekomponenten
Beispiel: Counter mit Konfigurationsseite
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
View-Seite für Counter
<html>
<head><title>MVC Counter View</title></head>
<body>
<jsp:useBean id="counter" scope="session" class="Counter"/>
<h2 align="center">Counter Demo</h2>
Current counter value =
<jsp:getProperty name="counter" property="current" />
<br>
<form method="POST" action="MVCCounterContr.jsp">
<input name="CountButton" type="submit" value="Count">
<input name="ResetButton" type="submit" value="Reset">
<input name="ConfigButton" type="submit"
value="Configure Counter">
</form>
</body>
</html>
Technische Universität Dresden
Prof. Hußmann
Seite 17
Softwarekomponenten
Controller-Seite für Counter
<jsp:useBean id="counter" scope="session" class="Counter"/>
<% if (request.getParameter("CountButton")!=null) {
counter.count(); %>
<jsp:forward page="MVCCounterView.jsp"/>
<% };
if (request.getParameter("ResetButton")!=null) {
counter.reset(); %>
<jsp:forward page="MVCCounterView.jsp"/>
<% }
if (request.getParameter("ConfigButton")!=null) { %>
<jsp:forward page="MVCCounterConfView.jsp"/>
<% }
if (request.getParameter("ConfigChangeButton")!=null) { %>
<jsp:setProperty name="counter" property="*"/>
<% counter.reset(); %>
<jsp:forward page="MVCCounterView.jsp"/>
<% } %>
Eigenschaftswerte aus
Parametern
der Anfrage bestimmt
Kein HTML-Text! Deshalb evtl. als Servlet
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
View-Seite für Counter Configuration
<html><head><title>MVC Counter Configuration View</title></head>
<body>
<jsp:useBean id="counter" scope="session" class="Counter"/>
<h2 align="center">Counter Demo</h2>
Please enter new counter configuration:
<br>
<form method="POST" action="MVCCounterContr.jsp">
Start value:
<input name="startValue" type="text"
value=<jsp:getProperty name="counter" property="startValue"/>
size=5><br>
Increment value:
<input name="incrValue" type="text"
value=<jsp:getProperty name="counter" property="incrValue"/>
size=5><br>
<input name="ConfigChangeButton" type="submit"
value="Change Configuration">
</form>
</body>
</html>
Technische Universität Dresden
Prof. Hußmann
Seite 18
Softwarekomponenten
Kapitel 3
Java-Komponenten-Technologien
3.2
Web-Komponenten mit Java
– Dynamische Webseiten
– Servlets
– Java Server Pages
– Einsatz von JavaBeans in Web-Anwendungen
– Definition von Tags mit Java
Technische Universität Dresden
Prof. Hußmann
Softwarekomponenten
Benutzerdefinierte Tags
• Komplexe "View"-Seiten:
– benötigen Programmlogik z.B. zum Durchlaufen und Formatieren von
Ergebnismengen einer Anfrage
– können mit Aktionen useBean/setProperty/getProperty nicht realisiert werden
• Benutzerdefinierte Tags:
– Syntax:
<NamespaceName:TagName AttributName = Wert/> oder
<NamespaceName:TagName AttributName = Wert> Rumpf
</NamespaceName:TagName>
– Semantik wird durch Java-Klasse (JavaBean) angegeben: "Tag Handler"
– Alle Tags eines Namensraums: "Tag Library"
• Beispiel: Anwendung eines benutzerdefinierten Tags (aus Turau 2000)
<fhw:anfrage id="orders" connection="con">
select Country, City Date from orders where ORDERID>11051
order by Country
</fhw:anfrage>
Technische Universität Dresden
Prof. Hußmann
Seite 19
Softwarekomponenten
Prinzip einer Tag-Handler-Klasse (Bean)
• Tag-Handler implementieren eine der beiden Schnittstellen
– "Tag" (Tag ohne Rumpf) oder
– "BodyTag" (Tag mit Rumpf; Möglichkeit zur Wiederholung)
• Tag-Attribute werden als Eigenschaften der Handler-Bean betrachtet
• Deklaration von Tags: "Taglib-Deskriptor" (XML-Datei)
<<interface>>
javax.servlet.jsp.tagext.Tag
<<interface>>
javax.servlet.jsp.tagext.BodyTag
...
doStartTag(): int
doEndTag(): int
...
doInitBody(): int
doAfterBody(): int
Spezielle Ergebniswerte signalisieren:
doStartTag(): Auswerten des Rumpfs
doEndTag(): Bearbeitung der Rest-Seite
Spezielle Ergebniswerte signalisieren:
doAfterBody(): Rumpf wiederholen
Tutorial zu Tag-Erweiterungen in JSP: www.orionserver.com
Technische Universität Dresden
Prof. Hußmann
Seite 20
Softwarekomponenten