Vorlesung „Informationssystemen: Neuere Konzepte“ SS 2005 Kurs: WWI02V2 Dipl.-Inform. Michael Klein [email protected] Dipl.-Inform. Heiko Schepperle [email protected] 1 Organisatorisches Mein Name: Michael Klein eMail: [email protected] Homepage der Vorlesung: www.michaelklein.net/nki Vorlesung: Raum 210 2 Themen Teil I I-1: I-2: I-3: (Michael Klein) Web und Datenbanken (3) Objektorientierte Datenbanksysteme (2) ? Teil II II-1: II-2: II-3: (Heiko Schepperle) Data Warehousing & OLAP Data Mining Imperfektion in Datenbanken 3 Details zu Teil I I-1: Web und Datenbanken 1. Webinformationssysteme, JSP 2. Praktische Rechnerübung zu JSP 3. Komponentenarchitekturen, EJB I-2: Objektorientierte Datenbanksysteme 1. Objektorientierte Modellierung 2. Persistenz von Objekten (optional) I-3: Web Services? 4 Termine Teil I Do, 09.06. 10:45 – 13:15 Uhr Mi, 15.06. 08:00 – 10:30 Uhr (Rechnerübung) Do, 23.06. 10:45 – 13:15 Uhr Do, 30.06. 10:45 – 13:15 Uhr Mo, 04.07. 10:45 – 13:15 Uhr 5 Praktische Übungen Übungsblätter Auf der Homepage erhältlich Werden zu Beginn durchgesprochen Wichtig als Klausurvorbereitung Programmieraufgabe JSP Dienen zur Vertiefung der Themen Im Rechnerraum In Gruppen zu bearbeiten klausurrelevant 6 Vorlesung „Informationssystemen: Neuere Konzepte“ Teil „Web & Datenbanken“ Michael Klein Webinformationssysteme Erweiterung der Vorlesung „Webtechnologien im Überblick I“ von Wassili Kazakos (FZI, Karlsruhe) Inhalt Themen heute: Welche datenbankgestützten Webanwendungen gibt es? Wie funktioniert das Web? Wie bekommt man die Datenbankinhalte ins Web? Welche Technik setzt man für was ein? Einführung in Java Server Pages (JSP) 8 Webshops, Auktionshaus, E-Commerce (1) Beispiel: Amazon.de Ebay.de 9 Webshops, Auktionshaus, E-Commerce (2) Eigenschaften: Datenbank speichert Artikel, Kundendaten, Profile Versandinformationen, Auktionen etc. Suchen in Artikeln Bestellen von Artikeln, Bieten auf Artikel Einsehen des Versandstatus Auch: Angabe von Kaufempfehlungen 10 Suchmaschinen (1) Beispiele: Google.de Altavista.com 11 Suchmaschinen (2) Eigenschaften: Crawler durchforsten Internet nach Seiten Datenbank speichert indizierte Seiten Welche Wörter/Wortgruppen sind enthalten Wer linkt auf diese Seite Suchen nach Stichworten/Wortgruppen möglich Ranking der Suchergebnisse nach unterschiedlichen Kriterien Meist einfache, funktionale Oberfläche 12 Webanwendungen, Weboberflächen (1) Beispiele: Webmail Administrationsoberflächen 13 Webanwendungen, Weboberflächen (2) Eigenschaften: Datenbank speichert Userinformation (inkl. Passwort), administrierte Daten (Mails, Ordner, Termine, etc.) Web dient als Oberfläche, diese von beliebigen Ort, auf beliebigen (webfähigen) Gerät einsehen und verändern zu können 14 Web Portale, „inhaltsstarke“ Seiten (1) Beispiele: Yahoo.de Zeitungen/Zeitschriften, Spiegel.de 15 Web Portale, „inhaltsstarke“ Seiten (2) Eigenschaften: Komplexe, vielschichtige Seiten Viele Autoren, viele Informationsquellen Corporate Identity wichtig Formatvariationen für Ausgabegerät 16 Internetspiele (1) Beispiel: BrettspielWelt, WarCraft III Battle.netServer 17 Internetspiele (2) Eigenschaften: Rechenintensive Anwendung Hoher graphischer Aufwand Spezielle Interaktionsbedürfnisse 18 Technischer Aufbau des Internets Das Internet – Die Geschichte Internet = Netz von Netzen 1960: das Internet entsteht aus dem militärischen ARPANET 1982: TCP/IP setzt sich durch 1990: Erste graphische Browser, das World Wide Web (WWW) entsteht ab 1990: Rasantes Wachstum des Internets 20 Das Internet - Technik Stapel von Protokollen ISO/OSI-Referenzarchitektur, 7 Schichten Unabhängig von Betriebssystem & Netzwerktechnologie Teilnehmer sind durch eindeutige IP-Adresse ausgezeichnet Vielzahl von Diensten möglich Mail, WWW, File-Sharing, Web-Radio (Streaming), WebServices… 21 Schichten des Internets Klient Server Application HTTP Application Transport TCP Transport Network IP Network Data Link Data Link Physical Physical 22 Netzwerkschicht Klient Server Application HTTP Application Transport TCP Transport Network IP Network •vergibt weltweilt eindeutige IP-Adressen, z.B. 155.23.21.2 •Sucht einen Weg zwischen zwei Netzteilnehmern (Routing) • zustandslos, d.h. Pakete wandern unabhängig durch das Netz Empfänger Sender Paket 23 Transportschicht Klient Server Application HTTP Application Transport TCP Transport Network IP Network • Stellt eine Verbindung zwischen zwei Teilnehmern her • Explizites Öffnen und Schließen nötig • Ordnet die ankommenden Pakete • Regelt die Geschwindigkeiten zwischen den Partnern (Staukontrolle) • Weist Pakete der entsprechenden Anwendung zu (Ports, Multiplexing) • zustandsbasiert 24 • Weiteres Protokoll: UDP Anwendungsschicht - HTTP Klient Server Application HTTP Application Transport TCP Transport Network IP Network • Nutzt eine TCP-Verbindung, um Daten (Hypertexte) zu übertragen • get: Anfordern einer Datei vom Server • put: Ablegen einer Datei auf dem Server • post: Übermitteln von Parametern & Anforderung einer Datei • Zustandslos • für jede Datei muss ein neues get gesendet werden • Server kennt Verlauf der Klientenaktionen nicht • Weitere Protokolle: RMI, FTP, SMTP, … 25 Typisches Dokumentformat bei HTTP: HTML HTML Application HTTP Application Ausgetauschte Information z.B. im HTML-Format • Hypertext Markup Language • Mischt Text mit Markup-Elementen (Tags), die Aussehen und Verhalten modifizieren • z.B. Dieser Text ist <b>fettgeschrieben</b>. • Möglichkeit zur • Verlinkung auf andere Seiten • Definition von Formularfeldern für Benutzereingaben • Plattformunabhängig, wird von einem HTML-Renderer (üblicherweise einem Browser) auf dem Zielsystem dargestellt 26 Anwendungsschicht: weitere Protokolle Klient Server Application ? Application Transport TCP Transport Network IP Network Vielzahl weiterer Anwendungsprotokolle: • Remote Method Invocation (RMI), Remote Procedure Calls (RPC) • Verteiltes Programmieren • Entfernter Aufruf von Methoden/Funktionen • Serialisierung und Versendung der Parameter • Simple Object Access Protocol (SOAP) über HTTP • Zugriff auf Web Services • Eigene Protokolle 27 Zugriff auf Datenbanken über das Web Zugriff auf Datenbanken über das Web Unterschiedlich je nach Protokoll auf Anwendungsebene. Extreme: 1. Serverseitige Generierung, Thin Client: Browser HTTP(HTML) HTTP Server DB 2. Klientenseitige Verarbeitung, keine Logik im Server, Rich Client: ErweiBrowser terung Datenbankspezifisches Protokoll DB 29 Weitere Zugriffsmöglichkeiten Entfernte Methodenaufrufe Browser Applet RMI / RPC RMI Server DB Web Services Anwendung HTTP(SOAP) SOAP Server Dienst Dienst Dienst DB 30 Serverseitige Ansätze Der „klassische“ Weg Serverseitige Ansätze - Übersicht Generell: Serverseitige Generierung von HTML-Seiten Offline, durch Vorberechnung statischer HTML-Seiten Durch Zugriff auf HTML-generierende Anwendungen Durch Einbettung HTML-generierender Skriptteile in statisches HTML kompiliert interpretiert 32 Serverseitige Ansätze - Bewertung Generelle Vorteile: Zentrale Wartbarkeit der Anwendungslogik Geringe Anforderungen an den Klienten (nur Browser) Plattformunabhängigkeit – Klient sieht reines HTML Sicherheit – Klient greift nicht direkt auf Datenbank zu Sicherheit – Kein aktiver Code beim Klienten Generelle Nachteile: Eingeschränkte GUI-Möglichkeiten Zustandslosigkeit von HTTP HTML ist doch nicht so plattformunabhängig Jede Interaktion erfordert Kommunikation mit dem Server 33 Serverseitige Ansätze 1. Offline, Vorberechnung von HTML-Seiten Offline, Vorausberechnung von HTML-Seiten Periodische Extraktion von Daten aus einem DBMS, Vorbereitung von statischen HTML Seiten Navigation mittels offline generierter Links Auslieferung als gewöhnliche HTML-Seite über HTTP HTML HTML HTTP Generierungswerkzeug Datenbank HTML 35 Bewertung Vorteile Schneller Zugriff: Nur Ausliefern der HTML-Seiten Keine DB-Zugriffe Automatische Erfassung durch Suchmaschinen Nachteile Im Vergleich zu Datenbanksystemen begrenzte Suchfunktionalität Aktualisierungs- und Konsistenzproblem Keine Anwendungsfunktionalität, kein richtiges Reagieren auf Eingaben 36 Serverseitige Ansätze 2. Durch Zugriff auf HTML-generierende Anwendungen Common Gateway Interface Common Gateway Interface Definierte Schnittstelle für den Zugriff auf Server-seitige Anwendungen Ermöglicht HTTP-Servern den Zugriff auf externe, lokale Anwendungen Beispiel: http://www.klick-and-bau.com/cgi/suche?term=tisch&preis=1 Aufruf des Programms "suche" mit den parametern "term" und "preis" Implementiert in beliebiger Programmier- oder Skriptsprache (z.B. CGI-Skripte). Häufig: Perl, C, C++ Datenbankintegration durch entsprechende Anwendungen 38 CGI-Skripte Betätigung Submit-Button <FORM METHOD="POST" ACTION="http://www.fzi.de/ cgi-bin/my-form"> Aufruf des Skriptes mit Parametern Initialisierung bei jedem Aufruf HTTPServer client Anfrage Aufbau der DB Verbindung bei jedem Aufruf Datenbank CGI-Skript Verbindungsaufbau SQL Anfrage Antwort Ergebnis HTTP Server Antwortet Skript übermittelt HTML und beendet sich Skript generiert HTML Skript stellt Anfrage an DB 39 Bewertung Vorteile Beliebige Programme können integriert werden Sicherheit durch eigenen Prozess Volle Suchfunktionalität des darunter liegenden DBMS (z.B. SQL) Nachteile Ein Prozess pro Anfrage Keine Speicherung des Zustands Für jede DB-Anfrage Verbindung aufbauen und trennen Keine Trennung von Präsentation und Anwendungslogik CGI-Skripte nur für kleine Anwendungen 40 API-basierte Ansätze Entwickelt um Nachteile der CGI-Skripte zu überwinden Die CGI-Schnittstelle bleibt erhalten Erweiterungen werden in den Adressraum des Servers geladen Müssen nur einmal geladen werden Werden in Threads statt Prozessen ausgeführt Bekanntesten Vertreter NSAPI (Netscape) ISAPI (Microsoft) Java Servlets (Sun) 41 API-basierte Ansätze Betätigung Submit-Button <FORM METHOD="POST" ACTION="http://www.fzi.de/ cgi-bin/my-form"> Aufruf des Programms, Parameterübergabe Initialisierung bei ersten Aufruf (einmalig) Verbindungsaufbau zur DB beim ersten Aufruf (einmalig) HTTPServer client Datenbank Verbindungsaufbau Anfrage Programm Antwort SQL Anfragen Ergebnisse Zustand Beliebig viele SQL Anfragen HTML-Rückgabe HTML-Generierung 42 Bewertung Vorteile Höhere Leistungsfähigkeit Session-Verwaltung Zustände, z.B. DB-Verbindung Weniger Ressourcenverbrauch Nachteile Keine Standardisierung Mangelnde Sicherheit Keine Trennung von Präsentation und Anwendungslogik 43 Serverseitige Ansätze 3. Durch Einbettung HTML-generierender Skriptteile in statisches HTML Server-Side Skripting In HTML-Seiten werden zusätzliche HTML-generierende Quellen integriert Beliebig viele HTML-Quellen können aufgenommen werden HTML HTML Datenbank Scripting Scripting AnwendungsLogik 46 Ausführungsvarianten Anwendung erstellen Laufzeit <HTML> Anwendung erstellen <HTML> <xyz:...> <jsp:...> </HTML> </HTML> Interpreter Übersetzungszeit (einmalig) Compiler Ausführbares Programm Laufzeit HTMLDokument interpretiert HTMLDokument kompiliert 47 Typische Vertreter Interpretiert: PHP - Personal Home Page ASP - Active Server Pages (Microsoft IIS) Server Side JavaScript (Netscape) Kompiliert: JSP - Java Server Pages ASP.NET – Active Server Pages .NET 48 Bewertung Vorteile: Starke Verbreitung, gute Unterstützung Volle Programmiersprachenfunktionalität Standardisierung Überbrückung der Zustandslosigkeit durch „Tricks“ Einbindung externer Programme möglich Statische Teile brauchen nicht erzeugt zu werden Nachteile: Häufig geringe Geschwindigkeit Starke Mischung von HTML und Programmiersprache 49 Übersicht Webinformationssysteme WebDB-Techniken Serverseitige HTML-Generierung Offline durch Vorberechnung von HTMLSeiten Durch Zugriff auf HTMLgenerierende Anwendung Generierung statischer Seiten CGI API-basiert Durch Einbettung HTMLgenerierender Skriptteile interpretiert SSI ASP PHP kompiliert JSP 50 Client-seitige Ansätze Zugriff auf Datenbanken über das Web Unterschiedlich je nach Protokoll auf Anwendungsebene. Extreme: 1. Serverseitige Generierung, Thin Client: Browser HTTP(HTML) HTTP Server DB 2. Klientenseitige Verarbeitung, keine Logik im Server, Rich Client: Browser Applet Datenbankspezifisches Protokoll DB 52 Clientseitige DB-WWW-Integration Realität: Höhere Ansprüche an die Benutzeroberfläche Teilverlagerung von Funktionalität auf die Client-Seite Nicht mehr HTML-Generierung Erweiterung 1: mehr Interaktion/Überprüfung auf dem Client Erweiterung 2: Windows-ähnliche Benutzerführung Erweiterung 3: Unmittelbarer Zugriff auf die Daten 53 Funktionalität auf der Client-Seite Browser-spezifische Erweiterungen: Plug-Ins z.B. Macromedia Shockwave, Macromedia Flash Skript-Sprachen z.B. JavaScript, Visual Basic Script Volle Programmiersprachen Java (Applets) VisualBasic, C++ über ActiveX controls Übliche Aufteilung Benutzerschnittstelle auf dem Client Datenbankdienste weiterhin auf dem Server Vom Direktzugriff von Client auf die DB ist aus Sicherheitsgründen abzuraten 54 Beispiel: Client-seitige Integration Präsentation/ Interaktion Server-Prozess Datenbank AnwendungsLogik Daten 55 Übersicht Webinformationssysteme WebDB-Techniken Serverseitige HTML-Generierung Offline durch Vorberechnung von HTMLSeiten Durch Zugriff auf HTMLgenerierende Anwendung Generierung statischer Seiten CGI API-basiert Clientseitige GUI Durch Einbettung HTMLgenerierender Skriptteile interpretiert SSI ASP PHP Java Applet JavaScript PlugIns … kompiliert JSP 56 Resümee Häufigste Formen HTML-Generierung auf Serverseite: CGI mit Perl, C, C++ PHP, JSP, ASP Bei starker Interaktion und komplexer Benutzerführung Clientseitige Erweiterung (JavaSkript, Java) Keine „beste Lösung“ für alle Fälle Kriterien im Einzelfall entsprechend Anforderungen gewichten Immer zu beachten: rasanter technologischer Fortschritt rasche Produktentwicklungen 57 Ausblick Neue „Hype“-Themen auf dem Gebiet JavaServer Faces vereinfachte, modulare GUI-Erstellung auf dem Client WebServices Einbindung von externer Funktionalität über das Web Zugang auch für mobile Geräte (Handys, PDAs…) Microsoft ASP.NET … 58 Anwendungen für Webdatenbanken Webshops, Auktionshaus, E-Commerce (1) Beispiel: Amazon.de Ebay.de 60 Webshops, Auktionshaus, E-Commerce (2) Techniken: Meist Relationale DBMS Klient: Normaler Browser, Cookies, wenig JavaScript Serverseitig: CGI (C++?), (EJB) 61 Suchmaschinen (1) Beispiele: Google.de Altavista.com 62 Suchmaschinen (2) Techniken: Farm relationaler DBMS, Parallele Datenbanken Serverseitig: CGI meist mit schnellen, kompilierten Sprachen, z.B. C, C++ Client: Reiner Browser, sehr schlanke Seiten 63 Webanwendungen, Weboberflächen (1) Beispiele: Webmail Administrationsoberflächen 64 Webanwendungen, Weboberflächen (2) Technik: Meist rel. Datenbanken Serverseitige Skriptsprachen: Perl, Python, PHP, JSP Klientseitig: Standardbrowser 65 Web Portale, „inhaltsstarke“ Seiten (1) Beispiele: Yahoo.de Zeitungen/Zeitschriften, Spiegel.de 66 Web Portale, „inhaltsstarke“ Seiten (2) Technik: Content-Management-System Trennung von Struktur und Inhalt XML Meist realisiert durch CGI Administration der Inhalte auch über Web möglich Klientseitig: Browser Layout-Templates Rohdaten CMS Anzeigbare Webseite 67 Internetspiele (1) Beispiel: BrettspielWelt, WarCraft III Battle.netServer 68 Internetspiele (2) Technik: Serverseitig nicht berechenbar In Standardbrowser nicht anzeigbar Clientseitige Anwendung berechnet Graphiken, Spielverlauf etc. Java Applet, Kommunikation mit Server über eigenes Protokoll eigene Anwendung, eigenes Protokoll Serverseitige Datenbank: Speichert angemeldete Nutzer, laufende Spiele etc. Meist: Nach Beginn des Spieles Peer-to-Peer-Kommunkation ohne Einbeziehung des Servers 69 Literatur Erhard Rahm, Gottfried Vossen Web und Datenbanken. Konzepte, Architekturen, Anwendungen. DPunkt Verlag 2002 Kazakos, Schmidt, Tomczyk Datenbanken und XML. Konzepte, Anwendungen, Systeme Springer Verlag 2002 http://www.datenbanken-und-xml.de 70 Im Detail: Java Server Pages (JSP) Übersicht Webinformationssysteme WebDB-Techniken Serverseitige HTML-Generierung Offline durch Vorberechnung von HTMLSeiten Durch Zugriff auf HTMLgenerierende Anwendung Generierung statischer Seiten CGI API-basiert Clientseitige GUI Durch Einbettung HTMLgenerierender Skriptteile interpretiert SSI ASP PHP Java Applet JavaScript PlugIns … kompiliert JSP 72 Server-Side Skripting In HTML-Seiten werden zusätzliche HTML-generierende Quellen integriert HTML HTML Datenbank Scripting Scripting AnwendungsLogik 73 Java Server Pages (JSP) Bestandteil der Java 2 Plattform Enterprise Edition Trennung von (HTML-)Präsentation und Inhalt Zugriff auf weitere HTML-Quellen über Beans und Servlets Ablauf Erstellung einer JSP Aufruf der JSP durch den Benutzer Überprüfung, ob sich die JSP geändert hat oder ob sie neu ist (Gegebenenfalls Übersetzung der JSP in ein Servlet) Ausführung des Servlets Rückgabe des Ergebnisses 74 JSP Ablauf HTTPServer Generierung des JSP Servlet aus JSP Page (HTML + Scripting) JSPpage client Datenbank Verbindungsaufbau Anfrage Antwort JSPServlet SQL Anfragen Ergebnisse Zustand 75 JSP Elementtypen JSP-Direktiven JSP-Skriptelemente JSP-Aktionen 76 JSP Elementtypen JSP-Direktiven Nachrichten/Anweisungen an den HTTP-Server Keine Ausgabe Syntax: <%@ ... %> include-Direktive Einfügen von Texten vor der Übersetzung <%@include file="Pfadangabe"%> Beispiel <%@ include file="copyright.txt" %> page-Direktive Steuerung der Übersetzung <%@page attrib1="txt" attrib2="txt" ... %> Beispiel <%@ page errorPage="/error.html" %> taglib-Direktive Zur Erzeugung benutzerspezifischer Tags 77 JSP-Skriptelemente (1) JSP Elementtypen Vereinbarungen / Deklarationen Deklarationen von Variablen, Methoden und inneren Klassen Syntax: <%! Vereinbarung(en) %> import über die Direktive Beispiel: Instanzvariablen: <%! int i=0; float f;%> Methode: <%! public String Zeit() {...} %> Anweisungsfragemente/Scriplet Einbettung von Java-Fragmenten Syntax: <% Anweisungsfragment(e) %> Lokale Variablendeklaration Beispiel: <% int i=1; while (i<10) {out.println(i);i++;} %> 78 JSP-Skriptelemente (2) JSP Elementtypen Ausdrücke Einfachste Art eines Skripts Syntax: <%= Ausdruck %> Umwandlung zur Laufzeit in String (toString-Methode) Beispiel: <%= variable %> entspricht <%out.print(variable);%> Kommentare Syntax: <%-- comment --%> 79 JSP-Aktionen JSP Elementtypen Ziel Erzeugen und Verändern von Objekten Steuerung der aktuellen Ausführung Aktion include Aufruf einer Seite zur Ausführungszeit (auch JSP möglich) Syntax: <jsp:include page="Pfadangabe" /> Aktion forward Weiterleitung der Anfrage an eine andere Seite Syntax: <jsp:forward page="Pfadangabe" /> 80 JSP: Beispiel Angenommen, klick-and-bau.com verwaltet Artikelstammdaten in der folgenden Tabelle: ARTIKEL( Id CHAR(12), Name VARCHAR(25), Beschreibung VARCHAR(512), Photo_URL VARCHAR(512), Hersteller_Id CHAR(12) Kategorien VARCHAR(256), Status INT, Preis NUMERIC(8,2) ) Aktuelle Produktname und Photo sollen nun über das Web zur Verfügung gestellt werden 81 JSP: Beispiel <%-<%@ page-Direktive --%> page errorPage="error.html" import="java.sql.*" session="false" %> <html> <body> <h1 align="center"> Produktliste vom <%-- Ausdruck --%> <%= new java.util.Date().toLocaleString()%> </h1> ... 82 JSP: Beispiel (Forts.) ... <%-<%-<%! Datenbank-Verbindung --%> Deklaration der Instanzvariablen --%> Connection con; %> <%-- Skriplet zum Verbindungsaufbau und Abfrage--%> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection ("jdbc:odbc:ProduktDatenbank", "name", "pwd"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery ("SELECT name, photo_URL FROM artikel"); %> ... 83 JSP: Beispiel (Forts.) ... <%-Ausgabe in zwei Spalten...--%> <table> <tr> <th>Name</th><th>Bild</th> </tr> <%-...Zeile für Zeile--%> <% while (rs.next()){ %> <tr><td> <%= rs.getString(1)%> </td> <td> <img src="<%=rs.getString(2)%>"> </td> </tr> <%}%> </table> <%-Verbindung schließen--%> <% rs.close();%> </body> </html> 84 Parameterübergabe in JSP request Enthält die Parameter, die per HTTP über POST von einer anderen Seite übergeben wurden. Bsp: HTML: <form action=„foo.jsp“ method=„post“> <input type="hidden" value=„20021220" name=„Datum"> <input type="submit" value=„Abschicken"> </form> JSP: foo.jsp String datum = request.getParameter(„Datum“) 85 JSP-Aktionen und EJB JSP Elementtypen Standardaufgaben sollten auch weiterhin in Komponenten ausgelagert werden In Java: EJB Einbindung über JSP-Aktionen Aktion useBean Deklaration der Bean Syntax: <jsp:useBean id="varName" class="KlassenName" scope="GültigkeitsBereich"/> 86 JSP-Aktionen und EJB JSP Elementtypen Aktion getProperty Lesen der Eigenschaft einer Komponente Syntax: <jsp:getProperty name="varName" property="AttributsName" Aktion setProperty Schreiben der Eigenschaft einer Komponente Syntax: <jsp:setProperty name="varName" property="AttributsNam" value="Wert"/>, oder <jsp:setProperty name="varName" property="AttributsName" param="cgi-parameter" /> 87 JSP und Synchronisation Grundsätzlich mehrere Instanzen einer JSPSeite/eines Servlets möglich. Abhilfe im Falle von Synchronisationsproblemen: <%@ page isThreadSafe="false" %> 88 JSP Sitzungsverfolgung / Session Management JSP-Seiten nehmen an Sitzungsverwaltung teil In spezieller Variablen „session“ vom Typ HttpSession können Objekte unter Namen abgelegt werden <% Foo foo = new Foo(); session.putValue("foo",foo); %> Inhalt kann auch aus anderer Seite ausgelesen werden <% Foo myFoo = (Foo) session.getValue("foo"); %> Technik: Überwindung der Zustandslosigkeit durch clientseitige Cookies Häufigste Anwendung: Warenkorb 89 JSP Bewertung Sehr stark: Mischung von Designcode (HTML) und Programmiersprachencode (JAVA) Trennung in TemplateEngine, z.B. WebMacro 90 Tutorial JGuru: JSP Short Tutorial http://java.sun.com/developer/onlineTraining/JSPIntro/contents.html Sinnvoll für Praktische Übung 91 Danke für die Aufmerksamkeit!