Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 2006/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen J2EE – Web-Applikationen, Java Server Pages, JavaBeans und Servlets.

Ähnliche Präsentationen


Präsentation zum Thema: "WS 2006/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen J2EE – Web-Applikationen, Java Server Pages, JavaBeans und Servlets."—  Präsentation transkript:

1 WS 2006/07Prof. Dr. Andreas Schmietendorf1 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

2 WS 2006/07Prof. Dr. Andreas Schmietendorf2 Ü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

3 WS 2006/07Prof. Dr. Andreas Schmietendorf3 HTML im Rückblick

4 WS 2006/07Prof. Dr. Andreas Schmietendorf4 HTML-Versionen im Vergleich (W3 Konsortiums): HTML (ohne Versionsnummer) Überschriften, Textabsätze, Grafikreferenzen, Hypertext-Links HTML V (noch akademisch geprägt) -kleinster gemeinsamer Nenner für Web-Seiten HTML V (Zusammenarbeit mit der Industrie) -Tabellen, physische Textformatierungen HTML V 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 HTML im Rückblick

5 WS 2006/07Prof. Dr. Andreas Schmietendorf5 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 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:

6 WS 2006/07Prof. Dr. Andreas Schmietendorf6 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)

7 WS 2006/07Prof. Dr. Andreas Schmietendorf7 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

8 WS 2006/07Prof. Dr. Andreas Schmietendorf8 Hypermediale Informationssysteme Grundaufbau einer einfachen HTML-Datei: Dokumente und Informationen Client/Server-Anwendungen

9 WS 2006/07Prof. Dr. Andreas Schmietendorf9 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    Verschachtelte Tags führen zu Fehlern  Zusätzliche Attribute bei einleitenden Tag möglich, z.B. die Ausrichtung einer Überschrift der 2. Kategorie. Bsp.: Ausgabetext  Kommentare in HTML  Sonderzeichen im Ausgabetext wie z.B. „ä“ sollten für die international richtige Darstellung durch „ä“ ersetzt werden

10 WS 2006/07Prof. Dr. Andreas Schmietendorf10 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

11 WS 2006/07Prof. Dr. Andreas Schmietendorf11 Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (1):  Textformatierung (Überschriften Text, Absätze, Zentrieren, Zeilenumbruch, Trennlienie )  Textattribute -physikalische (...,...,... -logische...,... )  Listen (z.B. numerierte und unnumerierte Listen) Äpfel …  Grafiken anzeigen (, die Angabe einer alternativen Text-Ausgabe ist möglich)  Tabellen Kopfzeile der Tabelle Datenzelle

12 WS 2006/07Prof. Dr. Andreas Schmietendorf12 Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (2):  Frames für Teilung der Seite in z.B. linken und rechten Bereich  Hypertextlinks (Start- und Zielpunkt) Links auf Dokumente:... Link innerhalb der WWW-Seite: Link auf Internetdienste: , news, ftp, gopher, telnet  Imagemaps Einteilung einer Grafik in anklickbare Bereiche

13 WS 2006/07Prof. Dr. Andreas Schmietendorf13 Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (3):  Multimedia- und Fremdprogrammreferenzen (Browserabhängig) Standard ist das OBJECT-Tag, bei MS Audio mit SOUND-Tag Java-Applets mit APPLET-Tag  Interaktive Formulare zur Dateneingabe Formulardefinition: Eingabefelder: Auswahlcheckboxen: Auswahllisten (Scrollbar): Harwarekenndaten Bestätigungsbutton:

14 WS 2006/07Prof. Dr. Andreas Schmietendorf14 Java Server Pages – JSP‘s

15 WS 2006/07Prof. Dr. Andreas Schmietendorf15  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 Java Server Pages

16 WS 2006/07Prof. Dr. Andreas Schmietendorf16 Bausteine einer JSP:  Ausdrücke der Form  Scriptlets der Form  Deklarationen der Form  Kommentare: -  Java-Anweisungen in JSP-Ausdrücken werden nicht mit einem Semikolon abgeschlossen  jeweils nur eine Anweisung! Java Server Pages

17 WS 2006/07Prof. Dr. Andreas Schmietendorf17 Hallo liebe Studenten der FHW Berlin! Es ist jetzt genau: Vergleich: System.out.print („Es ist jetzt genau „ + new java.util.Date()); Java Server Pages

18 WS 2006/07Prof. Dr. Andreas Schmietendorf18 Java Server Pages JSP-Seite unter JSP-examples:

