Praktikum Datenbanken / DB2 Wochen 8-10: Fallstudie - Datenbank-Anwendung mit Apache 2 und PHP/Java

Größe: px
Ab Seite anzeigen:

Download "Praktikum Datenbanken / DB2 Wochen 8-10: Fallstudie - Datenbank-Anwendung mit Apache 2 und PHP/Java"

Transkript

1 Praktikum Datenbanken / DB2 Wochen 8-10: Fallstudie - Datenbank-Anwendung mit Apache 2 und PHP/Java Matthias Jordan 7.-Januar bis 31. Januar 2010 Präsenzaufgaben: Abnahme bis 12. Februar Datum Team (Account) Aktuelle Informationen, Ansprechpartner und Material unter: 1 Ziele In den letzten Wochen des Praktikums soll die Datenbank aus einer Programmiersprache heraus angesprochen werden. Mit Hilfe von HTML und PHP bzw. JSP wird eine einfache Benutzeroberfläche erstellt. Gegebenenfalls ist die Datenbank mit zusätzlichen Daten zu füllen, um alle Funktionalitäten der Anwendung sinnvoll zu testen. 1

2 Transaktionen Als neues Konzept sollen in dieser Woche zusätzlich Transaktionen betrachtet werden. Eine Transaktion ist eine Zusammenfassung von Datenbank- Operationen, im Extremfall von genau einer Operation. Transaktionen in Datenbanken sind charakterisiert durch die sogenannten ACID-Eigenschaften. Das bedeutet, eine Transaktion soll den vier folgenden Eigenschaften genügen: A tomicity (Atomarität), C onsistency (Konsistenz), I solation, und D urability (Dauerhaftigkeit) Eine Transaktion soll also entweder als Ganzes oder gar nicht wirksam werden; die korrekte Ausführung einer Transaktion überführt die Datenbank von einem konsistenten Zustand in einen anderen; jede Transaktion soll unbeeinflußt von anderen Transaktionen ablaufen; und die Änderungen einer wirksam gewordenen Transaktion dürfen nicht mehr verloren gehen. In SQL gibt es zur Unterstützung von Transaktionen verschiedene sprachliche Konstrukte. Im Allgemeinen haben wir DB2 bisher so benutzt, dass alle Anweisungen automatisch implizit als Transaktionen behandelt wirden. Dies wird durch die Option -c (auto commit) beim Aufruf des command line processors (CLPs) erreicht. Alle Änderungen eines jedes SQL-Statements werden sofort durchgeschrieben und wirksam. Ruft man den CLP mit +c auf, dann wird das auto commit deaktiviert. Nun gilt Folgendes: Jeder lesende oder schreibende Zugriff auf die Datenbank beginnt implizit eine neue Transaktion. Alle folgenden Lese- oder Schreibvorgänge gehören zu dieser Transaktion. Alle eventuellen Änderungen innerhalb dieser Transaktion gelten zunächst einmal nur vorläufig. Der Befehl commit schreibt die Änderungen in die Datenbank durch. Zu diesem Zeitpunkt erst müssen Integritätsbedingungen eingehalten werden. Zwischendurch kann also auch eine Integritätsbedingung verletzt werden. Commit macht die von den folgenden Befehlen getätigten Änderungen wirksam: ALTER, COMMENT ON, CREATE, DELETE, DROP, GRANT, INSERT, LOCK TABLE, REVOKE, SET INTEGRITY, SET transition variable und UPDATE. Solange diese Transaktion nicht durchgeschrieben wurde, nimmt der Befehl rollback alle Änderungen seit dem letzten commit als Ganzes zurück. Im Mehrbenutzerbetrieb auf einer Datenbank, etwa wenn gleichzeitig mehrere Benutzer über eine Webseite auf die Datenbank zugreifen und Daten ändern oder einfügen, kann es durch die Konkurrenz zweier Transaktionen zu Problemen 2

3 oder Anomalien kommen. Typisches Beispiel sind gleichzeitige Änderungen an einer Tabelle durch zwei unabhängige Benutzer: Phantomtupel: Innerhalb einer Transaktion erhält man auf die gleiche Anfrage bei der zweiten Ausführung zusätzliche Tupel. Nichtwiederholbarkeit: Das Lesen eines Tupels liefert innerhalb einer Transaktion unterschiedliche Ergebnisse. Schmutziges Lesen: Lesen eines noch nicht durchgeschriebenen Tupels. Verlorene Änderungen: Bei zwei gleichzeitigen Änderungen wird eine durch die andere überschrieben und geht verloren. Daher kann man in DB2-SQL zum einen den Isolationsgrad setzen, mit dem man arbeitet, indem man vor Aufnahme der Verbindung mit einer Datenbank den Befehl CHANGE ISOLATION benutzt. Es gibt vier Isolationsgrade, die unterschiedlich gegen die genannten Anomalien schützen: RR RS CS UR Phantomtupel nein ja ja ja Nichtwiederholb. nein nein ja ja Schmutziges Lesen nein nein nein ja Verlorenes Update nein nein nein nein Außerdem lassen sich explizit Tabellen oder eine gesamte Datenbank sperren, indem man den Befehl LOCK TABLE benutzt, bzw. die Verbindung mit der Datenbank unter Angabe des Sperrmodus herstellt. SHARE-Sperren sind der Standard und bedeuten, dass niemand anderes eine EXCLUSIVE-Sperre anfordern kann. Beispiele: LOCK TABLE land IN EXCLUSIVE MODE; CONNECT TO almanach IN SHARE MODE USER username; 2 Webanwendungen Im Folgenden stellen wir Euch zwei verschiedene Technologien zur Implementierung von Webanwendungen vor: PHP und JSP/Java. Für die Bearbeitung der Aufgaben dieses Blocks müsst Ihr Euch für eine dieser Auswahlmöglichkeiten entscheiden. Wenn Ihr Euch für PHP entscheidet, lest ab Abschnitt 3 weiter. Für JSP bzw. Java geht es mit Abschnitt 5 weiter. Wie auch immer Ihr Euch entscheidet: Zur Bearbeitung sind keine Datenbank-Bibliotheken zugelassen, die über das reine Verbindungs-Handling hinausgehen. 3 Apache-Webserver Für jeden Account des Praktikums steht ein eigener Apache2-Webserver zur Verfügung. Eine ausführliche Dokumentation hierzu findet sich auf der Website des Apache HTTP Server Project unter 3

4 Diese sollte allerdings nicht benötigt werden. Der Webserver ist bereits vorkonfiguriert und für die Benutzung von PHP5 (siehe unten) und den Zugriff auf DB2 vorbereitet. Unterhalb des Heimatverzeichnis Eures Accounts findet Ihr ein Verzeichnis httpd, welches die lokale Installation des Webservers enthält. Es enthält eine Reihe von Unterverzeichnissen, von denen hier nur die wichtigsten beschrieben sind: bin enthält die ausführbaren Dateien, mit denen der Webserver gestartet und gestoppt werden kann conf enthält die Konfigurationsdateien htdocs enthält die auszuliefernden HTML- und PHP-Seiten logs enthält die Logdateien mit Zugriffs- und Fehlerinformationen Bei den meisten der Dateien handelt es sich um reine Textdateien, die Ihr mit Hilfe von cat und less betrachten und mit einem normalen Texteditor editieren könnt. 3.1 Starten und Stoppen des Webservers Um den Webserver zu starten, wechselt in das Verzeichnis $HOME/httpd/bin und ruft dort den Befehl./apachectl start auf. Genauso lässt sich der Webserver mit dem Befehl./apachectl stop wieder beenden. Wir bitten Euch, den Webserver zum Ende der Praktikumssitzung wieder zu stoppen. 3.2 Zugriff Nach dem Starten des Webservers läuft dieser auf Eurem lokalen Arbeitsplatzrechner. Der Zugriff auf einzelne Seiten erfolgt über einen Webbrowser unter der URL Wie üblich solltet Ihr in der URL xx durch die Nummer Eurer Gruppe ersetzen. Um zu testen, ob der Zugriff funktioniert, ruft zunächst auf. Dies sollte Euch eine Übersicht über die installierten PHP-Erweiterungen und die Arbeitsumgebung geben. Sucht in dieser Übersicht nach dem Modul ibm_db Einstellen neuer Seiten Das Arbeitsverzeichnis des Webservers ist $HOME/httpd/htdocs. Innerhalb dieses Verzeichnisses könnt Ihr Unterverzeichnisse erstellen und Dateien ablegen, die dann über den Webserver zugreifbar sind. Nach dem Ablegen einer neuen Seite (PHP oder HTML) muss der Webserver nicht neugestartet werden. Sie ist sofort verfügbar. Werden Änderungen an Seiten nicht sofort sichtbar, muss ggf. der Cache des Browsers geleert oder eine aktuelle Version mit Ctrl-r oder Ctrl-F5 angefordert werden. 4

