1 / 92

Übersicht zur Vorlesung

Programmierung von Client/Server-Anwendungen J2EE – Web-Applikationen, Java Server Pages, JavaBeans und Servlets erstellt in Anlehnung an Stark, T.: J2EE – Einstieg für Anspruchsvolle, Addison-Wesley, Pearson Studium, München 2005. Übersicht zur Vorlesung. HTML im Rückblick

ling
Download Presentation

Übersicht zur Vorlesung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmierung von Client/Server-AnwendungenJ2EE – Web-Applikationen, Java Server Pages, JavaBeans und Servletserstellt in Anlehnung an Stark, T.: J2EE – Einstieg für Anspruchsvolle,Addison-Wesley, Pearson Studium, München 2005 Prof. Dr. Andreas Schmietendorf

  2. Übersicht zur Vorlesung • HTML im Rückblick • Java-Server-Pages (JSP) • JSP und Datenbankanbindung via JDBC • JavaBean-Komponentenmodell • Servlets vs. JSP • Idee der Tag-Bibliotheken Prof. Dr. Andreas Schmietendorf

  3. HTML im Rückblick Prof. Dr. Andreas Schmietendorf

  4. HTML im Rückblick HTML-Versionen im Vergleich (W3 Konsortiums): HTML (ohne Versionsnummer) - 1992 • Überschriften, Textabsätze, Grafikreferenzen, Hypertext-Links HTML V2.0 - 1995 (noch akademisch geprägt) • kleinster gemeinsamer Nenner für Web-Seiten HTML V3.2 - 1997 (Zusammenarbeit mit der Industrie) • Tabellen, physische Textformatierungen HTML V4.0 - 1998 • Verwendung von Frames (geteilte Seiten) • Cascading Style Sheets - festlegen von z.B. Schriftgröße, -farbe, ... • Verwendung von Scriptsprachen (z.B. JavaSkript) XHTML 1.0 Neuformulierung HTML 4.01 mit Hilfe von XML - 2000 Prof. Dr. Andreas Schmietendorf

  5. Hypermediale Informationssysteme Aufbau des Unified Ressource Locator: Ziel: einheitliche Schnittstelle zum Internet PROTOKOLL://SERVER/VERZEICHNISPFAD/DOKUMENT • Protokoll: http, file, ftp, mailto, ftp, https, ... • Server: • IP-Adresse z.B. 164.19.200.20 • alternativ Domain Name Service (DNS-Name) • Verzeichnispfad: Verzeichnis innerhalb des lokalen Filesystems • Dokument: eigentliche auszugebende Datei, über Dateiextension erfolgt die Wahl möglicher Plug-Ins (z.B. *.htm, *.pdf, ...) Beispiel eines URL: http://userpage.fu-berlin.de/~schmiete/index.htm Prof. Dr. Andreas Schmietendorf

  6. Hypermediale Informationssysteme Erstellung von HTML-Dokumenten: • Einfache ASCII-Datei, neu erstellt oder übernommen z.B. von Word und mit HTML-Befehlen versehene Datei • Verwendung einfacher Editoren (Vorschlag: UltraEdit-32) • Nutzung von Generatoren (Bsp.: WebWizard, HotMeTaL, ...) • Verwendung von Entwicklungsumgebungen wie z.B. MS Visual Interdev und Frontpage (für Formulare sinnvoll) • Nutzung der Genratorfunktionen von Textverarbeitungsprogrammen wie z.B. MS Office (generiert auch XML) Einstiegsdatei typischerweise index.htm oder default.htm (*.htm unter DOS und *.html unter UNIX oder WindowsNT) Prof. Dr. Andreas Schmietendorf

  7. Hypermediale Informationssysteme Möglichkeiten der Einstellung • Angebot der Internet-Service-Provider, z.B. T-Online • Im Rahmen von direkten Internet-Zugängen und eigenem HTTP-Server • Verwendung akademischer Server-Systeme • Häufig Probleme bei dynamischen Komponenten, z.B. zu startende Services Prof. Dr. Andreas Schmietendorf

  8. Hypermediale Informationssysteme Grundaufbau einer einfachen HTML-Datei: <HTML> <!-----Kommentarzeile-------> <HEAD> <TITLE>Dokumente und Informationen</TITLE> </HEAD> <BODY> <H1>Client/Server-Anwendungen</H1> <HR> </BODY> </HTML> Prof. Dr. Andreas Schmietendorf

  9. Hypermediale Informationssysteme Merkmale der HTML-Syntax: • Befehle meist aus einleitenden und abschließenden Tag, keine Beachtung von Groß- und Kleinschreibung • Leerzeichen im Text zusammengefaßt, explizit mit &#160 • Verschachtelte Tags führen zu Fehlern • Zusätzliche Attribute bei einleitenden Tag möglich, z.B. die Ausrichtung einer Überschrift der 2. Kategorie. Bsp.: <h2 align=center>Ausgabetext<h2> • Kommentare in HTML <!--Kommentar--> • Sonderzeichen im Ausgabetext wie z.B. „ä“ sollten für die international richtige Darstellung durch „&auml“ ersetzt werden Prof. Dr. Andreas Schmietendorf

  10. Hypermediale Informationssysteme Vorgehensweise zur Erstellung von HTML-Systemen: • Analyse der auszugebenden Daten (über was soll informiert werden) • Navigationsstruktur grob entwerfen (z.B. Baumstrukturen verwenden) • Grundgerüst der HTML-Datei erstellen • Maskierungsvorschriften für Umlaute, Sonderzeichen beachten • Seiten durch Zeilenumbrüche und Leerzeilen verwenden • Verwenden von mehreren kleinen HTML-Dateien • nicht größer als 64 KByte (typische Größen ca. 5 KByte) • Audio/Video-Sequenzen sollten explizit angekündigt werden • Test der erstellten Seiten unter verschiedenen Browser-Systemen Prof. Dr. Andreas Schmietendorf

  11. Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (1): • Textformatierung (Überschriften <H1>Text</H1>, Absätze <P>, Zentrieren <CENTER>, Zeilenumbruch <BR>, Trennlienie <HR> ) • Textattribute • physikalische (<I>...</I>, <B>...</B>, <blink>...</blink> • logische <CITE>...</CITE>, <CODE>...</CODE>) • Listen (z.B. numerierte und unnumerierte Listen) <OL> <UL> <LI> &Auml;pfel </LI> <LI>… </LI> </OL> </UL> • Grafiken anzeigen (<IMG SRC=„Adresse des Bildes>, die Angabe einer alternativen Text-Ausgabe ist möglich) • Tabellen <TABLE> <TR> <TH>Kopfzeile der Tabelle</TH> </TR> <TR> <TD>Datenzelle</TD></TR> </TABLE> Prof. Dr. Andreas Schmietendorf

  12. Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (2): • Frames für Teilung der Seite in z.B. linken und rechten Bereich <frameset cols="20%,60%"> <frame src="cmgverw.htm" name="links"> <frame src="ov_cmg.htm" name="rechts"> </frameset> • Hypertextlinks (Start- und Zielpunkt) Links auf Dokumente: <A HREF = „Adresse des Zieldokuments“>...</A> Link innerhalb der WWW-Seite: <A HREF = „#Marke“>...</A> <A NAME = „Marke“>...</A> Link auf Internetdienste: email, news, ftp, gopher, telnet • Imagemaps Einteilung einer Grafik in anklickbare Bereiche Prof. Dr. Andreas Schmietendorf

  13. Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (3): • Multimedia- und Fremdprogrammreferenzen (Browserabhängig) Standard ist das OBJECT-Tag, bei MS Audio mit SOUND-Tag <OBJECT DATA=„test.avi“ TYPE=„video/x-msvideo></OBJECT> Java-Applets mit APPLET-Tag • Interaktive Formulare zur Dateneingabe Formulardefinition: <FORM ACTION=mailto:...METHOD=POST> Eingabefelder: <INPUT TYPE=„text“ NAME=„VARIABLE“> Auswahlcheckboxen: <INPUT TYPE=„checkbox“ NAME=„VARIABLE“> Auswahllisten (Scrollbar): <SELECT NAME="BenchmarkNutzung“SIZE=4 MULTIPLE> <OPTION>Harwarekenndaten Bestätigungsbutton: <INPUT TYPE=„submit“ [NAME=„OK-Button“]> Prof. Dr. Andreas Schmietendorf

  14. Java Server Pages – JSP‘s Prof. Dr. Andreas Schmietendorf

  15. Java Server Pages • Pendant zu folgenden Techniken: • Microsofts Active Server Pages (kurz ASP) • CGI-basierte Anwendungen oder auch PHP • Einbetten von Java-Code zwischen HTML-Anweisungen • Server-Seite, die dynamisch bei URL-Anforderung erzeugt wird • Bestandteile einer JSP • HTML-Elemente • Skriptlets: Skript-Elemente in Java • Java Servlets • Java Beans • Aus Bestandteilen der JSP wird ein Servlet generiert Prof. Dr. Andreas Schmietendorf

  16. Java Server Pages Bausteine einer JSP: • Ausdrücke der Form <%= Java-Ausdruck %> • Scriptlets der Form <% Java-Code %> • Deklarationen der Form <%! Java-Code %> • Kommentare: • <%-- JSP-Kommentar %> • <!-- HTML-Kommentar --> • Java-Anweisungen in JSP-Ausdrücken werden nicht mit einem Semikolon abgeschlossen  jeweils nur eine Anweisung! Prof. Dr. Andreas Schmietendorf

  17. Java Server Pages <html> <body> Hallo liebe Studenten der FHW Berlin! <hr> <p> Es ist jetzt genau: <%= new java.util.Date()%> </body> </html> Vergleich: System.out.print („Es ist jetzt genau „ + new java.util.Date()); Prof. Dr. Andreas Schmietendorf

  18. Java Server Pages JSP-Seite unter JSP-examples: Prof. Dr. Andreas Schmietendorf

  19. Java Server Pages • JSP liegt nicht in einem eigenen Verzeichnis • Nicht günstig im Falle einer Neuinstallation • Besser ist die Anlage eines eigenen Projektverzeichnis • http://localhost:8080/eigenes_verzeichnis/*.jsp • Möglichkeiten zur Anlage eines solchen Verzeichnis: • Verwendung des Sysdeo-Plugin unter Eclipse (GUI-Dialog) • Editieren der Datei conf/server.xml im Tomcat Verzeichnis Prof. Dr. Andreas Schmietendorf

  20. Java Server Pages Erzeugen eines eigenen Arbeitsverzeichnisses & Unterverzeichnisse: • css – Ablage von Cascading Stylesheets • html – Aufnahme statischer HTML-Dokumente • images – Aufnahme von Bildern • jsp – Aufnahme von Java Server Pages (dynamische Dokumente) • WEB-INF – enthält Web Deployement Descriptor  web.xml Eintrag in der server.xml-Datei unter Tomcat <Context path="/schmiete" docBase="C:\jakarta-tomcat-5\schmietendorf" debug="0" reloadable="true" crossContext="true" /> Prof. Dr. Andreas Schmietendorf

  21. Java Server Pages Vordefinierte Variablen in einer JSP (verwaltet im Servlet-Container): • request: javax.servlet.http.HTTPServletRequest • Zugriff auf Informationen des Request-Header • z.B. akzeptierte Dateiformate, Sprachen, Art des User-Agent • response: javax.servlet.http.HTTPServletResponse • Modifikation der Antwort des Servers an den Client • Status-Code setzen oder Response-Header modifizieren • out: javax.servlet.jsp.JspWriter • Verwendet der Server um die Ausgabe an den Client zu senden Prof. Dr. Andreas Schmietendorf

  22. Java Server Pages <html> <head> <title>Eine dynamische JSP-Seite</title> </head> <body> <h2>Verwendung vordefinierter Variablen</h2> <p><hr><p> <ul> <li>Hallo liebe Studenten der FHW Berlin! </li> <li>Es ist jetzt genau: <%= new java.util.Date()%> </li> <li>Sie sind: <%= request.getParameter("name")%> </li> </ul> </body> </html> Prof. Dr. Andreas Schmietendorf

  23. Java Server Pages Prof. Dr. Andreas Schmietendorf

  24. Java Server Pages Alternative Notation für JSP-Ausdrücke: • Ggf. besteht die Forderung XML-konformer JSP‘s • Bisherige Form: <%= Ausdruck %> • XML-konforme Darstellung: <jsp:expression>Ausdruck</jsp:expression> • Die XML-konforme Darstellung ist case-sensitiv • Auch hier wird nur eine Java-Anweisung verwendet Prof. Dr. Andreas Schmietendorf

  25. Java Server Pages Bisherige Einschränkungen der verwendeten JSP‘s • Nur jeweils eine Java-Anweisung • Keine definierbaren lokale Variablen zur Speicherung von Werten • Keine bedingten Entscheidungen (if-else) • Keine Schleifen zur Wiederholung von Anweisungen • Verwendung von sogenannten JSP-Scriptlets • Allg. Form: <% beliebiger Java-Code%> • Def. Einer Folge von Java-Befehlen • JSP-Scriptlet Ausgaben müssen explizit definiert werden <% String userName = request.getParameter(“user“); out.println (Sie sind“ + userName); %> Prof. Dr. Andreas Schmietendorf

  26. Java Server Pages Beispiele für JSP-Scriptlets • Schleifen <% for (int i=0; i<10; i++) { %> HTML/JSP-Code <% } %> • Switch-Abfrage <% switch (arg) { case 0 : %> HTML/JSP-Code <% case 1 : %> HTML/JSP-Code <% braek; case 2 : %> HTML/JSP-Code <% default: %> HTML/JSP-Code <% } %> • JSP-Scriplets werden jeweils durch HTML-Code unterbrochen Prof. Dr. Andreas Schmietendorf

  27. Java Server Pages JSP-Scriptlets  zusammenhängende Java-Methode • Definiert den Ablauf der JSP • Vordefinierte Variablen request, response und out können als Parameter der Methode verstanden werden • Servlet(Web)-Container sieht JSP als Java-Programm Public classMyJsp { public void response (Request req, Response, res) { // JSP-Scriplets // … } } Prof. Dr. Andreas Schmietendorf

  28. Java Server Pages <html> <head> <title>Eine dynamische JSP-Seite</title> </head> <% String userName = request.getParameter("name");%> <body> <h2>Verwendung vordefinierter Variablen - Beispiel 3</h2> <p><hr><p> <ul> <li>Hallo liebe Studenten der FHW Berlin!</li> <li>Es ist jetzt genau: <%= new java.util.Date()%></li> <% if (userName != null) { %> <li>Sie sind: <%= userName %></li> <% } else { %> <li>Sie sind: unbekannt</li> <% } %> </ul> </body> </html> Prof. Dr. Andreas Schmietendorf

  29. Java Server Pages else-Zweig  Prof. Dr. Andreas Schmietendorf

  30. Java Server Pages JSP-Deklarationen: • Variablen innerhalb der JSP-Methoden  pot. Probleme • Lokale Variablen • Verlieren Wert nach ausgeführten Request • Zählen der Zugriffe auf eine Seite • Notwendige Speicherung des Anzahl Zugriffe • Verwendung von JSP-Deklarationen (vgl. globale Variablen) • Form: <%! Java-Code außerhalb des JSP-Scriplet %> • JSP-Deklarationen sind nicht Bestandteil der JSP-Scriplet! Prof. Dr. Andreas Schmietendorf

  31. Java Server Pages <html> <head> <title>Eine dynamische JSP-Seite</title></head> <%! private int count =0;%> <% String userName = request.getParameter("name");%> <body> <h2>Verwendung vordefinierter Variablen - Beispiel 4</h2> <p><hr><p> <ul> <li>Hallo liebe Studenten der FHW Berlin!</li> <li>Es ist jetzt genau: <%= new java.util.Date()%></li> <% if (userName != null) { %> <li>Sie sind: <%= userName %></li> <li>Besucher: <%= ++count %></li> <% } else { %> <li>Sie sind: unbekannt</li> <% } %> </ul> </body> </html> Prof. Dr. Andreas Schmietendorf

  32. Java Server Pages  14. Aufruf 15. Aufruf  Prof. Dr. Andreas Schmietendorf

  33. Java Server Pages Weiteres Beispiel einer möglichen JSP-Deklaration: <%! Private boolean existUser (javax.servlet.SerletRequest req, String userName){ // Test ob der User schon vorhanden ist if (request.getParameter(userName) == null){ return false; } return true; }%> Prof. Dr. Andreas Schmietendorf

  34. Java Server Pages Vordefinierte Variablen einer JSP: • HTTP als zustandsloses Protokoll • Server bedient nur die aktuelle Anfrage • Client ist dem Server danach unbekannt • Komplexe Applikationen bedingen: • Client muss ggf. wieder erkannt werden • Zwischenspeicherung bestimmter Zustände • Kontexte des Web Containers • Stellen verschiedene Gültigkeitsbereiche für Variablen zur Verfügung • 3 Speicherbereiche werden genutzt Prof. Dr. Andreas Schmietendorf

  35. Java Server Pages 3 Speicherbereiche für Anfragen an den Webservers: • Application-Scope (Informationen über die Lebenszeit des Servers) • Globale, statische Variablen • Art der Applikationsnutzung • Session-Scope (Informationen ab dem 1. Aufruf) • Speicherung einer Session-ID – z.B. eindeutige Kundennummer • Time-out Parameter • Request-Scope (lokaler Gültigkeitsbereich) • Sind nur während der Bearbeitung einer Antwort an den Client gültig • Verfallen nach Beantwortung der Client-Anfrage Prof. Dr. Andreas Schmietendorf

  36. Java Server Pages Kontrolle von JSPs durch folgende Speicherbereiche: • request – Variable vom Typ javax.servlet.http.HTTPServletRequest • Bezug zum Request-Scope • Mittels Methode setAttribute() können Objekte hinzugefügt werden • response – Variable vom Typ javax.servlet.http.HTTPServletResponse • Manipulation der Antwort an den Server • Z.B. Cookies an den Browser senden oder Status-Code setzten Prof. Dr. Andreas Schmietendorf

  37. Java Server Pages Kontrolle von JSPs durch folgende Speicherbereiche: • out – Variable vom Typ javax.servlet.jsp.JspWriter • Bezieht sich auf den Ausgabestrom zwischen Server und Client • Ermöglicht die Ausgabe von beliebigen Objekten bzw. Basistypen • session - Variable vom Typ javax.servlet.http.HttpSession • Bezug auf den Session-Scope (z.B. beim Login) • Mit setAttribute() können Werte zur Sitzung abgespeichert werden  Nutzerspezifische Daten über mehrere Sitzungen  Cookie-Technik Prof. Dr. Andreas Schmietendorf

  38. Java Server Pages Kontrolle von JSPs durch folgende Speicherbereiche: • application – globale Variable zwischen Applikationen eine Webservers • Bezug auf den Application-Scope • Parallel laufende Anwendungen können so Ressourcen teilen • config - Variable vom Typ javax.servlet.jsp.ServletConfig • Bietet den Zugriff auf serverseitige Initialisierungsparameter der JSP • Werte können aus der web.xml gelesen werden • z.B. Konfigurationsdaten für den Zugriff auf Datenbanken Prof. Dr. Andreas Schmietendorf

  39. Java Server Pages Kontrolle von JSPs durch folgende Speicherbereiche: • pageContext - Variable vom Typ javax.servlet.jsp.PageServlet • Realisiert den Zugriff auf Seitenattribute einer JSP • Weiterleiten eines Requests • Einfügen einer weiteren Seite • page – Synonym des Schlüsselwortes this in Java • Ist vom Typ java.lang.Object • Soll ggf. die Verwendung anderer Scriptsprachen unterstützen Prof. Dr. Andreas Schmietendorf

  40. Java Server Pages JSP Direktiven (Bezug zum Servlet-Container): • page (kein Bezug auf die gleichnamige Variable) • Eigenschaften der JSP als Java-Klasse • Angabe einer Superklasse, Verhalten im Fehlerfall, Ausgabepufferung • include • Beschreibt den modularen Aufbau einer JSP-Anwendung • Beziehung zu gemeinsam genutzten JSP-Seiten (z.B. Menüs) • taglib • Verhalten des JSP-Dokumentes auf der markup-Ebene • z.B. Möglichkeiten zur Definition eigener tags Prof. Dr. Andreas Schmietendorf

  41. Java Server Pages Page – Seitendirektiven 1: • Klassen und Packages importieren <%@ page import=“java.util.Date“ %> <%@ page import=“java.util.Date“, “java.math.*“ %> • JSP‘s ableiten von einer Superklasse (nicht generell unterstützt!) Package ownjsp.fhwbln.jsp; Import javax.servlet.jsp.HttpJspPage; Public class MyJsp implements HttpJspPage { // eigener Code } Nutzung: <%@ page import=“ownjsp.fhwbln.jsp.MyJsp“ extends=“MyJsp“ %> Prof. Dr. Andreas Schmietendorf

  42. Java Server Pages Page – Seitendirektiven 2: • Parallele Bearbeitung von Client-Anforderungen <%@ page isThreadSafe=“true“ %> - Standardeinstellung <%@ page isThreadSafe=“false“ %> • errorPage – Verweis auf eigene Fehlerseiten <%@ page errorPage=“Fehlerseite.jsp“ %> • page-Attribut contentType (MIME-Type  PlugIn Auswahl) • Teilt dem Browser die Art des nachfolgenden Dokumentes mit • Realisierung mehrsprachiger Applikationen Prof. Dr. Andreas Schmietendorf

  43. Java Server Pages Beispiel einer einfachen Login-Prozedur Bestandteile eines komplexen Web-Auftritts • Login-Seite  Login.jsp • Authentifizierung des Benutzers  Einstieg.jsp • Inhalt des eigentlichen Portals (z.B. Frame)  Content.jsp • Fehlerseite bei gescheiterter Anmeldung  LoginError.jsp Prof. Dr. Andreas Schmietendorf

  44. Java Server Pages Prof. Dr. Andreas Schmietendorf

  45. Java Server Pages <html><head><title>Eine dynamische JSP-Seite</title></head> <body> <h2>Ein einfaches Login für Web-Anwendungen</h2> <p><hr><p> <form method="post" action="Einstieg.jsp"> Login: <INPUT type="text" name="user" /> <INPUT type="submit" value="Absenden" /> <img src="../images/fhw.jpg" > </form> <% if (request.getParameter("msg") !=null){ out.println (request.getParameter("msg")); } %> </body> </html> Login.jsp Prof. Dr. Andreas Schmietendorf

  46. Java Server Pages <%@ page session="true" %> <%@ page contentType="text/html; charset=UTF-8" %> <%@ page errorPage="LoginError.jsp" %> <% // Test ob noch eine entsprechende Session besteht if (session.getAttribute("USER") == null) { // Lesen des Parameters vom request String userName = request.getParameter("user"); // Test ob der Parameter existiert if (userName == null) { throw new Exception ("Nutzername nicht vorhanden!"); } // Test ob der Parameter gültig ist if (! userName.equals("Thomas")) { %> Login.jsp Prof. Dr. Andreas Schmietendorf

  47. Java Server Pages <jsp:forward page="Login.jsp?msg=Benutzer nicht bekannt!" /> <% } // Hinzufügen des Parameters zur aktuellen Session session.setAttribute ("USER", userName); } %> <%-- keine Ausnahmefehler - weiter zu Content.jsp --%> <jsp:forward page="Content.jsp" /> Fortsetzung - Login.jsp Prof. Dr. Andreas Schmietendorf

  48. Java Server Pages Prof. Dr. Andreas Schmietendorf

  49. Java Server Pages <html> <head> <title>Eine dynamische JSP-Seite</title> </head> <body> <h2>Herzlich willkommen im Portal</h2> <p><hr><p> Sie sind Benutzer: <%= session.getAttribute("USER") %> </body> </html> Der Einstieg ins Portal  Prof. Dr. Andreas Schmietendorf

  50. JSP und JDBC Prof. Dr. Andreas Schmietendorf

More Related