19 WS 2006/07Prof. Dr. Andreas Schmietendorf19  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 Java Server Pages

20 WS 2006/07Prof. Dr. Andreas Schmietendorf20 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 Java Server Pages

21 WS 2006/07Prof. Dr. Andreas Schmietendorf21 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 Java Server Pages

22 WS 2006/07Prof. Dr. Andreas Schmietendorf22 Eine dynamische JSP-Seite Verwendung vordefinierter Variablen Hallo liebe Studenten der FHW Berlin! Es ist jetzt genau: Sie sind: Java Server Pages

23 WS 2006/07Prof. Dr. Andreas Schmietendorf23 Java Server Pages

24 WS 2006/07Prof. Dr. Andreas Schmietendorf24 Alternative Notation für JSP-Ausdrücke:  Ggf. besteht die Forderung XML-konformer JSP‘s -Bisherige Form: -XML-konforme Darstellung: Ausdruck  Die XML-konforme Darstellung ist case-sensitiv  Auch hier wird nur eine Java-Anweisung verwendet Java Server Pages

25 WS 2006/07Prof. Dr. Andreas Schmietendorf25 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: -Def. Einer Folge von Java-Befehlen -JSP-Scriptlet Ausgaben müssen explizit definiert werden <% String userName = request.getParameter(“user“); out.println (Sie sind“ + userName); %> Java Server Pages

26 WS 2006/07Prof. Dr. Andreas Schmietendorf26 Beispiele für JSP-Scriptlets  Schleifen 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 Java Server Pages

27 WS 2006/07Prof. Dr. Andreas Schmietendorf27 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 // … } Java Server Pages

28 WS 2006/07Prof. Dr. Andreas Schmietendorf28 Eine dynamische JSP-Seite Verwendung vordefinierter Variablen - Beispiel 3 Hallo liebe Studenten der FHW Berlin! Es ist jetzt genau: Sie sind: Sie sind: unbekannt Java Server Pages

29 WS 2006/07Prof. Dr. Andreas Schmietendorf29 Java Server Pages else-Zweig 

30 WS 2006/07Prof. Dr. Andreas Schmietendorf30 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: -JSP-Deklarationen sind nicht Bestandteil der JSP-Scriplet! Java Server Pages

31 WS 2006/07Prof. Dr. Andreas Schmietendorf31 Eine dynamische JSP-Seite Verwendung vordefinierter Variablen - Beispiel 4 Hallo liebe Studenten der FHW Berlin! Es ist jetzt genau: Sie sind: Besucher: Sie sind: unbekannt Java Server Pages

32 WS 2006/07Prof. Dr. Andreas Schmietendorf32 Java Server Pages 15. Aufruf   14. Aufruf

33 WS 2006/07Prof. Dr. Andreas Schmietendorf33 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; }%> Java Server Pages

34 WS 2006/07Prof. Dr. Andreas Schmietendorf34 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 Java Server Pages

35 WS 2006/07Prof. Dr. Andreas Schmietendorf35 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 Java Server Pages

36 WS 2006/07Prof. Dr. Andreas Schmietendorf36 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 Java Server Pages

37 WS 2006/07Prof. Dr. Andreas Schmietendorf37 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 Java Server Pages

38 WS 2006/07Prof. Dr. Andreas Schmietendorf38 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 Java Server Pages

39 WS 2006/07Prof. Dr. Andreas Schmietendorf39 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 Java Server Pages

40 WS 2006/07Prof. Dr. Andreas Schmietendorf40 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 Java Server Pages

41 WS 2006/07Prof. Dr. Andreas Schmietendorf41 Page – Seitendirektiven 1:  Klassen und Packages importieren  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“ %> Java Server Pages

42 WS 2006/07Prof. Dr. Andreas Schmietendorf42 Page – Seitendirektiven 2:  Parallele Bearbeitung von Client-Anforderungen - Standardeinstellung  errorPage – Verweis auf eigene Fehlerseiten  page-Attribut contentType (MIME-Type  PlugIn Auswahl) -Teilt dem Browser die Art des nachfolgenden Dokumentes mit -Realisierung mehrsprachiger Applikationen Java Server Pages

43 WS 2006/07Prof. Dr. Andreas Schmietendorf43 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 Java Server Pages

44 WS 2006/07Prof. Dr. Andreas Schmietendorf44 Java Server Pages

45 WS 2006/07Prof. Dr. Andreas Schmietendorf45 Java Server Pages Eine dynamische JSP-Seite Ein einfaches Login für Web-Anwendungen Login: <% if (request.getParameter("msg") !=null){ out.println (request.getParameter("msg")); } %> Login.jsp