5 4 Datenbankzugriff über PHP Eine der zur Wahl stehenden Wirtssprachen, mit deren Hilfe die zu erstellende Anwendung auf die Datenbank zugreifen soll, ist PHP5. PHP ist eine weit verbreitete und recht leicht erlernbare Skriptsprache, die direkt in HTML-Seiten eingebettet werden kann. Sie ist bei der Webentwicklung weitverbreitet und kommt oft gemeinsam mit dem Apache-Webserver und MySQL-Datenbanken zum Einsatz. Neben MySQL bietet PHP jedoch auch Anbindungen an andere Datenbanksysteme wie DB Programmieren mit PHP Eine komplette Einführung in PHP kann das Datenbank-Praktikum nicht leisten; wir verweisen hier auf die existierende Literatur, z.b. auf Die hier benutzten Befehle des ibm_db2-moduls sind in der Online- Dokumentation zu DB2 beschrieben. ftp://ftp.software.ibm.com/ps/products/db2/info/vr9/pdf/letter/en_ US/db2ape90.pdf Jede Datei mit PHP-Anweisungen sollte auf.php enden, um vom Webserver als solche erkannt zu werden. Alle PHP-Anweisungen, die interpretiert werden sollen, müssen sich innerhalb eines Anweisungsblocks befinden, der mit <?php und?> begrenzt wird. Dieser Anweisungsblock kann sich vom Beginn bis zum Ende einer Datei ziehen, oder es können mehrere kleinere Anweisungsblöcke innerhalb einer HTML-Seite untergebracht werden. Ein ganz simples PHP-Skript könnte zum Beispiel wie folgt aussehen: 1 <?php echo " H e l l o World! "?> Listing 1: hello.php 4.2 Datenbankverbindung Es gibt mehrere Möglichkeiten, eine Datenbankverbindung aus PHP zu einer DB2-Datenbank herzustellen. Im Praktikum soll die einfachste Methode benutzt werden, die voraussetzt, dass die Datenbank bereits lokal (auf dem Rechner, auf dem der Webserver läuft) katalogisiert wurde und ein DB2-Client vorhanden ist. Gibt es einen solchen Katalogeintrag, z.b. Database alias Database name Node name = MONDCAT = MONDIAL = SALZ S. 7 5

6 so kann eine Verbindung mit dem Befehl db2_connect erstellt werden. Da der Apache unter Eurem Benutzeraccount läuft und damit für den Zugriff auf Euren lokalen Katalogeintrag authentifiziert ist, sind für Benutzername und Passwort leere Strings anzugeben. S. 42 Listing 2: connect.php 1 <?php 2 // Database a l i a s, username and password have to be s u p p l i e d, 3 // but can be empty 4 $conn = db2_connect ( Database a l i a s, Username, Password ) ; 5 6 i f ( $conn ) { 7 // connection s u c c e s s f u l 8 db2_close ( $conn ) ; 9 } else { 10 echo "<b>connection f a i l e d :</b><br>" ; 11 // show l a s t e r r o r message 12 echo db2_conn_errormsg ( ) ; 13 } 14?> Wenn die Verbindung nicht mehr benötigt wird, sollte sie immer mit db2_close() geschlossen werden. Dies entspricht dem Kommandozeilen-Befehl terminate. S Anfragen an die Datenbank Für eine Anfrage (oder allgemeiner: ein SQL-Statement) an die Datenbank benötigt man zunächst eine existierende Datenbankverbindung. Zu dieser Verbindung lässt sich dann mit dem Befehl db2_prepare eine Anfrage vorbereiten und mit dem Befehl db2_execute ausführen. Alternativ lassen sich feste Anfragen oder Statements auch direkt mit db2_exec ausführen. Ein sogenanntes Prepared Statement erlaubt das Freilassen einiger Parameter, die dann z.b. durch Benutzereingaben ersetzt werden können. Der Vorteil gegenüber dem Zusammensetzen einer dynamischen Datenbank-Anfrage durch String-Konkatenation besteht darin, dass Typüberprüfung stattfindet und nicht arbiträre Benutzereingaben für SQL-Injektionen genutzt werden können. Zunächst ein Beispiel für eine einfache, statische SQL-Anfrage: S. 55 S. 52 S. 50 Listing 3: static_query.php 1 <?php 2 $conn = db2_connect ( Database a l i a s, Username, Password ) ; 3 i f ( $conn ) { 4 $ r e s u l t = db2_exec ( $conn, 5 "SELECT DISTINCT name FROM dbprak. country " ) ; 6 i f (! $ r e s u l t ) { 7 echo "<b>execute f a i l e d :</b><br>" ; 8 echo db2_stmt_errormsg ( $stmt ). "<br>" ; 9 } 10 db2_close ( $conn ) ; 11 } 12?> 6

7 Und ein Beispiel für ein dynamisches Prepared Statement, welches drei freie Parameter hat (der Platzhalten für einen freien Parameter ist das?): Listing 4: dynamic_statement.php 1 <?php 2 // prepare t h e parameter v a l u e s 3 $ c a t e g o r i e s = array ( array ( 1 0 0, f i c t i o n, 0 ), 4 array ( 1 1 0, f a n t a s y, ), 5 array ( 1 1 6, urban f a n t a s y, ) ) ; 6 7 $conn = db2_connect ( Database a l i a s, Username, Password ) ; 8 i f ( $conn ) { 9 $ i n s e r t = INSERT INTO c a t e g o r y ( cat_id, cat_name, top_cat ). 10 VALUES (?,?,? ) ; 11 $stmt = db2_prepare ( $conn, $ i n s e r t ) ; 12 i f ( $stmt ) { 13 // l o o p over elements o f array $ c a t e g o r i e s 14 foreach ( $ c a t e g o r i e s as $ c a t e g o r y ) { 15 // e x e c u t e prepared statement f o r each element and 16 // r e p l a c e? with v a l u e s 17 $ r e s u l t = db2_execute ( $stmt, $ c a t e g o r y ) ; 18 } 19 } 20 db2_close ( $conn ) ; 21 } 22?> 4.4 Cursor Wie in der Vorlesung behandelt, erhält man als Ergebnis einer Datenbankanfrage aus einer Wirtsprache, einen sogenannten Cursor, über den man per Iteration Zugriff auf die einzelnen Elemente der Ergebnismenge erhält. In PHP iteriert man mit dem Befehl db2_fetch_row(). Der erste Aufruf des Befehls setzt den Cursor auf das erste Element des Ergebnis, jeder weitere Aufruf setzt den Cursor ein Element weiter. Kommt der Cursor an das Ende der Ergebnismenge, so liefert er als Ergebnis false, sonst true. Wenn der Cursor auf ein Ergebnistupel zeigt, kann dieses mit dem Befehl db2_result() ausgelesen werden. Dabei wird neben dem Statement auch die Spalte angegeben (beginnend mit 0), die gelesen werden soll: S. 64 S. 67 Listing 5: read_data.php 1 <?php 2 $conn = db2_connect ( Database a l i a s, Username, Password ) ; 3 i f ( $conn ) { 4 $stmt = db2_exec ( $conn, 5 "SELECT t i t l e, year FROM dbprak. work" ) ; 6 i f ( $stmt ) { 7 while ( db2_fetch_row ( $stmt ) ) { 8 $ t i t l e = db2_result ( $stmt, 0 ) ; 9 $year = db2_result ( $stmt, 1 ) ; 10 echo " $ t i t l e ( $year)<br>" ; 11 } 12 } 13 db2_close ( $conn ) ; 7

