1 Vorlesung Informationssystemen: Neuere Konzepte SS 2005 Kurs: WWI02V2 Dipl.-Inform. Michael Klein...

Post on 06-Apr-2015

109 views 1 download

Transcript of 1 Vorlesung Informationssystemen: Neuere Konzepte SS 2005 Kurs: WWI02V2 Dipl.-Inform. Michael Klein...

1

Vorlesung„Informationssystemen: Neuere Konzepte“

SS 2005Kurs: WWI02V2

Dipl.-Inform. Michael Kleinkleinm@ipd.uni-karlsruhe.de

Dipl.-Inform. Heiko Schepperleschepperle@ipd.uni-karlsruhe.de

2

Organisatorisches

Mein Name: Michael Klein eMail: kleinm@ipd.uni-karlsruhe.de

Homepage der Vorlesung: www.michaelklein.net/nki

Vorlesung: Raum 210

3

Themen

Teil I (Michael Klein) I-1: Web und Datenbanken (3) I-2: Objektorientierte Datenbanksysteme (2) I-3: ?

Teil II (Heiko Schepperle) II-1: Data Warehousing & OLAP II-2: Data Mining II-3: Imperfektion in Datenbanken

4

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?

5

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

6

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

Webinformationssysteme

Erweiterung der Vorlesung „Webtechnologien im Überblick I“ von Wassili Kazakos (FZI, Karlsruhe)

Vorlesung „Informationssystemen: Neuere Konzepte“Teil „Web & Datenbanken“

Michael Klein

8

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)

9

Webshops, Auktionshaus, E-Commerce (1)

Beispiel:Amazon.deEbay.de

10

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

11

Suchmaschinen (1)

Beispiele:Google.deAltavista.com

12

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

13

Webanwendungen, Weboberflächen (1)

Beispiele:WebmailAdministrations-oberflächen

14

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

15

Web Portale, „inhaltsstarke“ Seiten (1)

Beispiele:Yahoo.deZeitungen/Zeit-schriften, Spiegel.de

16

Web Portale, „inhaltsstarke“ Seiten (2)

Eigenschaften: Komplexe, vielschichtige Seiten Viele Autoren, viele Informationsquellen Corporate Identity wichtig Formatvariationen für Ausgabegerät

17

Internetspiele (1)

Beispiel:BrettspielWel

t,WarCraft IIIBattle.net-

Server

18

Internetspiele (2)

Eigenschaften: Rechenintensive Anwendung Hoher graphischer Aufwand Spezielle Interaktionsbedürfnisse

Technischer Aufbau des Internets

20

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

21

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…

22

Schichten des Internets

Klient Server

Application

Transport

Physical

Network

Data Link

Application

Transport

Physical

Network

Data Link

IP

TCP

HTTP

23

Netzwerkschicht

Klient Server

Application

Transport

Network

Application

Transport

NetworkIP

TCP

HTTP

•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

Sender Empfänger

Paket

24

Transportschicht

Klient Server

Application

Transport

Network

Application

Transport

NetworkIP

TCP

HTTP

• 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• Weiteres Protokoll: UDP

25

Anwendungsschicht - HTTP

Klient Server

Application

Transport

Network

Application

Transport

NetworkIP

TCP

HTTP

• 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, …

26

Typisches Dokumentformat bei HTTP: HTML

Application ApplicationHTTP

HTML

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

27

Anwendungsschicht: weitere Protokolle

Klient Server

Application

Transport

Network

Application

Transport

NetworkIP

?

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

TCP

Zugriff auf Datenbanken über das Web

29

Zugriff auf Datenbanken über das Web

Browser HTTPServer

DB

Unterschiedlich je nach Protokoll auf Anwendungsebene.Extreme:

HTTP(HTML)

BrowserErwei-terung DB

Datenbankspezifisches Protokoll

1. Serverseitige Generierung, Thin Client:

2. Klientenseitige Verarbeitung, keine Logik im Server, Rich Client:

30

Weitere Zugriffsmöglichkeiten

Browser Applet DBRMI / RPC RMI

Server

Entfernte Methodenaufrufe