46 WS 2006/07Prof. Dr. Andreas Schmietendorf46 Java Server Pages <% // 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

48 WS 2006/07Prof. Dr. Andreas Schmietendorf48 Java Server Pages

49 WS 2006/07Prof. Dr. Andreas Schmietendorf49 Java Server Pages Eine dynamische JSP-Seite Herzlich willkommen im Portal Sie sind Benutzer: Der Einstieg ins Portal 

50 WS 2006/07Prof. Dr. Andreas Schmietendorf50 JSP und JDBC

51 WS 2006/07Prof. Dr. Andreas Schmietendorf51 1.Erstellen einer Instanz des JDBC-Treibers 2.Erstellen einer Verbindung zur DB über die JDBC-Treiberinstanz 3.Erstellen von Anweisungen die die DB-Verbindung verwenden 4.Ausführen der entsprechender SQL-Anweisungen 5.Prüfen auf vorhandenen Inhalt des ResultSet 6.Auswerten des ResultSet 7.Einfügen in die Felder der HTML-Tabelle 8.Beenden entsprechender Java-Anweisungen 9.Schließen des Statement und der Connection JSP und JDBC

52 WS 2006/07Prof. Dr. Andreas Schmietendorf52 JSP - JDBC Zugriff Datenbankabfrage mittels JSP und JDBC ID NAME VORNAME ORT JSP und JDBC – Beispiel 1

53 WS 2006/07Prof. Dr. Andreas Schmietendorf53 <% // Schritt 1 Class.forName("org.firebirdsql.jdbc.FBDriver"); // Schritt 2 Connection myConn = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050: C:/Programme/Firebird/examples/employee.gdb","sysdba","masterk ey"); // Schritt 3 Statement stmt = myConn.createStatement(); // Schritt 4 ResultSet myResultSet = stmt.executeQuery("select * from mitarbeiter"); // Schritt 5 if (myResultSet != null) { // Schritt 6 while (myResultSet.next()) { String id = myResultSet.getString(1); String name = myResultSet.getString(2); String vorname = myResultSet.getString(3); String ort = myResultSet.getString(4); %> JSP und JDBC – Beispiel 2

54 WS 2006/07Prof. Dr. Andreas Schmietendorf54 // Schritt 7 <% // Schritt 8 } /* Ende von while */ } /* Ende von if */ // Schritt 9 und 10 stmt.close(); // Schritt 11 MyConn.close(); %> JSP und JDBC – Beispiel 3

55 WS 2006/07Prof. Dr. Andreas Schmietendorf55 Typische Probleme des aufgezeigten Vorgehens:  Keine Trennung von Darstellung und Anwendungslogik  Design der Oberfläche kann nicht separat entwickelt werden  Hohe Fehleranfälligkeit (schwer eingrenzbar)  Arbeitsteilige Softwareentwicklung ist schwierig  Geringe Lesbarkeit und daraus folgend schwer wartbar  Verbesserung der Situation mit Hilfe der JavaBeans  MVC – Model View Controller Pattern JSP und JDBC

56 WS 2006/07Prof. Dr. Andreas Schmietendorf56 JavaBeans

