Programmierübung NKI
Web & Datenbanken
Programmierprojekt
Java Server Pages
Michael Klein, 15.06.2005
Planung
Kleines JSP-Programmierprojekt in Gruppen
Ziel:
Webbasiertes Kartenvorbestellungssystem für ein Kino
Ablauf:
 Kurze Wiederholung JSP
 Aufgabenstellung, Ziel, Kleine Demo
 Herleitung des Datenbankschemas
 Einteilung in Gruppen
 Technische Voraussetzungen
 Selbstständiges Erstellen der Anwendung
 Evtl. kurze Präsentationen
Kurze Wiederholung JSP
JSP = Server-Side Skripting

In HTML-Seiten werden zusätzliche HTMLgenerierende Quellen integriert

Beliebig viele HTML-Quellen können aufgenommen
werden
HTML
HTML
Datenbank
Scripting
Scripting
AnwendungsLogik
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
JSP Ablauf
HTTPServer
Generierung des JSP Servlet
aus JSP Page
(HTML + Scripting)
JSPpage
client
Datenbank
Verbindungsaufbau
Anfrage
Antwort
JSPServlet
SQL Anfragen
Ergebnisse
Zustand
JSP Elementtypen
 JSP-Direktiven
 JSP-Skriptelemente
 (JSP-Aktionen)
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 import=„java.sql.*" %>

taglib-Direktive
 Zur Erzeugung benutzerspezifischer Tags
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++;} %>
JSP Elementtypen
JSP-Skriptelemente (2)
 Ausdrücke
 Einfachste Art eines Skripts
 Syntax: <%= Ausdruck %>
 Umwandlung zur Laufzeit in String
(toString-Methode)
 Beispiel: <%=Uhr.getZeit()%> entspricht
 <%out.print(Uhr.getZeit());%>
 Kommentare
 Syntax: <%-- comment --%>
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“)
Aufgabenstellung
Aufgabenstellung
ZIEL:
Kino „DB-Kino“ mit 4 Sälen will
Kartenreservierungen online anbieten.
 Programmdemo
Herleitung des
Datenbankschemas
Details zum Datenbestand
Details:
Filme mit Titel und Länge können im DB-Kino in
verschiedenen Sälen in verschiedenen
Vorstellungen laufen. Jeder Saal bietet ein
Tonsystem und besteht aus mehreren
Sitzplätzen, die im Saal durch Reihe und
Nummer eindeutig beschrieben sind. Sitze
gehören zur Kategorie „Loge“ oder „Parkett“.
Reservierungen beziehen sich auf einen Platz
für eine bestimmte Vorstellung.
Modellierung

UML-Modell

Relationales Schema
Einteilung in
Gruppen
Einteilung in Teams

Einteilung in 2er- oder 3er-Teams

Kino1 ... Kino16
Technische
Voraussetzungen
Architektur
Mein Laptop
10.3.41.26
Client
Jetty
Client
Web Server
Servlet Container
ODBCQuellen
Kino1
Kino2
Kino3
Client
Kino1
…
…
Cerberus
Client
FTP Server
Client
Kino16
Kino16
Zugriff auf die Server

FTP-Server
 Bearbeiten der Daten auf dem Server
 Zugriff im Windows Explorer mittels
ftp://10.3.41.26/KinoX


Zum Bearbeiten in lokales Verzeichnis kopieren
Web-Server
 JSP-Dateien im Verzeichnis werden ausgeführt und
ausgeliefert
 Zugriff über Web Browser unter
http://10.3.41.26:8080/demo/KinoX/datei.jsp

Erster Aufruf dauert wg. Kompilierung länger
Zugriff auf die Datenbank

Datenbank ist Access-Datei: KinoX.mdb

Liegt in FTP-Verzeichnis

Ist als ODBC-Quelle „KinoX“ eingetragen
(ohne Login/Passwort)

Zugriff aus JSP über JDBC per Treiber
„sun.jdbc.odbc.JdbcOdbcDriver“
Aufgabenstellung
Erstellung des Programms (1)
Aufgabe 1
Seite, die alle Vorstellungen des aktuellen
Tages als Liste anzeigt.
 Mit Startzeit, Filmtitel, Saal
 Sortiert nach Saal
 (*) Mit voraussichtlichem Ende
 (*) Mit Tonsystem
 (**) Mit Anzahl der freien Sitze in den
einzelnen Kategorien
Dann: Button, um für eine der Vorstellungen
Karten zu reservieren
Erstellung des Programms (2)
Aufgabe 2
Seite, die Saal der ausgewählten Vorstellung
zeigt.
 Info über Tonsystem, freie Sitze in den
einzelnen Kategorien
 Anzeige alle Sitze in richtiger
Reihenfolge. Freie Plätze sind grün,
belegte rot.
 (*) Loge-/Parkettplätze sind markiert
 (**) Vorschlag für besten Sitzplatz
markiert
Dann: Button für jeden freien Platz, mit
dem man diesen reservieren kann.
Erstellung des Programms (3)
Aufgabe 3
Buchen Sie die Reservierung und geben Sie
eine Bestätigungsseite auf dem Bildschirm aus.
 Fassen Sie die Daten nochmals
zusammen
 (*) Stellen Sie die Frage: „Wollen Sie
wirklich diesen Platz buchen?“
Optionale Zusatzaufgaben

(**) Erstellen Sie einen „Warenkorb“, in dem
ein Kunde Platzreservierungen sammeln und
gemeinsam (in einer Transaktion) buchen kann.

(**) Bieten Sie dem Kunden bei ausverkauften
Vorstellungen Alternativtermine an.

(**) Schreiben Sie eine Statistikseite, die z.B.
die Anzahl der belegten Plätze und weitere
interessante Informationen anzeigt. Außerdem
sollte man testen können, ob die Vorstellungen
überschneidungsfrei und kopiengerecht (=jeder
Film nur in einem Saal gleichzeitig) spielbar
sind.
Evtl.
Kurze Präsentation