Anwendung

DB

HTTP(SOAP) SOAPServer

Web Services

DienstDienst

Dienst

Serverseitige AnsätzeDer „klassische“ Weg

32

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

33

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

Serverseitige Ansätze

1. Offline, Vorberechnung von HTML-Seiten

35

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

Datenbank

HTMLGenerierungs-werkzeug

HTML

HTML

HTTP

36

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

Serverseitige Ansätze

2. Durch Zugriff auf HTML-generierende Anwendungen

38

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

39

CGI-Skripte

client HTTP-Server

DatenbankCGI-Skript

Aufruf des Skriptesmit ParameternInitialisierung bei jedem Aufruf

Skript übermittelt HTML und beendetsich

Anfrage

Betätigung Submit-Button<FORM METHOD="POST" ACTION="http://www.fzi.de/cgi-bin/my-form">

Verbindungsaufbau

Aufbau der DB Verbindung bei jedem Aufruf

Skript generiert HTML

Antwort

HTTP Server Antwortet

SQL Anfrage

Skript stellt Anfrage an DB

Ergebnis

40

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

41

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)

42

API-basierte Ansätze

client HTTP-Server Datenbank

HTML-Generierung

Programm

Aufruf des Programms,ParameterübergabeInitialisierung bei erstenAufruf (einmalig)

Verbindungsaufbau

Verbindungsaufbau zur DB beim ersten Aufruf (einmalig)

Beliebig vieleSQL Anfragen

SQL Anfragen

Ergebnisse

Zustand

Anfrage

Betätigung Submit-Button<FORM METHOD="POST" ACTION="http://www.fzi.de/cgi-bin/my-form">

Antwort

HTML-Rückgabe

43

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

Serverseitige Ansätze

3. Durch Einbettung HTML-generierender Skriptteile in statisches HTML

46

Server-Side Skripting

In HTML-Seiten werden zusätzliche HTML-generierende Quellen integriert

Beliebig viele HTML-Quellen können aufgenommen werden

Datenbank

Scripting

HTML

Scripting

HTML

Anwendungs-Logik

47

Ausführungsvarianten

<HTML>

<xyz:...>

</HTML>

Anwendungerstellen

InterpreterInterpreter

HTML-Dokument

Laufzeit

<HTML>

<jsp:...>

</HTML>

Anwendungerstellen

CompilerCompilerÜbersetzungs-zeit(einmalig)

AusführbaresProgramm

HTML-Dokument

Laufzeit

interpretiert kompiliert

48

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

49

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

50

Übersicht Webinformationssysteme

WebDB-Techniken

ServerseitigeHTML-Generierung

Offline durchVorberechnung

von HTML-Seiten

Durch Zugriff auf HTML-

generierende Anwendung

Durch Einbettung HTML-

generierender Skriptteile

Generierung statischer Seiten

CGIAPI-basiert interpretiert kompiliert

SSIASPPHP

JSP

Client-seitige Ansätze

52

Zugriff auf Datenbanken über das Web

Browser HTTPServer

DB

Unterschiedlich je nach Protokoll auf Anwendungsebene.Extreme:

HTTP(HTML)

Browser Applet DBDatenbankspezifisches Protokoll

1. Serverseitige Generierung, Thin Client:

2. Klientenseitige Verarbeitung, keine Logik im Server, Rich Client:

53

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

54

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

55

Beispiel: Client-seitige Integration

Datenbank

Server-Prozess

Präsentation/Interaktion

Anwendungs-Logik

Daten

56

Übersicht Webinformationssysteme

WebDB-Techniken

ServerseitigeHTML-Generierung

Clientseitige GUI

Offline durchVorberechnung

von HTML-Seiten

Durch Zugriff auf HTML-

generierende Anwendung

Durch Einbettung HTML-

generierender Skriptteile

Generierung statischer Seiten

CGIAPI-basiert interpretiert kompiliert

SSIASPPHP

JSP

Java AppletJavaScriptPlugIns…

57

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

58

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 …

Anwendungen für Webdatenbanken

60