57 WS 2006/07Prof. Dr. Andreas Schmietendorf57  Unterstützung der Idee einer arbeitsteiligen Softwareentwicklung  Spezialisierte Zulieferunternehmen -IV-technische Komponenten -Domain- bzw. fachspezifische Komponenten  Reduktion der Erstellungszeiten von Informationssystemen  Sprachumfang von Java wurde nicht erweitert!  Montage der Komponenten in entsprechenden Bean-Builder Tools -Java-Studio (Entwicklung bei SUN aber eingestellt) -VisualAge for Java (Umfangreiche Anwendung von JavaBeans) -BDK Bean Development Kit (http://java.sun.com/beans/docs) Java Beans

58 WS 2006/07Prof. Dr. Andreas Schmietendorf58 SUN’s ursprüngliche Definition der JavaBeans „JavaBeans components, or Beans, are reusable software components that can be manipulated visually in a builder tool. Beans can be combined to create traditional applications, or their smaller web-oriented brethren, applets. In additional, applets can be designed to work as reusable Beans.“ Java Beans

59 WS 2006/07Prof. Dr. Andreas Schmietendorf59 Java Beans

60 WS 2006/07Prof. Dr. Andreas Schmietendorf60  Introspection (Selbstbeobachtung) - Beans können zur Laufzeit Auskunft zu den gebotener Funktionen und Eigenschaften geben -Auf den direkten Quellcode-Zugriff kann so verzichtet werden -Implizite Introspection-Funktion bietet alle Methoden des Bean -Explizite Introspection-Funktion über das BeanInfo Interface  Customisation (Anpassung) - Beans können über die Nutzung von Dialogen angepasst werden. -Angebot an Standard-Dialogen -Angebot an angepassten Dialogen  Event-Handling (Ereignisverarbeitung) - Verwendung des Delegation-Event-Handling-Model (Event-Sources und -Listener)  Persistenz - Möglichkeit der dauerhaften Abspeicherung alter und neuer Werte von Properties Java Beans

61 WS 2006/07Prof. Dr. Andreas Schmietendorf61  Methoden - werden genutzt um entsprechende Properties des Beans zu ändern. Alle als „public“ definierte Methoden werden in einem Bean-Builder-Tool angeboten. -Einschränkung der angebotenen Methoden über BeanInfo-Klasse -Einschränkung auch beim Import des Bean in ein Builder-Tool möglich  Properties - (Eigenschaften) - Kapseln Daten einer Instanz eines Bean und können von außen abgefragt und geändert werden Signature pattern für Properties: getProperty() / setProperty() -Simple Properties - repräsentieren einen einzelnen Wert -Indexed Properties - Array gleichen Datentyps -Bound Properties - Kombination eines Properties mit einem Event (z.B. ausgelöst nach der Änderung eines Properties) -Constrained Properties - Zustimmung zur Änderung einer Propertie von z.B. einem anderen Bean holen Java Beans

62 WS 2006/07Prof. Dr. Andreas Schmietendorf62  Softwarekomponentenmodell  JavaBeans (aber != EJB‘s)  Konfigurierbare Container -Kapselung von Anwendungslogik -Speicherung von Daten (persistieren)  Trennung von Anwendungslogik und Darstellung -Auslagerung von Logik aus den JSP‘s -Bessere Wartbarkeit -Entkopplung der Schichten Java Beans

63 WS 2006/07Prof. Dr. Andreas Schmietendorf63 Eigenschaften:  Besitzen einen leeren Konstruktor  Sollten keine öffentlichen (public) Instanzvariablen besitzen  Zustände werden über Zugriffsmethoden manipuliert  Mögliche Methodensignaturen: -setXxx -getXxx -isXxx (bei booleschen Attributen) Java Beans

64 WS 2006/07Prof. Dr. Andreas Schmietendorf64 Beispiel einer einfachen JavaBean: package cs.j2ee.beans /* Speicherung einer Fahrtroute */ public class RouteBean /* Startpunkt der Fahrtroute */ private String start public String getStart() { return start; } public void setStart (String start) { this.start = start; } Java Beans

65 WS 2006/07Prof. Dr. Andreas Schmietendorf65 Verwendung von JavaBeans in JSP‘s: oder oder als Interface bzw. Java Beans

66 WS 2006/07Prof. Dr. Andreas Schmietendorf66 Zugriff auf Attribute der JavaBean: Auslesen von Property-Werten oder Setzen von Property-Werten Java Beans

67 WS 2006/07Prof. Dr. Andreas Schmietendorf67 Steuerung des Gültigkeitsbereichs von JavaBean: Steuerung über das scope-Attribut:  page – Variablen sind nur innerhalb der aktuellen Seite gültig  session – gültig bis Browser geschlossen wird -Verwendung für die Nutzerauthentifizierung -Ablage aktuell ausgewählter Datensätze  application – für den applikationsübergreifenden Datenaustausch  request – Variablen sind für die Dauer eines Request gebunden Java Beans

68 WS 2006/07Prof. Dr. Andreas Schmietendorf68 Vorteile von JavaBeans:  Wiederverwendung von Quellcode (JSP‘s & Java-Objekte)  Verständlichkeit -Vereinfachung der Struktur von JSP‘s -Darstellung getrennt von der Java-Implementierung  Kapselung -JSP‘s interagieren mit dem Benutzer -JavaBeans realisieren die Anwendungslogik  Verwaltung zusammengehöriger Daten Java Beans

69 WS 2006/07Prof. Dr. Andreas Schmietendorf69 Servlets

70 WS 2006/07Prof. Dr. Andreas Schmietendorf70  „Server side applets, without face“  Bestandteile von Web Applicationen  Bieten die Funktionalität von CGI-Skripts  Kontext für Web Applikationen -Unterstützung mehrerer Servlets -Unterstützung mehrerer HTML-Seiten -Unterstützung mehrerer Java Server Pages  Filter für bestimmte Datentypen Java Servlets

71 WS 2006/07Prof. Dr. Andreas Schmietendorf71 Das generierte Servlet unserer ersten JSP - 1: Unter: C:\jakarta-tomcat-5\tomcat50-jwsdp\work\Catalina\localhost\schmiete\org\apache\jsp\jsp package org.apache.jsp.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; public final class beispiel1_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private static java.util.Vector _jspx_dependants; public java.util.List getDependants() { return _jspx_dependants; } Java Servlets

72 WS 2006/07Prof. Dr. Andreas Schmietendorf72 Das generierte Servlet unserer ersten JSP - 2: public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; Java Servlets

73 WS 2006/07Prof. Dr. Andreas Schmietendorf73 Das generierte Servlet unserer ersten JSP - 3: try { _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; Java Servlets

74 WS 2006/07Prof. Dr. Andreas Schmietendorf74 Das generierte Servlet unserer ersten JSP - 4: out.write(" \r\n"); out.write("Hallo liebe Studenten der FHW Berlin!\r\n"); out.write("Es ist jetzt genau:\r\n"); out.print( new java.util.Date()); out.write("\r\n"); out.write(" "); Java Servlets

75 WS 2006/07Prof. Dr. Andreas Schmietendorf75 Das generierte Servlet unserer ersten JSP - 5: } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context); }}} Java Servlets