8 14 } 15?> Es ist möglich beim Stellen einer Anfrage einen sogenannten scrollenden Cursor anzufordern. Dieser erlaubt nicht nur einfaches Iterieren, sondern direktes Ansteuern eines bestimmten Ergebnistupels (beginnend mit 1). Der für scrollende Cursor nötige Overhead verlangsamt jedoch im Allgemeinen die Anwendung, daher sollten sie nur wenn notwendig benutzt werden. Listing 6: scrollable_cursor.php 1 <?php 2 $conn = db2_connect ( Database a l i a s, Username, Password ) ; 3 i f ( $conn ) { 4 // statement r e q u e s t s a s c r o l l a b l e cursor f o r r e s u l t 5 $stmt = db2_prepare ( $conn, 6 "SELECT t i t l e, year FROM dbprak. work", 7 array ( c u r s o r => DB2_SCROLLABLE) ) ; 8 $ r e s u l t = db2_execute ( $conn, $stmt ) ; 9 i f ( $ r e s u l t ) { 10 // check number o f rows returned 11 i f ( db2_num_rows( $stmt ) > 10) { 12 db2_fetch_row ( $stmt, 1 0 ) ; 13 echo " T i t l e f o r 10 th book : ". 14 db2_result ( $stmt, 0 ) ; 15 } 16 } 17 db2_close ( $conn ) ; 18 }?> Während mit der Kombination db2_fetch_row() und db2_result() der direkte Zugriff auf einzelne Spalten eines Ergebnistupels möglich ist, bietet es sich im Allgemeinen an, ein komplettes Ergebnistupel als Array einzulesen und im Programm mit diesem weiterzuarbeiten. Der Befehl db2_fetch_array() setzt den Cursor auf das erste bzw. nächste Ergebnistupel und liefert dieses als Array zurück, wie im folgenden Beispiel zu sehen: S. 58 Listing 7: fetch_array.php 1 <?php 2 $conn = db2_connect ( Database a l i a s, Username, Password ) ; 3 i f ( $conn ) { 4 $ s q l = "SELECT t i t l e, isbn, format ". 5 "FROM book ORDER BY t i t l e " ; 6 $ r e s u l t = db2_exec ( $stmt, $sql, 7 array ( c u r s o r => DB2_SCROLLABLE) ) ; 8 $ i = 1 ; 9 while ( $row = db2_fetch_array ( $ r e s u l t, $ i ) ) { 10 echo $row [ 0 ]. " ( ". $row [ 1 ]. " ) ". $row [ 2 ]. "<br>\n" ; 11 $ i ++; 12 } 13 db2_close ( $conn ) ; 14 } 15?> 8

9 4.5 Transaktionen PHP-Anwendungen verbinden sich standardmäßig im AUTOCOMMIT-Modus mit der Datenbank, d.h. alle Anweisungen gelten als einzelne Transaktion und werden direkt festgeschrieben. Das ist manchmal nicht sinnvoll, z.b. wenn nur durch eine Reihe von Anweisungen die Datenbank in einen gültigen Zustand überführt werden kann (etwa beim Einfügen einer neuen Ware, für das zunächst ein neues Zutat-Objekt eingefügt werden muss). Durch den Befehl db2_autocommit() lässt sich der Modus für eine Verbindung setzen und abfragen: db2_autocommit($conn) liefert den Status der Verbindung $conn db2_autocommit($conn, DB2_AUTOCOMMIT_ON) - schaltet automatisches COMMIT ein db2_autocommit($conn, DB2_AUTOCOMMIT_OFF) - schaltet automatisches COMMIT aus Solange der AUTOCOMMIT-Modus abgeschaltet ist, müssen Transaktionen durch die Anwendung ausdrücklich abgeschlossen und durchgeschrieben werden. Dies erledigt der Befehl db2_commit($conn), entsprechend macht der Befehl db2_rollback($conn) alle Änderungen seit dem letzten COMMIT rückgängig. 5 Webanwendungen in Java mit JSPs S. 37 S. 38 S Idee und Hintergrund Eine Webanwendung (Webapp) ist ein Programm, das serverseitig läuft und mit dem Benutzer über HTTP kommuniziert. Häufig wird die Kommunikation benutzerseitig über einen Webbrowser durchgeführt, der Anfragen an die Webapp sendet, indem er bestimmte URLs aufruft, und die Antworten der Webapp als HTML-Seiten anzeigt. Wenn man in Java implementieren will, schreibt man i.d.r. Code, der am Ende in einem Servlet-Container, wie z.b. Apache Tomcat, läuft. Dazu erweitert man eine Klasse HttpServlet und berechnet die Antwort, die dem Benutzer übermittelt wird, als Aneinanderreihung von Strings: Listing 8: beispiel.java 1 S t r i n g B u f f e r out = new S t r i n g B u f f e r ( ) ; 2 out. append ( "<html>" ) ; 3 out. append ( "<head>" ). append ( "<t i t l e >T i t e l </ t i t l e >" ). append ( "</head>" ) ; 4 out. append ( "<body>" ) ; 5 out. append ( "<h1>ü b e r s c h r i f t </h1>" ) ; 6 S t r i n g r e s u l t = c a l c u l a t e ( ) ; 7 out. append ( "<p>ergebnis : " ). append ( r e s u l t ). append ( "</p>" ) ; 8 out. append ( "</body>" ) ; 9 out. append ( "</html>" ) ; Diese Methode hat mehrere Nachteile. Einer ist, dass das HTML in kleinen Fragmenten zwischen sehr viel Java-Code zerstreut und damit der Zusammenhang 9

10 der einzelnen HTML-Teile verloren geht. Ein anderer Nachteil ist, dass die Arbeitsteilung zwischen Java-Entwickler und Designer oder Frontend-Entwickler (der oft allein für den HTML-Code zuständig ist) schlecht unterstützt ist: Wenn der Frontend-Entwickler sein HTML abgegeben hat, muss der Java-Entwickler die Seite mühevoll zerschneiden, um sie in den Java-Code zu integrieren. Wenn danach eine Änderung am HTML durchgeführt werden muss (der Kunde möchte z.b. eine andere Farbe), ist es teilweise sehr schwierig, die Änderung im Java- HTML-Mix nachzuvollziehen und der Code muss evtl. komplett neu geschrieben werden. Um diese Nachteile (und die relativ aufwändige Definition von Servlets über XML-Dateien) zu relativieren, wurden Java Server Pages (JSP) entwickelt. Die Grundidee ist, Java-Code in HTML-Code einzubetten. Obiges Beispiel sieht in JSP aus wie folgt: 1 <html> 2 <head><t i t l e>t i t e l</ t i t l e></head> 3 <body> 4 <h1>ü b e r s c h r i f t</h1> 5 <p>ergebnis :<%=c a l c u l a t e ()%></p> 6 </body> 7 </html> Listing 9: beispiel.jsp Eine solche JSP-Datei wird direkt im Servlet-Container hinterlegt und bei Aufruf durch einen Benutzer automatisch in Java-Code umgewandelt, übersetzt und als Servlet verwendet, ohne dass der Benutzer oder der Entwickler davon etwas merkt. 5.2 Kleines Tutorial Installation von Apache Tomcat Apache Tomcat ist ein sehr verbreiteter Servlet-Container, der auch in Anwendungsservern (z.b. JBoss) Verwendung findet. Er ist verfügbar unter Ladet auf dieser Seite unter Binary Distributions das Core tar.gz herunter und speichert es auf dem Desktop. Wechselt dann in die Shell und gebt ein (der Dateiname ist ggf. anzupassen): $ tar -xzvf apache-tomcat tar.gz Ihr habt nun ein neues Verzeichnis auf dem Desktop liegen. Benennt es in etwas kürzeres um (hier: tomcat): $ mv apache-tomcat tomcat Im neuen Stamm-Verzeichnis des Tomcat (im weiteren Verlauf des Texts Tomcat-Verzeichnis genannt) gibt es u.a. folgende Unterverzeichnisse: conf Konfigurations-Dateien 10

11 lib Global verfügbare Bibliotheken. Wenn hier eine JAR-Datei abgelegt wird, ist sie in allen Webapps in diesem Tomcat verfügbar. bin Skripte zum Starten und Stoppen des Tomcat logs Log-Dateien, die beim Debuggen helfen können webapps Unterverzeichnisse für einzelne Webapps Eure erste Amtshandlung wird sein, den Tomcat so zu konfigurieren, dass Ihr nicht mit den Tomcats anderer Gruppen kollidiert. Der Tomcat belegt standardmäßig drei Ports. Wenn zwei Tomcats gleichzeitig auf demselben Rechner laufen sollen, müssen sie unterschiedliche Portnummern benutzen. Eine Konvention, damit Ihr Euch nicht gegenseitig in die Quere kommt, ist folgende. Die interessanten Standardports von Tomcat sind 8005 und Wir betrachten nur die letzten beiden Ziffern (05 und 80). Die Portnummer, die Ihr für Euren Gruppen-Tomcat verwendet, ist dann (100 Gruppennummer) + Ziffern. Also für Gruppe 42 wird aus Port 8005 dann und aus Port 8080 wird Die Portnummern werden im conf-verzeichnis in der Datei server.xml eingestellt. Der erste zu ändernde Eintrag ist die 8005 in der Zeile Listing 10: server.xml 22 <S e r v e r port=" 8005 " shutdown="shutdown"> Danach sucht Ihr nach folgendem Eintrag. Hier sind zwei Portnummern angegeben: 8080 und Die 8443 ist für Euch nicht relevant und kann so bleiben. Die 8080 ersetzt Ihr dann bitte durch Eure Gruppen-Portnummer (z.b. also für Gruppe 42): Listing 11: server.xml 67 <Connector port=" 8080 " p r o t o c o l="http/ 1. 1 " 68 connectiontimeout=" " 69 r e d i r e c t P o r t=" 8443 " /> Zu guter Letzt entfernt Ihr folgenden, nicht benötigten, Eintrag: Listing 12: server.xml 88 <Connector port=" 8009 " p r o t o c o l="ajp/ 1. 3 " r e d i r e c t P o r t=" 8443 " /> Aus Gründen der Einfachheit werden wir im weiteren Verlauf des Texts so tun, als würdet Ihr mit der Original-Portnummer des Tomcat (8080) arbeiten. Damit ist Euer Tomcat konfiguriert und Ihr könnt Euch angenehmeren Dingen zuwenden: Webapps. Wechselt nun in das Unterverzeichnis webapps und legt dort ein neues Unterverzeichnis zum Herumprobieren an, Z.B. mit dem Namen testapp. Wechselt dann in dieses Verzeichnis und legt eine Datei test.jsp mit folgendem Inhalt an: 11

12 1 <%=" Hallo, Welt. "%> Listing 13: beispiel.jsp Diese Datei ist bereits eine (sehr kleine) Webapp. Sie erzeugt eine Ausgabe, die aus dem String Hallo, Welt. besteht. Nun wechselt ins Tomcat-Verzeichnis und dort ins Unterverzeichnis bin. Dort gibt es ein Skript startup.sh, das Ihr bitte aufruft. Die Ausgabe sollte in etwa so aussehen: Using CATALINA_BASE: /home/dbprak42/desktop/tomcat Using CATALINA_HOME: /home/dbprak42/desktop/tomcat Using CATALINA_TMPDIR: /home/dbprak42/desktop/tomcat/temp Using JRE_HOME: /usr Damit ist der Tomcat gestartet und Ihr könnt Eure Webapp abfragen. Gebt dazu in Eurem Webbrowser folgende Adresse ein: testapp/test.jsp. Dort sollte nun die Ausgabe Hallo, Welt. angezeigt werden. Dieser kleine Test schließt die Installation für Euch ab. Wenn Ihr Euch die URL genau anguckt, werdet Ihr sehen, dass der Name des Verzeichnisses, das Ihr unter webapps angelegt habt, nun in der URL direkt hinter der Port-Nummer auftaucht (hier: testapp). Der Name der JSP-Datei ist der letzte Bestandteil der URL. Ihr könnt Euere Webapp nun auch von einem anderen Rechner aus erreichen, indem Ihr localhost durch den Rechnernamen ersetzt. Z.B Webapps schreiben Beim ersten Aufruf einer JSP-Seite wird aus dem Inhalt der.jsp-datei in einem ersten Schritt (automatisch) ein Servlet erzeugt. Das ist eine Java-Klasse, die eine Oberklasse um die entsprechende Logik erweitert. Die Logik wird in eine Methode doget() eingefügt. Dazu gehört auch das Zusammensetzen der Ausgabe. Aus obigem Test-JSP ergibt sich vereinfacht folgende Servlet-Klasse: Listing 14: beispiel.java 1 package j s p _ s e r v l e t ; 2 import java. u t i l. ; 3 /... / 4 5 / 1 / 6 class _myservlet 7 implements javax. s e r v l e t. S e r v l e t, javax. s e r v l e t. j s p. HttpJspPage { 8 / 2 / 9 public void _ j s p S e r v i c e ( 10 javax. s e r v l e t. http. HttpServletRequest r equest, 11 javax. s e r v l e t. http. HttpServletResponse r e s p o n s e ) 12 throws javax. s e r v l e t. S e r v l e t E x c e p t i o n, java. i o. IOException 13 { 12

13 14 javax. s e r v l e t. j s p. JspWriter out = pagecontext. getout ( ) ; 15 HttpSession s e s s i o n = r e q u e s t. g e t S e s s i o n ( true ) ; 16 try { 17 / 3 / 18 out. p r i n t ( " Hallo, Welt. " ) ; 19 } catch ( Exception _exception ) { 20 /... / 21 } 22 } 23 } Mithilfe verschiedener JSP-Tags kann man Code an unterschiedliche Stellen dieser Servlet-Klasse stellen. Der JSP-Standard kennt ein paar Tags, die besondere Funktionen ausführen. %> Tags dieser Sorte erzeugen Code, der an der Stelle /* 1 */ im Beispiel-Code eingefügt wird. Allerdings ist die Syntax festgelegt. Ein Beispiel für den Import von Packages ist page import="java.sql.*,com.*" %>. <%!... %> Der Inhalt dieser Tags wird in den Klassen-Body eingefügt, gleichberechtigt mit z.b. Objektvariablen an der Stelle /* 2 */. Hier kann man z.b. Methoden definieren. <%... %> Der Inhalt dieser Tags wird in die Methode eingefügt, die eine HTTP-Abfrage bearbeitet an der Stelle /* 3 */, aber ohne out.print(). Der Inhalt sind Java-Statements, die durch Semikolon ( ; ) beendet werden müssen. Beispiel: <% int i = 1;%>. <%=... %> Der Inhalt dieser Tags wird an der entsprechenden Stelle in den Ausgabestrom geschrieben bei Objekten über den impliziten Aufruf der tostring()-methode. Im Beispiel ist das bei out.print("hallo, Welt.");. Da hier nur ein Ausdruck stehen darf, endet der Inhalt dieser Tags nicht mit Semikolon. Beispiel: <%=i%>. <% %> Dieses Tag umschließt einen Kommentar, der nicht in die (HTML-)Ausgabe geschrieben wird. 5.4 Verbindung mit der DB2 Beispiel-Code für das Aufbauen einer Verbindung zur lokalen DB2 mit Abfrage von Daten ist im folgenden Listing angegeben. Damit Java den DB2-Treiber findet, muss db2jcc.jar im Webapp-Verzeichnis unter WEB-INF/lib vorhanden sein. Die Datei findet Ihr im Verzeichnis /sqllib/java/. In dem untigen Code bauen wir eine Datenbankverbindung zur Datenbank geo auf und lesen aus der Datenbank die Hauptstadt von Deutschland aus. Listing 15: connection.java 1 page import=" java. s q l. " %> 2 <%! 3 private S t r i n g g e t C a p i t a l ( S t r i n g country ) { 4 S t r i n g out="" ; 5 try { 6 C l a s s. forname ( "com. ibm. db2. j c c. DB2Driver" ) ; 13

14 7 Connection c o n n e c t i o n = 8 DriverManager. getconnection ( " jdbc : db2 : geo " ) ; 9 10 S t r i n g s t S t r = "SELECT c a p i t a l " + 11 "FROM dbmaster. country WHERE name=?" ; 12 PreparedStatement stmt = c o n n e c t i o n. preparestatement ( s t S t r ) ; 13 stmt. s e t S t r i n g ( 1, country ) ; 14 R e s u l t S e t r s = stmt. executequery ( ) ; S t r i n g B u f f e r outb = new S t r i n g B u f f e r ( ) ; 17 while ( r s. next ( ) ) { 18 S t r i n g name = r s. g e t S t r i n g ( " c a p i t a l " ) ; 19 outb. append ( name ). append ( "<br/>" ) ; 20 } 21 out = outb. t o S t r i n g ( ) ; } catch ( Exception e ) { 24 e. p r i n t S t a c k T r a c e ( ) ; 25 return "#f a i l " ; 26 } 27 return out ; 28 } 29 %> 30 <h1>hauptstadt </h1> 31 <%= g e t C a p i t a l ( "Germany" ) %> Achtet bitte darauf, dass bei den PreparedStatements keine Anführungszeichen um die Platzhalter gehören. Also nicht WHERE name=?, sondern WHERE name=?. SQL-Statements mittels String-Operationen zusammenzubauen ist keine gute Idee. 6 HTML-Formulare Um Benutzereingaben aufzunehmen und an ein PHP-Skript zu übergeben, können HTML-Formularelemente zum Einsatz kommen. Beim Abschicken des Formulars wird dann das PHP-Skript aufgerufen und der Inhalt der Formularelemente per POST oder GET übergeben. Mehr zu HTML und HTML-Formularen findet man z.b. unter oder Das folgende Beispiel für ein HTML-Formular, das ein PHP-Skript aufruft, zeigt verschiedene Formularelemente, die genutzt werden können: Listing 16: form.html 1 <form enctype=" m u l t i p a r t /form data " action=" t e s t. php" method=" post "> 2 <table> 3 <tr><td colspan="2">b e i s p i e l</td></ tr> 4 <tr> 5 <td><b>matrikelnummer :</b></td> 6 <td><input type=" t e x t " name=" m a t r i k e l " size="60"/></td> 7 </ tr> 8 <tr> 9 <td><b>aufgabe 1 :</b></td> 14

15 10 <td><textarea name=" aufgabe_1 " rows=" 15" cols=" 60"></ textarea> 11 <input type=" r e s e t "/> 12 </td> 13 </ tr> 14 </ table> 15 <input type=" hidden " name=" woche" value=" 1"/> 16 <input type=" submit " value=" a b s c h i c k e n "/> 17 </form> input vom Typ text erlaubt die Eingabe eines kurzen Textes input vom Typ hidden übergibt zusätzliche Werte, ohne dass diese dem Benutzer angezeigt werden input vom Typ reset setzt ein Formular zurück input vom Typ submit schickt das Formular ab textarea erlaubt die Eingabe längerer, mehrzeiliger Texte Jede Eingabe, die durch das PHP-Skript ausgelesen werden soll, benötigt einen Namen, wobei nur solche Zeichen erlaubt sind, die in PHP für Variablennamen gültig sind. Im HTML-Element form wird das aufzurufende Skript und die Methode (POST oder GET) angegeben. 6.1 Auslesen von POST/GET-Parametern in PHP Wenn ein PHP-Skript aus einem Formular oder durch direkte Angabe der URL aufgerufen wird, so stehen die übergebenen Parameter und ihre Werte in einem assoziativen Array. Dieser heisst entweder $_POST (bei Aufruf über POST) oder $_GET (bei Aufruf über GET). 1 // Post Parameter a u s l e s e n 2 $woche = $_POST[ woche ] ; 3 $account = $_POST[ account ] ; 4 $ m a t r i k e l = $_POST[ m a t r i k e l ] ; Listing 17: postparams.php 1 // Get Parameter a u s l e s e n 2 $woche = $_GET[ woche ] ; 3 $account = $_GET[ account ] ; 4 $ m a t r i k e l = $_GET[ m a t r i k e l ] ; Listing 18: getparams.php 6.2 Auslesen von POST/GET-Parametern in Java und JSP In Java-Servlets (und damit auch in JSP-Seiten) sind einige Objekte implizit vordefiniert, die Zugriff auf relevante Daten liefern. Die genaue Beschreibung der folgenden Objekte findet Ihr in der JavaEE-API-Dokumentation. 15

16 6.2.1 request Im request-objekt der Klasse HttpServletRequest gibt es ein paar interessante Methoden für Zugriffe auf Daten, die in direkter Verbindung mit dem aktuellen Request stehen das ist im Grunde alles, was der Webbrowser beim letzten Klick auf einen Link o.ä. übertragen hat. Insbesondere die Parameter können mit der Methode getparameter(string name) ausgelesen werden: Listing 19: parameter.jsp 1 <% 2 S t r i n g country = r e q u e s t. getparameter ( " country " ) ; 3 i f ( country == null ) { 4 out. p r i n t l n ( "" ) ; 5 } 6 else { 7 out. p r i n t l n ( " Country : "+country+"<br/>" ) ; 8 } 9 %> Weiterhin gibt es Methoden, um auf Bestandteile der Query zuzugreifen, Cookies auszulesen, etc session HTTP ist ein Zustandsloses Protokoll: ein Client sendet eine Anfrage, der Server sendet eine Antwort und damit endet der gesamte Kontext. Die nächste Anfrage hat für den Server auf HTTP-Ebene keine Verbindung zur vorhergehenden. Wenn man das möchte, z.b. weil ein Benutzer sich nur ein mal einloggen soll und bei jedem nachfolgenden Seitenaufruf dennoch richtig erkannt werden soll (incl. Warenkorb, etc.), muss man mit Sessions arbeiten. Das Session- Handling funktioniert mit Java-Servlets automatisch. Zur Unterstützung gibt es das session-objekt vom Typ HttpSession. Prominenteste Methode dieser Klasse ist getid(), die die ID der Session als String liefert. Die Session-ID identifiziert eine laufende Session eindeutig. 7 Ein ausführliches Beispiel Schließlich sei hier noch ein ausführlicheres Beispiel gegeben, das erlaubt, in einer Datenbank BIBSAMPL Werke und ihre Autoren zu betrachten. Es besteht aus insgesamt vier Dateien. Dabei enthält connection.inc nur die Verbindungsdaten, so dass diese ggf. nur einer Datei geändert werden müssen. Listing 20: connection.inc 1 <?php 2 $ d a t a b a s e _ a l i a s =.. ; 3 $username = ; 4 $password = ; 5 6 $conn = db2_connect ( $database_ alias, $username, $password ) ; 7?> 16

17 Listing 21: browse.php 1 <html><body> 2 <?php 3 include c o n n e c t i o n. i n c ; 4 5 i f ( $conn ) { 6 $stmt = db2_prepare ( $conn, 7 "SELECT DISTINCT l e f t (name, 1 ) FROM dbprak. author " ) ; 8 $ r e s u l t = db2_execute ( $stmt ) ; 9 i f (! $ r e s u l t ) { 10 echo "<b>execute f a i l e d :</b><br>" ; 11 echo db2_stmt_errormsg ( $stmt ). "<br>" ; 12 } 13 echo "<h3>browse works by author </h3><p>" ; 14 while ( db2_fetch_row ( $stmt ) ) { 15 $name = db2_result ( $stmt, 0 ) ; 16 i f ( $name <> ) { 17 echo "[<a h r e f = show_authors. php? author=$name >$name</a>] " ; 18 } 19 } 20 echo "</p>" ; 21 $stmt = db2_prepare ( $conn, 22 "SELECT DISTINCT l e f t ( t i t l e, 1 ) FROM dbprak. work" ) ; 23 $ r e s u l t = db2_execute ( $stmt ) ; 24 i f (! $ r e s u l t ) { 25 echo "<b>execute f a i l e d :</b><br>" ; 26 echo db2_stmt_errormsg ( $stmt ). "<br>" ; 27 } 28 echo "<h3>browse works by work t i t l e </h3><p>" ; 29 while ( db2_fetch_row ( $stmt ) ) { 30 $name = db2_result ( $stmt, 0 ) ; 31 i f ( $name <> ) { 32 echo "[<a h r e f = show_works. php? work=$name >$name</a>] " ; 33 } 34 } 35 echo "</p>" ; 36 db2_close ( $conn ) ; 37 } else { 38 echo "<b>connection f a i l e d :<b><br>" ; 39 echo db2_conn_errormsg ( ) ; 40 } 41?> 42 </body></html> Listing 22: show_works.php 1 <html> 2 <body> 3 <? 4 include c o n n e c t i o n. i n c ; 5 6 $author = $_GET[ author ] ; 7 $author = db2_escape_string ( $author ) ; 8 $work = $_GET[ work ] ; 9 $work = db2_escape_string ( $work ) ; i f ( $conn ) { 12 i f ( $work!= ) { 13 $stmt = db2_prepare ( $conn, 14 "SELECT o. t i t l e, o. year FROM dbprak. author a ". 15 "JOIN dbprak. wrote w ON a. i d=w. author_id ". 16 "JOIN dbprak. work o ON o. i d=w. work_id ". 17

18 17 "WHERE t i t l e l i k e ". $work. "% ORDER BY o. t i t l e " ) ; 18 } else { 19 $stmt = db2_prepare ( $conn, 20 "SELECT o. t i t l e, o. year FROM dbprak. author a ". 21 "JOIN dbprak. wrote w ON a. i d=w. author_id ". 22 "JOIN dbprak. work o ON o. i d=w. work_id ". 23 "WHERE name =? ORDER BY o. t i t l e " ) ; 24 } 25 $ r e s u l t = db2_execute ( $stmt, array ( $author ) ) ; 26 i f (! $ r e s u l t ) { 27 echo "<b>execute f a i l e d :</b><br>" ; 28 echo db2_stmt_errormsg ( $stmt ). "<br>" ; 29 } i f ( $author!= ) { 32 echo "<h3>works by ". $author. " </h3>" ; 33 } else { 34 echo "<h3>works s t a r t i n g with ". $work. " </h3>" ; 35 } 36 echo "<ul>" ; while ( db2_fetch_row ( $stmt ) ) { 39 $ t i t l e = db2_result ( $stmt, 0 ) ; 40 $year = db2_result ( $stmt, 1 ) ; 41 echo "<l i >$ t i t l e ( $year )</ l i >" ; 42 } 43 echo "</ul>" ; 44 db2_close ( $conn ) ; 45 } else { 46 echo "<b>connection f a i l e d :<b><br>" ; 47 echo db2_conn_errormsg ( ) ; 48 } 49 50?> 51 </body> 52 </html> Listing 23: show_authors.php 1 <html> 2 <body> 3 <? 4 include c o n n e c t i o n. i n c ; 5 6 $author = $_GET[ author ] ; 7 $author = db2_escape_string ( $author ) ; 8 9 i f ( $conn ) { 10 $stmt = db2_prepare ( $conn, 11 "SELECT name FROM dbprak. author ". 12 "WHERE name LIKE ". $author. "% " ) ; 13 $ r e s u l t = db2_execute ( $stmt ) ; 14 i f (! $ r e s u l t ) { 15 echo "<b>execute f a i l e d :</b><br>" ; 16 echo db2_stmt_errormsg ( $stmt ). "<br>" ; 17 } echo "<h3>authors with ". $author. " </h3>" ; 20 echo "<ul>" ; while ( db2_fetch_row ( $stmt ) ) { 23 $name = db2_result ( $stmt, 0 ) ; 18

19 24 echo "<l i >$name : <a h r e f = show_works. php? author=$name >". 25 "show works</a></ l i >" ; 26 } 27 echo "</ul>" ; 28 db2_close ( $conn ) ; 29 } else { 30 echo "<b>connection f a i l e d :<b><br>" ; 31 echo db2_conn_errormsg ( ) ; 32 } 33 34?> 35 </body> 36 </html> 8 Tipps zum Debugging Manchmal funktionieren Programm nicht direkt beim ersten Anlauf und man muss Debuggen. Beim Debuggen von Web-Applikationen gibt es ein paar unangenehme Effekte, von denen einige durch Caching verursacht werden. Sagen wir, Euer Code funktioniert nicht und Ihr habt Debug-Ausgaben eingefügt. Aber aus irgend einem Grund werden auch die Debug-Ausgaben nicht im Browser ausgegeben. Grund dafür kann Caching sein entweder auf Seiten des Servers oder auf Browser-Seite. Um auf Nummer Sicher zu gehen, solltet Ihr den Browser-Cache löschen und Euren Server (Apache oder Tomcat) beenden und neu starten. Wenn Ihr sicher gehen wollt, dass Ihr mit einer bestimmten Version Eurer Webapp arbeitet (z.b. mit der, in der Ihr eine Änderung zum Testen durchgeführt habt) und nicht mit gecachten Seiten, könnt Ihr an passender Stelle (z.b. in einem h1-tag) temporär einen Zähler einfügen, den Ihr bei Änderungen hochzählt. Wenn der geänderte Code vom Server übernommen und im Browser angezeigt wird, seht Ihr dann am Zähler, dass die Änderung wirksam geworden ist. Beispiel: Im ersten Versuch sieht Euer Code so aus: <h1>hauptstadt</h1> <%= getcapital("germany") %> Nach Änderung des Ländernamens z.b. auf USA kommt immer noch Berlin als Ausgabe zurück. Um festzustellen, dass der Code richtg übersetzt und übernommen wurde, ändert Ihr die Überschrift: <h1>hauptstadt 1</h1> <%= getcapital("germany") %> Nun sollte im Browser die Überschrift Hauptstadt 1 lauten. Wenn nicht, habt Ihr ein Problem mit einem Cache. 19

20 9 Aufgaben Wie bereits in Abschnitt 2 erwähnt, könnt Ihr Euch für die Bearbeitung der folgenden Aufgaben für PHP oder JSP/Java entscheiden. Wichtig ist, dass die Entscheidung für sämtliche Aufgaben gilt und nicht ein Teil der Aufgaben in PHP und ein anderer in JSP gelöst werden soll. Weiterhin weisen wir noch einmal ausdrücklich darauf hin, dass zur Bearbeitung keine Bibliotheken zugelassen sind, die Datenbank-Funktionen über dem Niveau in JDBC (also Verbindung herstellen, SQL-Befehle senden, Ergebnisse lesen, Verbindung trennen) anbieten. Ihr sollt hier Erfahrungen in der Arbeit mit Datenbanken sammeln und nicht die Datenbank mithilfe einer Bibliothek abstrahieren. 9.1 Vorbereitung (Hausaufgaben) V0: Beispiele nachvollziehen Macht Euch anhand der Unterlagen und Dokumentationen mit den hier vorgestellten Beispielen vertraut. Ihr solltet in der Lage sein, den Beispielcode entweder für PHP bzw. JSP komplett nachzuvollziehen. Lest Euch ggf. in die Dokumentation der Programmiersprache ein. Zu dieser Vorbereitung gibt es keine Abgabe. 9.2 Präsenz Abzugeben ist ein gezipptes Archiv mit den Quelldateien frühzeitig vor dem Abnahmetermin. Der Termin für die Abnahme kann individuell mit dem Betreuer vereinbart werden. Zur Abnahme sollen alle Gruppenmitglieder anwesend und in der Lage sein, das Programm zu demonstrieren und den Quelltext zu erklären P1: Beispiele anpassen Für PHP: Passt die Beispiele derart an, dass Ihr eine Verbindung zu Eurer eigenen Datenbank herstellt und testweise eine Anfrage schicken und die Ergebnisse anzeigen könnt. Für JSP: Installiert Tomcat nach Anleitung und erstellt anhand des Beispiels eine kleine Webanwendung, um eine Verbindung zu Eurer eigenen Datenbank herzustellen, testweise eine Anfrage zu schicken und die Ergebnisse anzuzeigen P2: Inhalte der Datenbank zugreifbar machen Macht Eure Datenbank soweit wie möglich browse-bar, so dass der Inhalt aller Tabellen in der Anwendung einsehbar und verknüpft mit den Inhalten referenzierter Tabellen ist. So sollte man z.b. aus einer Liste mit Zutaten auf eine Zutaten klicken können, um Einzelheiten zur Zutat und eine Liste der Rezepte erhalten, in denen die Zutat benutzt wird. 20

Ziele. Transaktionen. Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr

Ziele. Transaktionen. Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr Betreuer: Sascha Kriewel, Andreas Tacke Raum: LF 230 Bearbeitung: 1. Woche: 21.-22. Januar 2009 2. Woche: 28.-29. Januar 2009 3. Woche: 4.-5. Februar 2009 Präsenzaufgaben: Abnahme bis 13. Februar 2009,

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 23 2 / 23 Wie kommen Daten von einem Webserver? In der Praxis existieren verschiedene Wege, wie ein Server einem Client zu

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Tomcat-Installation $JAVA_HOME (z.b. /home/dbp00/j2sdk1.4.2) $CATALINA_HOME (/home/dbp00/jakarta-tomcat-4) Skripte zum Start/Stop:

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum: Datenbanken Woche 9: Wiederholung, Transaktionskonzept,

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum: Datenbanken Woche 9: Wiederholung, Transaktionskonzept, Praktikum: Datenbanken Raum: LF230 Bearbeitung: 20.-22.6. 2005 Datum Gruppe Vorbereitung Präsenz Transaktionen Transaktionen in Datenbanken sind charakterisiert durch die sogenannten ACID-Eigenschaften.

Mehr

JSP, Tomcat, JDBC. Agenda. Übung Informationsintegration 3.5.2004. JSP & Tomcat JDBC. l Syntax. l Implizite Objekte. l Direktiven

JSP, Tomcat, JDBC. Agenda. Übung Informationsintegration 3.5.2004. JSP & Tomcat JDBC. l Syntax. l Implizite Objekte. l Direktiven JSP, Tomcat, JDBC Übung Informationsintegration 03.05.2004 Agenda JSP & Tomcat Syntax Impizite Objekte Direktiven JDBC 2 Java Server Pages - JSP Was ist eine JSP? Bietet die Mögichkeit, dynamischen Inhat

Mehr

PHP. Prof. Dr.-Ing. Wolfgang Lehner. Diese Zeile ersetzt man über: Einfügen > Kopf- und

PHP. Prof. Dr.-Ing. Wolfgang Lehner. Diese Zeile ersetzt man über: Einfügen > Kopf- und 8. PHP Prof. Dr.-Ing. Wolfgang Lehner Diese Zeile ersetzt man über: Einfügen > Kopf- und PHP PHP (Hypertext Preprocessor) Serverseitige Skriptsprache (im Gegensatz zu JavaScript) Hauptanwendungsgebiet:

Mehr

Java zur Realisierung von Internetanwendungen

Java zur Realisierung von Internetanwendungen Java zur Realisierung von Internetanwendungen Elementare Web-Programmierung Prof. Dr. Bernhard Schiefer HTTP Web-Browser Web-Browser GET http://www.zw.fh-kl.de/beispiel.htm beispiel

Mehr

Internetanbindung von Datenbanken

Internetanbindung von Datenbanken Internetanbindung von Datenbanken http://galahad.informatik.fh-kl.de/~miesel/index.html PHP -1 Gliederung Einführung PHP3 Datenbankanbindung mit PHP3 Sicherheitsprobleme Realisierung mit PHP3 Probleme

Mehr

Multimedia im Netz Wintersemester 2011/12

Multimedia im Netz Wintersemester 2011/12 Multimedia im Netz Wintersemester 2011/12 Übung 01 Betreuer: Verantwortlicher Professor: Sebastian Löhmann Prof. Dr. Heinrich Hussmann Organisatorisches 26.10.2011 MMN Übung 01 2 Inhalte der Übungen Vertiefung

Mehr

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL Betreuer: Sascha Kriewel, Tobias Tuttas Raum: LF 230 Bearbeitung: 26., 27. und 29. Juni 2006 Datum Team (Account) Vorbereitung Präsenz Aktuelle Informationen, Ansprechpartner und Material unter: http://www.is.inf.uni-due.de/courses/dbp_ss07/index.html

Mehr

PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03

PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03 PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03 Bei dem vierten Teil geht es um etwas praktisches: ein Emailformular, dass man auf der eigenen

Mehr

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten CGI einfach PHP Dynamik bis zur DB-Interaktion 1 CGI Möglichkeiten Das Common Gateway Interface (CGI) ermöglicht den Entwurf von interaktiven, benutzergesteuerten Web-Applikationen. Der WWW-Server ruft

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

LAMP HowTo (Linux Apache MySQL PHP) Zugriff per SSH auf den Server. Servername: gyko.no-ip.info (Lokal: 192.168.2.10)

LAMP HowTo (Linux Apache MySQL PHP) Zugriff per SSH auf den Server. Servername: gyko.no-ip.info (Lokal: 192.168.2.10) LAMP HowTo (Linux Apache MySQL PHP) Zugriff per SSH auf den Server Servername: gyko.no-ip.info (Lokal: 192.168.2.10) Stand: 04-2014 Warum Zugriff auf einen Server per SSH? Zunächst einmal möchte ich, dass

Mehr

MySql und PHP. Apache2: Konfigurieren für php4. ...\apache2\conf\httpd.conf aufrufen. Folgende Zeilen einfügen:

MySql und PHP. Apache2: Konfigurieren für php4. ...\apache2\conf\httpd.conf aufrufen. Folgende Zeilen einfügen: MySql und PHP Apache2: Konfigurieren für php4...\apache2\conf\httpd.conf aufrufen Folgende Zeilen einfügen: LoadModule php4_module "c:/php/php4apache2.dll" AddType application/x-httpd-php.php Wichtig!!

Mehr

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Nullwerte und Primitive Typen Wenn parent==null, was wird in der Datenbank gespeichert? Wenn man aus der DB liest, wie kann

Mehr

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5 Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5 Im Folgenden wird die Installation von MySQL 5.0 und Tomcat 5.0 beschrieben. Bei MySQL Server 5.0 handelt es sich um ein

Mehr

FHZ. Servlets/JSP. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

FHZ. Servlets/JSP. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt Inhalt 1. Grundlagen 1. Einführung 2. Programmieren für das Web 2. Servlets 3. JSP (Java Server Pages) 4. Beispiel Country 1. Dateneingabe von Benutzer 2. Parameterübergabe 3. Auswerten eines Formulars

Mehr

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de JSP JSTL JEE Vorlesung Teil 6 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Wiederholung / Vertiefung JSTL Grundlagen JSTL Basisbefehle Templates über JSTL

Mehr

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt PHP Schulung Beginner Newthinking Store GmbH Manuel Blechschmidt Begrüßung Es gibt keine dummen Fragen nur dumme Antworten. Übersicht Sprung ins Kalte Wasser 'Hallo Welt' Theorie Requests Grundlagen Kommentare

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9d: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Java Server Pages (JSP)

Java Server Pages (JSP) Überblick über Internet-Technologien Server-Technologien Datenbankkopplung Servlets JSP PHP CGI XML+XSL Dokumentsprachen Client-PGM ruft DB-Server Web-Server ruft Datenbankserver HTML+Javascript HTML+Applets

Mehr

Typo 3 installieren. Schritt 1: Download von Typo3

Typo 3 installieren. Schritt 1: Download von Typo3 Typo 3 installieren Bevor Sie Typo3 installieren, müssen Sie folgende Informationen beachten: Typo3 benötigt eine leere Datenbank. Mit Ihrem Abonnement verfügen Sie über eine einzige Datenbank. Sie können

Mehr

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP.

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP. Ziele: Eine Datenbank anlegen mit SQL Daten eingeben mit SQL Abfragen stellen mit SQL und PHP 1 Datenbankserver Entwickelt von der schwedischen Aktiengesellschaft MySQL Unter GNU General Public License

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 9: GUI-Anbindung über JDBC

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 9: GUI-Anbindung über JDBC Betreuer: Gudrun Fischer, Tobias Tuttas, Camille Pieume Raum: LF 230 Bearbeitung: 10., 11. und 13. Juli 2006 Datum Team (Account) Vorbereitung Präsenz Aktuelle Informationen, Ansprechpartner und Material

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Datenbanken für Online Untersuchungen

Datenbanken für Online Untersuchungen Datenbanken für Online Untersuchungen Im vorliegenden Text wird die Verwendung einer MySQL Datenbank für Online Untersuchungen beschrieben. Es wird davon ausgegangen, dass die Untersuchung aus mehreren

Mehr

Dynamische Webseiten mit PHP 1

Dynamische Webseiten mit PHP 1 Dynamische Webseiten mit PHP 1 Webserver, PHP und MYSQL Ein Webserver dient dazu, Internetseiten an PCs zu senden, von denen sie aufgerufen werden. Beispiel: Sie tippen im Browser www.fosbosweiden.de ein.

Mehr

PostgreSQL auf Debian System

PostgreSQL auf Debian System PostgreSQL auf Debian System Inhaltsverzeichnis 1. Installation 1.1 Installation 1.2 Mit postgres anmelden 2. Benutzer anlegen 3. Datenbank anlegen 3.1 Optionen 3.2 Datenbank mydatabase anlegen 4. Datenbank

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

Mehr

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6.

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6. Seminar Webprogrammierung WS04/05 6. Juni 2005 1 Einleitung Die Vorgeschichte Java-Servlets 2 Merkmale Von der JSP zur HTML-Ausgabe Syntax 3 4 5 Die Vorgeschichte Java-Servlets Einleitung Ansätze für dynamische

Mehr

6.9 Java Server Pages

6.9 Java Server Pages DocumentCollection dc = db.ftsearch(abfrage); Document d = dc.getfirstdocument(); while (d!= 0) { String Name = db.gettitle(); out.println(name + ""); d = dc.getnextdocument(); catch (NotesException

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Transaktionen, JDBC

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Transaktionen, JDBC Betreuer: Gudrun Fischer, Tobias Tuttas, Camille Pieume Raum: LF 230 Bearbeitung: 3., 4. und 6. Juli 2006 Datum Team (Account) Vorbereitung Präsenz Aktuelle Informationen, Ansprechpartner und Material

Mehr

Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.0.5

Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.0.5 Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.0.5 Erstellung der Datenbank Tabellen Als Login Module soll das in der JBoss Installation bereits vorhandene DatabaseServerLoginModule

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Ablauf Unit2. Walkthrough

Ablauf Unit2. Walkthrough Ablauf Unit2 Vertiefendes Uebungsprojekt - SQL II Gerhard Wohlgenannt Test Vorstellung der Arbeitsumgebung (Software, Locations) Walkthrough Gruppeneinteilung + Themenvergabe Vorstellung der Arbeitsumgebung

Mehr

Hackerpraktikum Versuch 4

Hackerpraktikum Versuch 4 Hackerpraktikum Versuch 4 Praktikum zur Vorlesung Reaktive Sicherheit WS 09/10 Johannes Hoffmann (hoffmann[-@-]ls6.cs.tu-dortmund.de) Dieser Versuch beschäftigt sich mit serverseitigen Schwachstellen im

Mehr

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen FAEL-Seminar Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte

Mehr

Web- Applikationen. in Java-Web

Web- Applikationen. in Java-Web Einführung in Java-Web Web- Applikationen Frank Huber Humboldt-Universität zu Berlin Allgemeines Java: Programmierung ist Programmierung nach Konvention Insbesondere bei Web-Applikationen wurde eine API

Mehr

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 4 PHP

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 4 PHP VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer Kommunikation I (Internet) Übung 4 PHP SS 2004 Inhaltsverzeichnis 1. PHP die serverseitige Programmiersprache...1 1.1. PHP - Bereiche in HTML definieren...1

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2. Raum: LF 230 Nächste Sitzung: 8./11.

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2. Raum: LF 230 Nächste Sitzung: 8./11. Raum: LF 230 Nächste Sitzung: 8./11. Dezember 2003 Die Dokumentation zu DB2 steht online zur Verfügung. Eine lokale Installation der Dokumentation findet sich unter der Adresse http://salz.is.informatik.uni-duisburg.de/db2doc/de_de/index.htm.

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

MySQL, phpmyadmin & SQL. Kurzübersicht

MySQL, phpmyadmin & SQL. Kurzübersicht MySQL, phpmyadmin & SQL Kurzübersicht Referenzen MySQL Documentation: http://dev.mysql.com/doc PHP 5 / MySQL5. Studienausgabe. Praxisbuch und Referenz (Kannengießer & Kannengießer) 2 Datenbank anlegen

Mehr

Collax Web Application

Collax Web Application Collax Web Application Howto In diesem Howto wird die Einrichtung des Collax Moduls Web Application auf einem Collax Platform Server anhand der LAMP Anwendung Joomla beschrieben. LAMP steht als Akronym

Mehr

Hilfe meine Oracle Datenbank spricht nicht mit meiner JSP

Hilfe meine Oracle Datenbank spricht nicht mit meiner JSP Hilfe meine Oracle Datenbank spricht nicht mit meiner JSP Diese Dokumentation, soll die grundlegenden Schritte vermitteln wie man mithilfe einer JSP Seite auf eine Oracle Datenbank zugreift und Daten abfragt

Mehr

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D. 1 Copyright 1996-1997 by Axel T. Schreiner. All Rights Reserved. 7 Datenbankzugriff Prinzip Dieser Abschnitt beschäftigt sich mit dem Paket java.sql, das eine SQL-Schnittstelle für Java verkapselt. Java-Programme

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme Beispiel: Web-Shop SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Applikation Software Client Web-Shop,... Web-Browser mit Applet,...??? Server Produkt- Datenbank Web-Server, Servlet Datenbank,...

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9b: Datenbankapplikationen Statische Web-Seiten Nutzung von HTML Beispiel:

Mehr

Active Server Pages. Internetanbindung von Datenbanken. Gliederung. Einführung in ASP. Sessions mit ASP. Datenbankanbindung mit ASP ASP-1

Active Server Pages. Internetanbindung von Datenbanken. Gliederung. Einführung in ASP. Sessions mit ASP. Datenbankanbindung mit ASP ASP-1 Internetanbindung von Datenbanken Active Server Pages ASP-1 Gliederung Einführung in ASP Sessions mit ASP Datenbankanbindung mit ASP Brunner, Fromm, Huppert ASP-2 Einführung in ASP ASP-3 Entwicklung des

Mehr

Interaktive Webseiten mit PHP und MySQL

Interaktive Webseiten mit PHP und MySQL Interaktive Webseiten mit PHP und Vorlesung 4: PHP & Sommersemester 2003 Martin Ellermann Heiko Holtkamp Sommersemester 2001 Hier noch ein wenig zu (My)SQL: SHOW INSERT SELECT ORDER BY GROUP BY LIKE /

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Fernwartung des Schulservers übers Internet Anleitung ssh - putty winscp - für Arktur v.3.5.2 bzw. v.3.5.6 -

Fernwartung des Schulservers übers Internet Anleitung ssh - putty winscp - für Arktur v.3.5.2 bzw. v.3.5.6 - Fernwartung des Schulservers übers Internet Anleitung ssh - putty winscp - für Arktur v.3.5.2 bzw. v.3.5.6 - Die folgende Anleitung beschreibt die Fernwartung des Schulservers z.b. von zu Hause über das

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST 2. Interaktive Web Seiten GET und POST Die Übertragungsmethoden GET und POST sind im http Protokoll definiert: POST: gibt an, dass sich weitere Daten im Körper der übertragenen Nachricht befinden: z.b.

Mehr

Datenbank und Informationssysteme

Datenbank und Informationssysteme Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 3 1.1 Architektur des SQL/CLI am Beispiel JDBC................... 4 1.2 Anfragen und Ergebnismengen in JDBC......................

Mehr

6 Web Datenbanken. Web Datenbank Anbindungen: Servlets. Applets. JAVA Server Pages. Sprachen: JAVA, PHP, Python,

6 Web Datenbanken. Web Datenbank Anbindungen: Servlets. Applets. JAVA Server Pages. Sprachen: JAVA, PHP, Python, Vorlesung Datenbanken Wintersemester 2007/08 6 Web Datenbanken Web Datenbank Anbindungen: Servlets Applets JAVA Server Pages Sprachen: JAVA, PHP, Python, Prof. Dr. Dietmar Seipel 481 6.1 Web Datenbank

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap http://wwwiuk.informatik.uni-rostock.de http://www.internet-prof.de

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap http://wwwiuk.informatik.uni-rostock.de http://www.internet-prof.de Rails Ruby on Rails Ajax on Rails Who is who? Rails Ziel: Framework für Web (2.0) Anwungen Beschleunigung der Entwicklung Konzept des Agilen Programmierens Ruby Interpretierte Sprache Rails Integrationen

Mehr

Planung für Organisation und Technik

Planung für Organisation und Technik Salztorgasse 6, A - 1010 Wien, Austria q Planung für Organisation und Technik MOA-VV Installation Bearbeiter: Version: Dokument: Scheuchl Andreas 19.11.10 MOA-VV Installation.doc MOA-VV Inhaltsverzeichnis

Mehr

Datenbank-basierte Webserver

Datenbank-basierte Webserver Datenbank-basierte Webserver Datenbank-Funktion steht im Vordergrund Web-Schnittstelle für Eingabe, Wartung oder Ausgabe von Daten Datenbank läuft im Hintergrund und liefert Daten für bestimmte Seiten

Mehr

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL 1 Transaktionen in SQL Um Daten in einer SQL-Datenbank konsistent zu halten, gibt es einerseits die Möglichkeit der Normalisierung, andererseits sog. Transaktionen. 2 Was ist eine Transaktion Eine Transaktion

Mehr

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets - Praktikum Datenbanken und verteilte Systeme SS 2008 - Java Server Pages und Servlets - Verteilte Systeme und Informationssysteme (VSIS) Department Informatik Universität Hamburg Infrastruktur vsispoolx

Mehr

MaxDB Einführung in die Installation und Nutzung von MaxDB (Version 7.5.0.5)

MaxDB Einführung in die Installation und Nutzung von MaxDB (Version 7.5.0.5) MaxDB Einführung in die Installation und Nutzung von MaxDB (Version 7.5.0.5) Hinweise: Diese Installation bezieht sich auf die Version 7.5.0.5, bei Nachfolgern kann sich einiges ändern Herunter geladen

Mehr

SQL, MySQL und FileMaker

SQL, MySQL und FileMaker SQL, MySQL und FileMaker Eine kurze Einführung in SQL Vorstellung von MySQL & phpmyadmin Datenimport von MySQL in FileMaker Autor: Hans Peter Schläpfer Was ist SQL? «Structured Query Language» Sprache

Mehr

Ablauf. Wichtige Termine. Vertiefendes Übungsprojekt - SQL II

Ablauf. Wichtige Termine. Vertiefendes Übungsprojekt - SQL II Ablauf Wichtige Termine Ablauf der Lehrveranstaltung Vorstellung des Projektthemas Projektgruppen Vorstellung der Arbeitsumgebung (Software, Locations) Walkthrough Datenbankentwurf Formulare PHP Security

Mehr

Open Catalog Interface (OCI) Anbindung an VirtueMart

Open Catalog Interface (OCI) Anbindung an VirtueMart Ver. 2.5.1 Open Catalog Interface (OCI) Anbindung an VirtueMart Joomla 2.5 und Virtuemart 2.0.6 Ing. Karl Hirzberger www.hirzberger.at Inhaltsverzeichnis Begriffserklärung... 3 OCI für VirtueMart... 4

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004 Zugriff auf Firebird-Datenbanken mit PHP Daniel de West DB-Campus-Treffen 15. Januar 2004 Inhalt PHP und Firebird Die wichtigsten Befehle Verbindungsaufbau Übermitteln von Abfragen Beenden von Verbindungen

Mehr

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012 Isolationsstufen für Transaktionen / Sicherheit Dr. Karsten Tolle Dienstag 31. Januar 2012 Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

Sessions mit PHP. Annabell Langs 2004. Sessions in PHP - Annabell Langs 1

Sessions mit PHP. Annabell Langs 2004. Sessions in PHP - Annabell Langs 1 Sessions mit PHP Annabell Langs 2004 Sessions in PHP - Annabell Langs 1 Sessions» Inhaltsverzeichnis Wozu Sessions? 3 Wie funktionieren Sessions? 5 Wie kann ich die Session-ID übergeben? 8 Sicherheit 9

Mehr

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21 PHP MVC PHP MVC 1 von 21 Model View Control Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP MVC 2 von 21 Webbasierte Informationssysteme WWW-Browser

Mehr

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

Themen. Apache Webserver Konfiguration. Verzeichnisse für Web-Applikationen. Server Side Includes

Themen. Apache Webserver Konfiguration. Verzeichnisse für Web-Applikationen. Server Side Includes Themen Apache Webserver Konfiguration Verzeichnisse für Web-Applikationen Server Side Includes Apache Webserver Konfiguration des Apache Webservers Server-Einstellungen in der httpd.conf-datei Einteilung

Mehr

Übungen. DI (FH) Levent Öztürk

Übungen. DI (FH) Levent Öztürk Übungen DI (FH) Levent Öztürk Übersicht Entwicklungsumgebung PHPMYADMIN Datenbank anlegen User anlegen Tabellen Anlegen Datenbankzugriffe über PHP 01.04.2014 DI (FH) Levent Öztürk 2 Entwicklungsumgebung

Mehr

Datenbanken. Ein DBS besteht aus zwei Teilen:

Datenbanken. Ein DBS besteht aus zwei Teilen: Datenbanken Wikipedia gibt unter http://de.wikipedia.org/wiki/datenbank einen kompakten Einblick in die Welt der Datenbanken, Datenbanksysteme, Datenbankmanagementsysteme & Co: Ein Datenbanksystem (DBS)

Mehr

Übung 1: Ein Website News-System mit MySQL

Übung 1: Ein Website News-System mit MySQL Übung 1: Ein Website News-System mit MySQL In der Vorübung haben wir bereits mit Hilfe eines ERMs den Datenbankentwurf erstellt und daraus die folgenden Tabellen abgeleitet: Nun muss diese Datenbank in

Mehr

Dateneingabe über ein HTML-Formular in eine Datenbank:

Dateneingabe über ein HTML-Formular in eine Datenbank: Dateneingabe über ein HTML-Formular in eine Datenbank: Über ein Eingabeformular mit fünf Eingabefelder sollen Personaldaten in eine Datenbank gespeichert werden: Schritt 1: Erstellen des Eingabeformulars

Mehr

Folien php/mysql Kurs der Informatikdienste

Folien php/mysql Kurs der Informatikdienste Folien php/mysql Kurs der Informatikdienste 1. Einführung in die Datenbank MySQL Kursbeispiel und Kursziele 1.1 Das Kursbeispiel: eine kleine Personalverwaltung 1.2 Was brauchen wir? 1.3 Ziele Kurs AEMS1,

Mehr

TimeMachine. Installation und Konfiguration. Version 1.4. Stand 21.11.2013. Dokument: install.odt. Berger EDV Service Tulbeckstr.

TimeMachine. Installation und Konfiguration. Version 1.4. Stand 21.11.2013. Dokument: install.odt. Berger EDV Service Tulbeckstr. Installation und Konfiguration Version 1.4 Stand 21.11.2013 TimeMachine Dokument: install.odt Berger EDV Service Tulbeckstr. 33 80339 München Fon +49 89 13945642 Mail rb@bergertime.de Versionsangaben Autor

Mehr

Einführung in PHP und MySQL

Einführung in PHP und MySQL Zentral Informatik, IT Fort und Weiterbildungen Einführung in PHP und MySQL Handouts zu den Folien Autoren: Diverse Mitarbeiter der Zentralen Informatik Letzte Überarbeitung: Daniel Förderer Version 2015,2

Mehr

easyident Configurator 1.0

easyident Configurator 1.0 easyident Configurator 1.0 Der easyident Configurator ist ein Programm zur Verwaltung von Transpondern und zur Konfiguration von easyident Modulen. Dazu werden die Transponder und Module zuerst in einer

Mehr

Java zur Realisierung von Internetanwendungen

Java zur Realisierung von Internetanwendungen Java zur Realisierung von Internetanwendungen Elementare Web-Programmierung HTTP Web-Browser Web-Browser GET http://www.zw.fh-kl.de/beispiel.htm Beispiel Ein

Mehr

Installation des GeoShop Redirector für Apache (Stand 14.8.2007) ================================================================

Installation des GeoShop Redirector für Apache (Stand 14.8.2007) ================================================================ Installation des GeoShop Redirector für Apache (Stand 14.8.2007) ================================================================ 0 Überblick ----------- Die Installation des GeoShop Redirector im Apache

Mehr

"Die HTML-PHP-Schnittstelle -- Ein- und Ausgabe der Daten"

Die HTML-PHP-Schnittstelle -- Ein- und Ausgabe der Daten Mini-Workshop "Die HTML-PHP-Schnittstelle -- Ein- und Ausgabe der Daten" Dirk Wiebel 28.07.03 1. HTML-Grundlagen SGML-basierte Formatiersprache (HyperText Markup Language) Basiert auf Tags und Attributen

Mehr

Sitzungszustand. Vorläufige Version 309 c 2005 Peter Thiemann

Sitzungszustand. Vorläufige Version 309 c 2005 Peter Thiemann Sitzungszustand Gruppierung von Anfragen zu Sitzungen (Sessions) Klasse HttpServletRequest Methode HttpSession getsession (bool create) liefert aktuelle Sitzungsobjekt Zustand lokal zur Anwendung (ServletContext)

Mehr

Überblick über Internet-Technologien

Überblick über Internet-Technologien WebServer-Technologien SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Überblick über Internet-Technologien Server-Technologien XSP Java Server Pages

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Dokumentation: Erste Schritte für Endkunden

Dokumentation: Erste Schritte für Endkunden pd-admin v4.x Dokumentation: Erste Schritte für Endkunden 2004-2007 Bradler & Krantz GmbH & Co. KG Kurt-Schumacher-Platz 9 44787 Bochum 1 Einleitung Diese Anleitung ist für Endkunden gedacht, die von Ihrem

Mehr

WordPress lokal mit Xaamp installieren

WordPress lokal mit Xaamp installieren WordPress lokal mit Xaamp installieren Hallo und willkommen zu einem weiteren Teil der WordPress Serie, in diesem Teil geht es um die Lokale Installation von WordPress mithilfe von Xaamp. Kurz und knapp

Mehr

Erlernbarkeit. Einsatzbereich. Preis. Ausführungsort

Erlernbarkeit. Einsatzbereich. Preis. Ausführungsort 1.3 PHP Vorzüge Erlernbarkeit Im Vergleich zu anderen Sprachen ist PHP relativ leicht erlernbar. Dies liegt hauptsächlich daran, dass PHP im Gegensatz zu anderen Sprachen ausschließlich für die Webserver-Programmierung

Mehr