Webshops, Auktionshaus, E-Commerce (1)

Beispiel:Amazon.deEbay.de

61

Webshops, Auktionshaus, E-Commerce (2)

Techniken: Meist Relationale DBMS Klient: Normaler Browser, Cookies, wenig

JavaScript Serverseitig: CGI (C++?), (EJB)

62

Suchmaschinen (1)

Beispiele:Google.deAltavista.com

63

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

64

Webanwendungen, Weboberflächen (1)

Beispiele:WebmailAdministrations-oberflächen

65

Webanwendungen, Weboberflächen (2)

Technik: Meist rel. Datenbanken Serverseitige Skriptsprachen: Perl, Python, PHP, JSP Klientseitig: Standardbrowser

66

Web Portale, „inhaltsstarke“ Seiten (1)

Beispiele:Yahoo.deZeitungen/Zeit-schriften, Spiegel.de

67

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

CMSRohdaten

Layout-Templates

Anzeigbare Webseite

68

Internetspiele (1)

Beispiel:BrettspielWel

t,WarCraft IIIBattle.net-

Server

69

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

70

Literatur

Erhard Rahm, Gottfried VossenWeb und Datenbanken. Konzepte, Architekturen, Anwendungen. DPunkt Verlag 2002

Kazakos, Schmidt, TomczykDatenbanken und XML. Konzepte, Anwendungen, Systeme Springer Verlag 2002http://www.datenbanken-und-xml.de

Im Detail:Java Server Pages (JSP)

72

Übersicht Webinformationssysteme

WebDB-Techniken

ServerseitigeHTML-Generierung

Clientseitige GUI

Offline durchVorberechnung

von HTML-Seiten

Durch Zugriff auf HTML-

generierende Anwendung

Durch Einbettung HTML-

generierender Skriptteile

Generierung statischer Seiten

CGIAPI-basiert interpretiert kompiliert

SSIASPPHP

JSP

Java AppletJavaScriptPlugIns…

73

Server-Side Skripting

In HTML-Seiten werden zusätzliche HTML-generierende Quellen integriert

Datenbank

Scripting

HTML

Scripting

HTML

Anwendungs-Logik

74

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

75

JSP Ablauf

client

HTTP-Server

Datenbank

JSP-page

JSP-Servlet

Generierung des JSP Servlet aus JSP Page (HTML + Scripting)

Anfrage

Antwort

SQL Anfragen

Ergebnisse

Verbindungsaufbau

Zustand

76

JSP Elementtypen

JSP-Direktiven JSP-Skriptelemente JSP-Aktionen

77

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

JSP

Ele

men

ttyp

en

78

JSP-Skriptelemente (1)

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++;} %>

JSP

Ele

men

ttyp

en

79

JSP-Skriptelemente (2)

Ausdrücke Einfachste Art eines Skripts Syntax: <%= Ausdruck %> Umwandlung zur Laufzeit in String (toString-

Methode) Beispiel: <%= variable %> entspricht <%out.print(variable);%>

Kommentare Syntax: <%-- comment --%>

JSP

Ele

men

ttyp

en

80

JSP-Aktionen

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

JSP

Ele

men

ttyp

en

81

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

82

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>

...

83

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");%>...

84

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>

85

Parameterübergabe in JSP

requestEnthä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“)

86

JSP-Aktionen und EJB

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

JSP

Ele

men

ttyp

en

87

JSP-Aktionen und EJB

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

JSP

Ele

men

ttyp

en

88

JSP und Synchronisation

Grundsätzlich mehrere Instanzen einer JSP-Seite/eines Servlets möglich.

Abhilfe im Falle vonSynchronisations-problemen:<%@ page isThreadSafe="false" %>

89

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

90

JSP Bewertung

Sehr stark:

Mischung von Designcode (HTML) und Programmiersprachencode (JAVA)

Trennung in TemplateEngine, z.B. WebMacro

91

Tutorial

JGuru: JSP Short Tutorialhttp://java.sun.com/developer/onlineTraining/JSPIntro/contents.html

Sinnvoll für Praktische Übung

Danke für die Aufmerksamkeit!