76 WS 2006/07Prof. Dr. Andreas Schmietendorf76  Alles was mit JSPs realisiert werden kann, kann auch unter Verwendung von Servlets erreicht werden  Potentielle Nachteile von JSPs: -Mischung von JSP und HTML-Code wird bei komplexen Java- Strukturen unübersichtlich -Mittels der Variable out (Typ javax.servlet.jsp.JspWriter) können keine Binärdaten ausgegeben werden (z.B. Bilder) -JSP können HTML-Dokumente erzeugen, deutlich schwieriger ist es bei anderen Datenformaten -Fehler werden häufig erst zur Laufzeit erkannt  Servlets stärker in der Funktionalität, als in der Darstellung Java Servlets

77 WS 2006/07Prof. Dr. Andreas Schmietendorf77 Ein selbst erzeugtes Servlet - 1: package cs.j2ee.servlets; import java.util.Date; import java.io.PrintWriter; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; public class HelloWorld extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Java Servlets

78 WS 2006/07Prof. Dr. Andreas Schmietendorf78 Ein selbst erzeugtes Servlet - 2: // set the contentType response.setContentType("text/html;charset=ISO "); // get the PrintWriter PrintWriter out = response.getWriter(); // create content StringBuffer content = new StringBuffer(); content.append(" "); content.append(" Ein selbst geschriebens Servlet "); Java Servlets

79 WS 2006/07Prof. Dr. Andreas Schmietendorf79 Ein selbst erzeugtes Servlet - 3: content.append(" "); content.append(" Hallo Studenten der FHW Berlin "); content.append(" Es ist jetzt genau "); content.append(new Date()); content.append(" "); // write out out.print (content.toString()); } Java Servlets

80 WS 2006/07Prof. Dr. Andreas Schmietendorf80 Schritte zur Ausführung des Servlets:  Übersetzen des Servlets mittels eines Java-Compilers -Verwendung einer entsprechende Entwicklungsumgebung -Verwendung eines entsprechende Build-Files (Tool Ant)  Anlegen einer entsprechenden Verzeichnisstruktur im Web-Server -/WEB-INF/sources – Java Quelldateien -/WEB-INF/classes – Java Klassendateien -/WEB-INF/lib – benötigte Klassenbibliotheken -/deploy_lib – Klassen die nur zur Übersetzung benötigt werden  Web Deployment Decsiptor (web.xml) erstellen bzw. bearbeiten Java Servlets

81 WS 2006/07Prof. Dr. Andreas Schmietendorf81 Java Servlets

82 WS 2006/07Prof. Dr. Andreas Schmietendorf82 Der Web Deployment Descriptor - 1: Client/Server-Programmierung FHW Berlin Java Servlets

83 WS 2006/07Prof. Dr. Andreas Schmietendorf83 Der Web Deployment Descriptor - 2:  Für jedes Servlet benötigen wir ein -Tag  Servlet wird bereits bei der Initialisierung geladen  Prio 1-10 (1 - zuerst geladen, 10 – zuletzt geladen) WelcomeServlet cs.j2ee.servlets.HelloWorld 2 Java Servlets

84 WS 2006/07Prof. Dr. Andreas Schmietendorf84 Der Web Deployment Descriptor - 3:  Verknüpfen des Servlets mit einer URL  Servlets liegen physikalisch an einem anderen Ort!  Keine relativen Adressen innerhalb des HTML-Codes  Verweise relativ zur virtuellen Adresse des Servlet setzen!! WelcomeServlet /servlets/HelloWorld Java Servlets

85 WS 2006/07Prof. Dr. Andreas Schmietendorf85 Java Servlets Java Server PagesServlets Übersetzungszeitpunkt Zur Laufzeit von der JSP- Engine erzeugt, kann ggf. vorkompiliert werden. Muss manuell übersetzt werden. Bindung an URL Unter dem tatsächlichen Pfad, innerhalb der Web-Applikation erreichbar. Wird über den Web Deployment Descriptor an eine oder mehrere symbolische URL‘s gebunden. Vordefinierte Variablen Stehen direkt zur Verfügung.Müssen über Methoden aus dem Request bzw. Response gebunden werden. HTML-Code Kann direkt eingefügt werden.Muss über print() und write() ausgegeben werden. Dokumenttypen Beschränkt auf textbasierte Dokumente. Unterstützt sowohl Text-, als auch Binärformate. Services Beschränkt auf eine einzige Service-Methode. Eigene Servicemethoden für jeden Request-Typ (PUT, GET, POST)

86 WS 2006/07Prof. Dr. Andreas Schmietendorf86 Idee der Tag-Bibliotheken (Taglibs)

87 WS 2006/07Prof. Dr. Andreas Schmietendorf87 Verwendung eigener Tags  Vorraussetzungen für eigen definierte Tags: -Implementierung der Funktionalität  Tag-Handler -Package: javax.servlet.jsp.tagext.* -Zusammenfassen in Tag-Bibliotheken  Steuerung des Lebenszyklus eines Tag -doStartTag() – Aufruf bei einem öffnenden Tag (Initialisierung) -doAfterBody() – Aufruf unmittelbar vor dem schließenden Tag -doEndTag() – Aufruf nach dem schließenden Tag (Freigabe)

88 WS 2006/07Prof. Dr. Andreas Schmietendorf88 package cs.j2ee.tags; … import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class SimpleTag extends TagSupport(){ public int doStartTag(){ try { JspWriter out = pageContext.getOut(); out.print (new Date()); } catch (IOException ioex){ ioex.printStackTrace(); } return (SKIP_BODY); } Beispiel eines Tag-Handlers

89 WS 2006/07Prof. Dr. Andreas Schmietendorf89 Festlegung des zum Tag-Handler korrespondierenden Tags:  xml-Datei mit der Extension *.tld -Festlegung der taglib-Version -Festlegung der unterstützten JSP-Version -Festlegung von Namensräumen für die Taglibs -Mapping zwischen Java-Klasse und Tag herstellen  Reservierte Namensräume: -Java, javax, jsp, jspx, servlet, sun, sunw -Leere Präfixe sind ebenfalls nicht erlaubt Tag Library Descriptor

90 WS 2006/07Prof. Dr. Andreas Schmietendorf j2ee Example Tag date cs.j2ee.tags.SimpleTag … Tag Library Descriptor

91 WS 2006/07Prof. Dr. Andreas Schmietendorf91 Einbinden des TLD in die eigene Webapplikation:  Direktes Einbinden in das Webverzeichnis -Sichtbar unter der URL des Webauftritts -http://localhost:8080/schmietendorf/tldshttp://localhost:8080/schmietendorf/tlds  Einbindung des TLD in den Deployment Descriptor -Verfügbar unter einer virtuellen URL (WEB-INF-Ordner) -Eintrag in die entsprechende web.xml & -Tag-Bibliotheken bleiben dem Benutzer verborgen  Verwendung in der JSP Tag im HTML-Body: Tag Library Descriptor

92 WS 2006/07Prof. Dr. Andreas Schmietendorf92  JSTL – JavaServer Pages Standard Tag Library -Standard-API für Tags von SUN -URL:  Apache Jakarta Taglibs -Benchmarking, Logging, Cache, JMS, … -URL:  … Verfügbare Taglibs


Herunterladen ppt "WS 2006/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen J2EE – Web-Applikationen, Java Server Pages, JavaBeans und Servlets."

Ähnliche Präsentationen


Google-Anzeigen