Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 248 1 Die Syntax der deutschen Sprache wird durch die Rechtschreibregeln bestimmt, wie sie im Duden stehen. Zur Syntax gehören sowohl die Vereinbarung über eine bestimmte Schreibweise der Worte, als auch die Vereinbarung zur Zeichensetzung im Satzaufbau. Vereinbarungsgemäß geschriebene Worte bezeichnen wir als korrekt geschrieben. Die Satzzeichen helfen uns beim Verständnis. Bsp.: „Zehn Finger habe ich, an jeder Hand fünf und zwanzig an Händen und Füßen.“ Oder „Zehn Finger habe ich an jeder Hand, fünfundzwanzig an Händen und Füßen.“ Die Semantik befasst sich mit der Bedeutung der Zeichen oder Zeichenfolgen, eigentlich mit der Bedeutung der Worte in unserer Sprache. Zur Semantik gibt es kaum feste Vereinbarungen, besonders nicht in der Umgangssprache, wo sich die Bedeutung durch kulturhistorische Einflüsse verschieben kann (Droschke oder Taxi). In der Wissenschaft versucht man die Begriffe in ihrer Semantik durch eindeutige Definitionen festzuschreiben. In der Umgangssprache hilft meist der Kontext. (ein Bit im Computer oder ein Bit im Glas). 2 Struktur Möglichst im Format DIN A6. Natürlich befördert die Post auch andere Objekte, aber meistes zu besonderen Preisen. Inhalt Ihre eigentlichen Urlaubsgrüße (Wetter gut, Essen gut, Freundschaft gut) und auf der anderen Seite ein schönes Foto, damit sich ihre Eltern vorstellen können, wie schön ihr Urlaubsort aussieht. Gestaltung Sie ist für die ordnungsgemäße Zustellung wichtig. Links stehen der Inhalt und rechts die Adresse. Meistens sind dafür schon Zeilen vorgedruckt. Bei Postkarten aus dem Ausland nach Deutschland sollte neben der Adresse auch das Zielland „Germany“ angegeben sein. 3 Wir wollen einen WebService für die Datenkommunikation mit den Niederlassungen der ACI GmbH aufbauen und dabei die Software „Tomcat“ als Server zum Betrieb der WebServices nutzen. Zu Aufbau und Funktion von WebServices wurde im 3. Kapitel noch nichts gesagt. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 4 Als OSI-Modell (Open Systems Interconnection Model) wird das Schichtenmodell der Internationalen Standardisierungsorganisation (ISO) bezeichnet. Die Aktivitäten zur Kommunikation zwischen Sender und Empfänger wurden dazu auf sieben aufeinander aufbauende Schichten (layer) aufgeteilt. Für jede Schicht existiert eine exakte Beschreibung der zu erbringenden Leistungen. Man unterscheidet Anwendungsschicht, Darstellungsschicht, Sitzungsschicht, Transportschicht, Vermittlungsschicht, Sicherungsschicht und Übertragungsschicht. Beim Senden durchläuft die Nachricht die Schichten von der Anwendungsschicht bis zur Übertragungsschicht und wird dabei immer weiter ergänzt („verpackt“) um technische Informationen, wie sie in dem jeweils anzuwendenden Protokoll vereinbart sind. Nach der physischen Übertragung wird die Nachricht beim Empfänger wieder Schicht für Schicht von der Übertragungsschicht bis hin zur Anwendungsschicht „ausgepackt“, von den notwendigen technischen Details bereinigt und in einer dem Anwender verständlichen Form bereitgestellt. 5 Die eigentliche Nachricht des Senders für den Empfänger muss für die technische Übertragung mit zusätzlichen Informationen (Art der Codierung, Adresse, Reihenfolge der Pakete, Abrechnungsdaten, Prüfsummen etc.) ergänzt („verpackt“) werden. Nach dem Empfang einer Nachricht muss der Empfänger die Nachricht nach den gleichen Regeln wieder auspacken. Über diese Regeln muss Einverständnis bestehen. Das Einverständnis basiert auf einem gemeinsamen Protokoll. Wir versenden Briefe allgemein (laut DIN-Protokoll) auf A4-Bögen, zusammengefaltet und in Umschlägen verpackt. Deshalb wird ein Briefumschlag nach dem Empfang auf einer Seite geöffnet. So bleibt der A4-Bogen als Inhalt unverletzt. Würden wir Briefe auf Papierschnipsel schreiben und diese im Umschlag versenden, könnten wir nach dem Empfang den Umschlag auch irgendwie in der Mitte durchreißen. Schlimmstenfalls hätten wir ein paar Schnipsel mehr. 6 Unbewusst sind wir uns einig, dass wir unsere Nachrichten in deutscher Sprache formulieren und sie in einer der Größe des Raumes angemessenen Lautstärke versenden, wobei der Sender den Blickkontakt zum Empfänger sucht. Bewusst vereinbart wird das Handzeichen der Schüler. Sie melden sich und erhalten dann durch ein Zeichen des Lehrers die „Sendeerlaubnis“. 7 „Wenn einer redet, haben die anderen zu schweigen.“ So lautet ein Kommunikationsprotokoll unserer Gesellschaft. Der Lehrer erteilt ihnen die Redeerlaubnis. Wenn das nicht eingehalten wird, reden alle durcheinander. Um seine Nachricht zum Empfänger zu bringen (um sich Gehör zu verschaffen) redet jeder Sender immer lauter, versucht vielleicht mit Gesten auf sich aufmerksam zu machen oder mit Gewalt andere zum Schweigen zu bringen. Und alles versinkt schließlich im Chaos. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 263-264 1 Verwenden Sie im Menü des Browsers den Menüpunkt „Ansicht/Quelltext anzeigen“. Aktivieren Sie gegebenenfalls im verwendeten Editor den Zeilenumbruch. Das Ergebnis der Anzeige wird hier nicht dargestellt, da es jederzeit reproduzierbar ist. Versuchen Sie in dem Quelltext die bekannten HTML-Strukturen <HEAD> und <BODY> sowie das Formular <FORM> zu erkennen. 2 Text-Datei aus MS-Word è HTML aus MS-Word ç <html xmlns:o=”urn:schemas-microsoftcom:office:office” xmlns:w=”urn:schemas-microsoftcom:office:word” xmlns=”http://www.w3.org/TR/REC-html40”> <head> <! Plus diverse meta-Tags > <title>HTML aus MS-Word</title> Generierter Text in <xml> HTML, stark gekürzt, gekennzeichnet durch den Hinweis: „plus diverse…“ <! Plus diverse Parametern in XML> </xml> <style> <! Plus diverse Style Definitions > </style> </head> <body lang=DE style=’tab-interval:35.4pt’> <div class=Section1> <p class=MsoNormal>HTML aus MS-Word</p> </div> </body> </html> Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 3 Ein HTML-Quelltext ist stets eingeschlossen in die <HTML>-Tags und enthält als Hauptbestandteile den <HEAD> und den <BODY>. <!doctype html public “-//W3C//DTD HTML 4.01 Transitional//EN”> <html> <head> < title>Lösung</title> <meta name=”author” content=”Ringhand”> <meta name=“keywords“ content=“Grundstruktur“> </head> <body text=”#000000” bgcolor=”#FFFFFF” link=”#FF0000”> Anzeige </body> </html> 4 Das World Wide Web Consortium (abgekürzt: W3C) ist das zentrale Gremium zur Festlegung von Techniken für das World Wide Web. Beispiele für Empfehlungen durch das W3C sind HTML, XML und CSS. Auch wenn das W3C zahlreiche De-facto-Standards hervorgebracht hat, so ist das W3C doch keine international öffentlich und politisch anerkannte Organisation und daher nicht berechtigt, offizielle Normen festzulegen. 5 Elemente eines HTML-Quelltextes bezeichnet man als „Tags“ und gekennzeichnet werden sie durch den Einschluss in spitze Klammern: <HTML-Tag>. Ob die Schreibweise groß oder klein ausfällt, ist unerheblich. 6 HTML bietet zahlreiche Möglichkeiten der Textformatierung. Man kann Schriftart, Schriftgröße, Schriftschnitt und Schriftfarbe ähnlich wie bei der Zeichenformatierung unter Microsoft Word wählen. Auch Absätze sind definierbar und formatierbar. 7 Ein Link steht für Hyperlink, einer Verknüpfung aus einer HTML-Datei zu einer anderen HTML-Datei oder für eine Dateiverknüpfung als Verweis auf eine Datei. 8 HTML bietet zahlreiche Möglichkeiten zur farblichen Gestaltung. Die Schriftfarbe oder die Hintergrundfarbe können gewählt werden. Die Farbe wird nach dem RGB-Schema als sechsstellige Hexadezimalzahl angegeben (#FF0000 = rot), oder durch englischsprachige Konstante: red 9 <TABLE> </TABLE> Beginn und Ende der Tabelle <TR> </TR> Beginn und Ende einer Tabellenzeile (row) <TD> </TD> Beginn und Ende einer Tabellenzelle innerhalb der Zeile 10 Ein Stylesheet ist eine abgegrenzte Formatdefinition. Wichtig ist die Trennung von Inhalt und Darstellung. Mit Stylesheets ist eine Arbeitsteilung bei der Web-Entwicklung möglich. Designer legen die Formatierung fest und Content Manager bestimmen den Inhalt. Beispiele für Stylesheet-Sprachen sind CSS und XSL. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 11 Formulare dienen unter HTML zur Kommunikation der Webseite mit einem Anwender. Sie vereinfachen die Erhebung von Daten <INPUT-Tag>, sorgen für Vollständigkeit sowie Datenintegrität und schützen vor Mehrdeutigkeiten durch Auswahllisten, die bei freier Wortwahl oder in einem formlosen Antrag auftreten können. Leider existiert in HTML keine Möglichkeit, Formularinhalte selber auszuwerten. Formulare in HTML können nur Inhalte sammeln und müssen diese Daten dann an andere Instanzen weiterleiten (Servlet oder PHP-Programm). Mit einem Formular kann man eine E-Mail versenden oder die Daten zur Auswertung an Programme auf dem Server übergeben. 12 In jedem HTML-Formular muss im Pflichtattribut „action“ angegeben werden, an welchen Uniform Resource Identifier (URI, deutsch: einheitlicher Bezeichner für Ressourcen) die Formulardaten beim Absenden des Formulars zu übertragen sind. Der URI wird hauptsächlich eine Referenz auf ein Programm auf dem Server-Rechner sein, das die Formulardaten weiterverarbeitet und damit die Aktion ausführt. Auch die Angabe eine E-Mail-Adresse als Wert für das Attribut „action“ ist möglich, z. B.: action=mailto:[email protected] Die Angabe erfolgt zusammen mit den Attributen: • method = post • enctype = text/plain Bei Angabe von action = “mailto: …” wird der Browser die Formulardaten an die angegebene E-Mail-Adresse versenden. 13 Nach der Empfehlung des W3-Konsortiums ist die get-Methode dann zu wählen, wenn das auswertende Programm die Daten nur zur Ablaufsteuerung benötigt, z. B. zur Anmeldung oder für eine Suche. Mit der post-Methode können größere Datenmengen übermittelt werden. Die Übertragungsmethode von Google ist aus dem Quelltext der Anzeige nicht ablesbar. Erkennbar ist aber (siehe Aufgabe 1), dass der Browser die Formulardaten als Parameter an die Aufrufadresse anhängt. Die Angabe der get-Methode ist dabei nicht zwingend erforderlich, da get als Standardeinstellung vordefiniert ist. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 14 Das Herkunftsland Deutschland (hl=de), der Suchbegriff (q=Westermann) und die Art der Anfrage (btnG=Google-Suche) werden übermittelt. Diese Anzeige ist nur ganz kurz sichtbar nach Betätigung des Such-Buttons und vor Anzeige der Ergebnisse. 15 Auch die Angabe eine E-Mail-Adresse als Wert für das Attribut „action“ ist möglich, z. B.: action=mailto:[email protected] Die Angabe erfolgt zusammen mit den Attributen method = “post” und enctype = “text/plain”. Bei Angabe von action = “mailto: …” wird der Browser die Formulardaten an die angegebene E-Mail-Adresse versenden. 16 Es gibt drei Möglichkeiten zur Darstellung einer Auswahlliste: 1. Radio-Buttons = alternative Auswahl: Hier kann nur ein Element ausgewählt werden. <p><input type=“radio” name=“Ktyp” value=“Stammkunde”> Stammkunde<br> <input type=“radio” name=“Ktyp” value=“Neukunde”> Neukunde<br> <input type=“radio” name=“Ktyp” Innerhalb eines Absatzes <p> können mehrere Radio-Buttons angezeigt werden. Nur ein Button kann ausgewählt werden. Der ausgewählte Wert (value =) wird dem Parameter zugeordnet. value=“Mitarbeiter”> Mitarbeiter </p> Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 2. Checkboxes = Mehrfachauswahl. Hier können gleichzeitig mehrere Elemente ausgewählt werden. <p> <input type=“checkbox” name=“Agrup” value=“hw”> Hardware<br> <input type=“checkbox” name=“Agrup” value=“sw”> Software<br> Innerhalb eines Absatzes <p> können mehrere Auswahlfelder angezeigt werden, wovon mehrere ausgewählt werden können. Die ausgewählten Werte (value =) werden dem Parameter zugeordnet. <input type=“checkbox” name=“Agrup” value=“li”> Literatur </p> 3. Listboxes = Listenauswahl: Hier kann aus einer Liste nur ein Element ausgewählt werden <select name=“feld5”> <option value=“1”>Anton</option> <option value=“2”>Berta</option> <option value=“3”>Caesar</option> <option value=“4”>Dorle</option> In einer Listbox werden die angegebenen Werte zur Auswahl gestellt. Nur ein Wert kann ausgewählt werden. Der ausgewählte Wert (value =) wird dem Parameter zugeordnet. </select> 17 Es wird ein <INPUT>-Tag mit dem type=”button” dazu benötigt. <INPUT type=“button” name=“Objektname” value=“Beschriftung” onclick=“Besondere Aktion bei Betätigung”> 18 Der eingegebene Wert wird für die Übermittlung diesem durch den Namen identifizierten Formularelement zugeordnet und in der Form „Elementname=Eingabewert“ übertragen. Seite 267 1 Eine Metasprache ist eine übergeordnete Sprache, d. h. eine Sprache zur Beschreibung anderer Sprachen. Durch die Metasprache wird die Syntax der anderen Sprache formal korrekt beschrieben. 2 Die Backus-Naur-Form, kurz BNF, ist eine kompakte formale Metasprache unter Verwendung folgender Symbole: Klammern, Listentrennzeichen, Striche und Wiederholungszeichen [ ] { } ; | ... . Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 3 4 XML steht für „Extensible Markup Language“ und ist wie HTML aus der Metasprache SGML abgeleitet. Die Sprache SGML steht für „Standard Generalized Markup Language“ und wurde 1986 standardisiert als ISO 8879. 5 Die Gültigkeit von XML-Dokumenten nach einer Datenübertragung kann überprüft werden, wenn das Format mittels einer Grammatik, einer Dokumenttypdefinition (DTD) oder eines XML-Schemas definiert ist. So sind Übertragungsverluste oder Verfälschungen bei der Dokumentenübermittlung erkennbar. Standardmäßig gilt ein XML-Dokument als gültig, wenn es wohlgeformt ist, den Verweis auf eine Grammatik enthält und das durch die Grammatik beschriebene Format einhält. 6 Die DTD-Datei enthält eine Dokumenttypdefinition zu einer XML-Datei, aus der die Datentypen der einzelnen Elemente ablesbar sind. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 7 Alternativ zur DTD kann auch ein so genanntes XML-Schema zur Beschreibung der Struktur eines XML-Dokuments verwendet werden. XML-Schema wurde vom W3C als neuer Standard entwickelt, weil sich mit der DTD die Datenstruktur oft nur unzureichend beschreiben lässt, da Angaben über Datentypen und Wertebereiche gar nicht oder nur minimal vorhanden sind. Dies macht sich insbesondere bei der Verwendung von XML als Datenaustauschformat negativ bemerkbar, was z. B. bei vielen E-Business-Lösungen der Fall ist. Das XML-Schema erweitert die Sprachmöglichkeiten von DTDs erheblich und gestattet die Definition von eigenen Datentypen, das Ableiten neuer Datentypen aus vorhandenen, die Wiederverwendung von Datentypen aus anderen Schemata sowie die eindeutige Spezifizierung der Dokumentstrukturen. Ein weiterer Vorteil von XML-Schema gegenüber DTDs besteht darin, dass ein XML-Schema selbst in der XML-Syntax verfasst wird. 8 Für die Schaffung wohlgeformter XML-Dokumente gibt es einige Regeln: • Jedes Dokument besitzt genau ein Wurzelelement. • Alle Elemente mit Inhalt haben eine Beginn- und eine End-Kennung (tags). • Leere Elemente ohne Inhalt können auch nur aus einer Kennung (tag) bestehen, die jedoch mit einem Slash am Ende ( /> ) abschließt. • Beginn- und End-Kennungen (tags) sind immer paarig und können ineinander geschachtelt sein. • Ein Element darf nicht mehrere Attribute mit gleichem Namen besitzen. 9 Das „Verstehen“ einer XML-Datei im menschlichen Sinne ist eigentlich nicht notwendig, denn XML-Dateien dienen allein der Kommunikation von Computer zu Computer. Für die formal korrekte Interpretation der XML-Dateiinhalte sind im Computer entweder die Dokumententypdefinition (DTD) oder ein XML-Schema notwendig. 10 Bei der Benutzung von XML gilt es zu beachten, dass XML nicht allein verwendet werden kann, sondern auf einen Parser angewiesen ist, vergleichbar einem Interpreter bei prozeduralen Programmiersprachen. Bei XML ist ein Parser diejenige Software, die XML-Strukturen ausliest, analysiert und nachgeschalteter Software zur Verfügung stellt. Ein XML-fähiger Browser besitzt beispielsweise ein eigenes Softwaremodul, das den Parser darstellt. Im Parser wird die Baumstruktur der XML-Daten analysiert. Ein erfolgreiches Analysieren dieser Struktur ist die Voraussetzung für eine korrekte Darstellung bzw. Wiedergabe der Daten. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 11 Einer XML-Datei fehlen Angaben darüber, wie die Daten darzustellen sind. Die Daten sind völlig unabhängig vom Ausgabemedium (Bildschirm, Display, Lautsprecher, Drucker), sie enthalten keinerlei Angaben zur Formatierung (Schriftart, Schriftgröße, Farben usw.). Der Browser besitzt im Gegensatz zu HTML-Daten, für deren Darstellung angegebene Formatwerte existieren, bei XML-Daten keine Anhaltspunkte zu deren Darstellung. Bevor XML-Daten präsentiert werden können, müssen mit Hilfe einer StyleSprache Festlegungen zur Formatierung dieser Daten getroffen werden. Dazu stehen heute zwei Formatsprachen zur Verfügung: CSS und XSL. CSS (Cascading Style Sheets), auch für HTML eingesetzt, ist dabei die Standardsprache. Sie genügt, um einem Webbrowser mitzuteilen, wie er die Elemente einer XML-Datei darstellen soll. XSL (Extensible Stylesheet Language) ist dagegen wesentlich mächtiger und enger an den Konzepten von XML orientiert. 12 Mit Hilfe von XSLT kann man XML-Daten in HTML transformieren – und zwar serverseitig, also bevor der Webbrowser in die Darstellung überhaupt einbezogen ist. Das hat den Vorteil, dass XML in Verbindung mit XSL auch mit älteren Webbrowsern funktioniert, die gar kein XML kennen. Der Webserver muss eine entsprechende Schnittstelle besitzen, die das Einbinden eines XSL/XSLT-verarbeitenden Softwaremoduls erlaubt. Seite 271 1 Die Eingabe der Artikelnummer führt im Anwendungssystem zu den Daten des Artikels, die Artikelnummer identifiziert den Artikel. Die Artikelnummer besteht aber aus 13 Zahlen, bei deren Eingabe leicht Fehler auftreten können. Der Mensch macht im Durchschnitt auf 100 Zeichen Eingabe einen oder mehr Fehler. Auch Eingabegeräte, wie z. B. Barcodeleser, können Eingabefehler verursachen. Eine fehlerhafte Artikelnummer kann zu zwei Wirkungen führen: Entweder es wird der falsche Artikel angesprochen oder das System weist die Artikelnummer ab. Scheinbar gibt es den Artikel nicht, obwohl er im Sortiment ist und nur die eingegebene Artikelnummer falsch war. Letztere Wirkung eines Fehlers erscheint sogar schlimmer als die erste Wirkung zu sein. Deshalb wird die Eingabe einer Artikelnummer immer zuerst formal geprüft, und nur zulässige Artikelnummern gehen zur Suche weiter an das Anwendungssystem. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 2 PLZ Postleitzahl, ohne Prüfziffer BLZ Bankleitzahl, ohne Prüfziffer ISBN Internationale Standard-Buchnummer, mit Prüfziffer ISSN Internationale Standardnummer für Zeitschriften, mit Prüfziffer Deutsche Personalausweisnummern mit Prüfziffer IBAN Internationaler Standard für Kontonummer, mit Prüfziffer Deutsche mit Prüfziffer Rentenversicherungsnummer ISIN Internationaler Standard zur Identifikation von Wertpapieren, mit Prüfziffer 3 JavaScript ist eine Programmiersprache für einfache, in HTML eingebundene Anwendungen, die clientseitig ausgeführt werden (z. B. Reaktion auf einen Mausklick des Benutzers). JavaScript wird mit dem Tag <SCRIPT language=“JavaScript”>Quelltext</SCRIPT> in den Kopfbereich <HEAD> ... </HEAD> der HTML-Dokumente eingefügt. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 4 Hierzu findet man z.B. in der Hilfe zu den Mozilla-Firefox-Einstellungen folgende Hinweise: JavaScript aktivieren JavaScript ist eine Skriptsprache, die häufig dazu verwendet wird, um Webseiten interaktiv zu gestalten. Jedoch kann JavaScript auch einige „nervige“ Verhaltensweisen von Webseiten begünstigen. Um JavaScript zu deaktivieren, wählen Sie diese Einstellung ab. Beachten Sie jedoch, dass das Deaktivieren von JavaScript dazu führen kann, dass einige Webseiten nicht mehr korrekt funktionieren. Um detailliert zu regeln, was JavaScript können und nicht können soll, klicken Sie auf „Erweitert“. Erweiterte JavaScript-Einstellungen • Existierende Fenster verschieben oder deren Größe ändern: Wählen Sie diese Einstellung ab, um das Verschieben oder die Größenänderung von Fenstern durch Skripte zu verbieten. • Fenster vor oder hinter andere Fenster legen: Wählen Sie diese Einstellung ab, um sicher zu gehen, dass Skripte keine Fenster vor oder hinter andere Fenster legen können. • Das Kontextmenü deaktivieren oder ersetzen: Wählen Sie diese Einstellung ab, um zu verhindern, dass Webseiten das Firefox-Kontextmenü deaktivieren oder verändern können. • Statusleiste ausblenden: Wählen Sie diese Einstellung ab, um zu erzwingen, dass die Statusleiste in Pop-up-Fenstern immer angezeigt wird. • Statusleistentext ändern: Wählen Sie diese Einstellung ab, um Änderungen am Statusleistentext zu deaktivieren, wie z. B. das Anzeigen von Lauftext oder das Verstecken von Linkadressen, während der Cursor über einem Link ist (Quelle: Mozilla Firefox Hilfe). 5 Der Inhalt der Skript-Datei ist in diesem Fall durch den Empfänger nicht einsehbar. Der Empfänger kann so nicht ermitteln, was Sie mit der Skript-Datei vorhaben, wodurch eher das Vertrauen des Empfängers erschüttert werden kann. Ein Sicherheitsvorteil wird nicht erreicht, da auch die im HTML einsehbare Script-Datei durch den Empfänger nicht verändert werden kann. 6 Der Begriff „Sandkasten“ bedeutet hier, dass für das JavaScript eine besondere Laufzeitumgebung geschaffen wird. Das JavaScript wird vom Rest des Systems abgeschirmt, quasi in den Sandkasten gesetzt, in dem es einerseits keinen Schaden anrichten kann und andererseits seine Wirkungen aufgezeichnet werden können. Leider bietet JavaScript auch breiten Raum für Missbrauch. Deshalb werden die JavaScript-Anwendungen in den „Sandkasten“ verbannt, aus dem heraus sie möglichst wenig Zugriff auf kritische Ressourcen haben. So erhält JavaScript standardmäßig nur Zugriff auf die Objekte des Browsers und kann nicht auf das Dateisystem zugreifen, d. h. keine Dateien lesen oder schreiben. JavaScript kann auch keine Grundeinstellungen des Browsers beeinflussen. Besondere Aktionen, wie das Schließen des Browserfensters, erfordern die explizite Erlaubnis des Benutzers. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 7 JavaScript ist eine moderne, dynamisch typisierte, objektorientierte aber klassenlose Skriptsprache. Obwohl JavaScript im Grunde eine funktionale Sprache ist, lässt sich mit ihr sowohl prozedural als auch objektorientiert programmieren. JavaScript wurde ursprünglich von Sun Microsystems und Netscape in Kooperation entwickelt. JavaScript ist grundlegend verschieden von der Programmiersprache Java, die ebenfalls von Sun Microsystems stammt. Die Namensgleichheit erklärt sich aus Marketinggründen. Man wollte eine Verbindung mit den damals sehr populären Java-Applets herstellen. Die Syntax von JavaScript wurde aus diesem Grund weitgehend der von Java angeglichen. 8 Eine JavaScript-Funktion ruft man mit ihrem Funktionsnamen auf. Dahinter folgt immer ein Paar aus öffnender und schließender runder Klammer. Wenn die Funktion keine Parameter erwartet, folgt nach der öffnenden Klammer gleich die schließende Klammer. Beispiel: <form name=“Formular” action=“” method=“post” onsubmit=“JSFunktion( )”> </form> 9 Parameter werden als Objekte verstanden, durch ihren Namen identifiziert und als deren Methode angesprochen. Werden mehrere Parameter übergeben, trennt man diese durch Kommata. Beispiel: <form name="Formular" action=""> <p>Geben Sie einen Wert ein: </p> <input type="text" name="Eingabe"> <input type="button" value="testen" onclick="JSFunktion(document.Formular.Eingabe.value)"> </form> 10 HTML kennt keine Variablen. Man kann daher aus JavaScript auch keine Werte an HTML zurückgeben. Mit der doument.write(...)-Anweisung kann man aber aus einem JavaScript direkt in den Ausgabebildschirm schreiben. Innerhalb eines Formulars kann der Rückgabewert einer Funktion in einem eigens für diesen Zweck eingerichteten Eingabefeld durch den value=“JSFunktion()“ Parameter angezeigt, aber dann auch überschrieben werden. Allgemein kann aber eine JavaScript-Funktion in einer anderen JavaScriptFunktion aufgerufen werden. Die Funktion muss ihr errechnetes Ergebnis an die aufrufende Instanz zurückgeben. Dazu wird allgemein in der aufrufenden Funktion eine Variable definiert, die diesen Rückgabewert speichert. 11 Ein alert ist ein „Alarm“. Die alert-Methode zum Windows-Objekt zeigt einen Text in einem eigenen Meldungsfenster an. Beispiel: window.alert("Hello World"); Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 276 1 Die Verwendung von Applets (applet = application snippet = Anwendungsschnipsel) muss nicht gesondert vereinbart werden. Sie liegen als vorübersetzte Byte-Code-Dateien auf dem Server bereit. Applets werden (ähnlich wie Bilder oder andere Objekte) mit einem speziellen Tag <APPLET Attribute></APPLET> in HTML-Dokumente eingefügt. In HTML 4.0 wird dies verallgemeinert und statt des <APPLET>-Elements das <OBJECT>-Element vorgeschrieben: <OBJECT Attribute> </OBJECT> 2 Das Applet wird als vorübersetzter Byte-Code übertragen und auf dem Client-Rechner durch die Java-Virtual-Maschine (JVM) ausgeführt. 3 Applets werden mit dem Tag <APPLET Attribute></APPLET> in HTMLDokumente eingefügt. In HTML 4.0 wird dies verallgemeinert und statt des <APPLET>-Elements das <OBJECT>-Element vorgeschrieben: <OBJECT Attribute> </OBJECT> 4 Das Applet kann eine eigene Benutzeroberfläche innerhalb der in HTML beschriebenen Umgebung erstellen. Die Größe dieses Arbeitsbereiches für die Benutzeroberfläche wird durch die Parameter (Attribute) widht=“xxxx“ und height=“yyyy“ angegeben. Zur Programmierung des Applets gehören für die Gestaltung der Benutzeroberfläche daher auch eigene Textfelder zur Eingabe und Ausgabe sowie Schaltflächen Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 5 Attribut zu <APPLET> Bedeutung code Das Attribut code=“aaa“ benennt das auszuführende Java-Applet, das normalerweise die Dateinamenerweiterung .class hat. In diesem Attribut wird nur der Dateinamen angegeben, auch, wenn sich das Applet in einem anderen Verzeichnis oder auf einem anderen Server befindet. Codebase Das Attribut codebase=“bbb“ benennt die Herkunft des Applets, falls es sich in einem anderen Verzeichnis als die einbindende HTMLDatei oder auf einem anderen Server befindet. Mit codebase=“../“ adressieren man das Verzeichnis oberhalb des aktuellen Verzeichnisses. Alt Falls das Java-Applet beim Anwender nicht ausführbar ist, kann mit der Angabe alt=“ttt“ einen Alternativtext definiert werden. Der Text muss in Anführungszeichen stehen. Er wird nur dann angezeigt, wenn das Applet nicht anzeigbar ist. Width, high Mit width bestimmt man die Anzeigebreite des Java-Applets, mit height die Höhe. Angegebene Prozentwerte beziehen sich auf die Breite bzw. Höhe der zur Verfügung stehenden Anzeigefläche. Parm Zwischen dem einleitenden <APPLET>-Tag und dem abschließenden </APPLET> stehen eventuell notwendige Parameter, die dem Applet beim Aufruf übergeben werden. Jeder Parameter wird namentlich zugeordnet und durch <PARM name=“abc“ value=“xxx“> angegeben. Beispiel zu <APPLET> <H1>Ein Applet wird gerufen</H1> <P>Beschreibung der Funktionsweise</P> <P> <APPLET code=”APFunktion.class” width=”640” height=”200” alt=“Java-Applet kann nicht starten!“> <PARAMname=“Eingangswert“ value=“100“> </APPLET> </P> Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 5 Attribut zu <OBJECT> Bedeutung classid Das Attribut classid=“cccc“ benennt die erzeugte Klasse des JavaApplets (classid = class identifier = Klassenbezeichner). Die Wertzuweisung besteht aus der festen Zeichenfolge java: - gefolgt von dem vollständigen Namen der .class-Datei, also auch verbunden mit der Typenbezeichnung .class. Bei Java-Applets, die aus mehreren class-Dateien bestehen, müssen Sie die Datei angeben, die den Programmstart enthält. Codebase Wenn sich die Applet-Datei in einem anderen Verzeichnis befindet als die HTML-Datei, in der sie referenziert wird, oder auf einem anderen Internet-Server, dann muss über codebase=“vvvv“ der Pfad bzw. die Adresse des Server-Rechners und das Verzeichnis angeben werden, wo sich die Programmdatei befindet. Achtung: Anzugeben ist nur das Verzeichnis, nicht mehr der Namen der Programmdatei. Codetype Ähnlich wie für Datendateien sind auch für ausführbare Programmdateien Typenangaben notwendig. Bei Java-Applets ist die Angabe: codetype=“application/java“ vorzunehmen. Beispiel zu <OBJECT> <H1>Ein Applet wird gerufen</H1> <P>Beschreibung der Funktionsweise</P> <P> <OBJECT classid=”java:APFunktion.class” codetype=“application/java“ alt=“Java-Applet kann nicht starten!“> <PARAM name=“Eingangswert“ value=“100“> </OBJECT> </P> 6 HTML kennt keine Variablen. Man kann daher aus einem Applet auch keine Werte an HTML zurückgeben. Das Applet kann aber eine eigene Benutzeroberfläche erstellen innerhalb der in HTML beschriebenen Umgebung. Die Größe dieses Arbeitsbereiches für die Benutzeroberfläche wird durch die Parameter (Attribute) widht=“xxxx“ und height=“yyyy“ . Zur Programmierung des Applets gehören für die Gestaltung der Benutzeroberfläche daher auch eigene Textfelder zur Eingabe und Ausgabe sowie Schaltflächen. 7 Das Grid Control ist ein Steuerelement zur Anordnung von Objekten auf der Windows-Oberfläche. Es kann zur Windows-Programmierung genutzt werden. Mit Hilfe des Grid Controls können mehrspaltige und mehrzeilige Layouts erstellt werden. Für die einzelnen Zellen im Raster des Netzes (Grid) kann man zwischen relativer, absoluter bzw. automatischer Größe umschalten. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 8 Der Begriff „Sandkasten“ bedeutet hier, dass für das Java-Applet eine besondere Laufzeitumgebung geschaffen wird. Das Java-Applet wird vom Rest des Systems abgeschirmt, quasi in den Sandkasten gesetzt, in dem es einerseits keinen Schaden anrichten kann und andererseits seine Wirkungen aufgezeichnet werden können. Leider bieten Java-Applets breiten Raum für Missbrauch. Deshalb werden die Java-Applet-Anwendungen in den „Sandkasten“ verbannt, aus dem heraus sie möglichst wenig Zugriff auf kritische Ressourcen haben. So erhält ein Java-Applet standardmäßig keinen Zugriff auf die Objekte des Browsers und kann auch nicht auf das Dateisystem zugreifen. Das Applet muss daher mit einer eigenen Benutzeroberfläche arbeiten. 9 Alle Java-Applets werden von der Java-Klasse java.applet.Applet abgeleitet. Sie arbeiten ereignisorientiert, wobei die sonst bei Java-Anwendungen verlangte Methode main( ) nicht verwendet wird. Applets nutzen und überschreiben standardmäßig die folgenden Methoden: • init( ) – wird genau einmal aufgerufen, wenn das Applet erstmals in den Browser geladen wird. Das Initialisieren von Applets kann beispielsweise das Einlesen von Parametern, das Erstellen anderer Objekte oder das Setzen von Voreinstellungen für das Ausgabefenster beinhalten. • start ( ) – wird jedes Mal aufgerufen, sobald das Applet sichtbar wird. Während die Initialisierung nur einmal stattfindet, kann ein Applet während einer Sitzung mehrmals gestartet werden. Es bleibt deshalb auch im Arbeitsspeicher des Browsers aktiv. • paint( ) – Zeichenmethode für die Anzeigefunktionen des Applets • repaint( ) – aktualisiert die Ausgabe von paint( ) • stop( ) – wird jedes Mal aufgerufen, sobald der Benutzer die Seite mit dem Applet verlässt, z. B. weil das Browser-Fenster von einem anderen Fenster überdeckt wird. Standardmäßig werden aber alle vom Applet gestarteten Threads (Steuerfluss) weiter ausgeführt. • destroy( ) – wird aufgerufen, wenn das Applet aus dem Hauptspeicher entladen werden soll. Durch das Zerstören hinterlässt das Applet einen „aufgeräumten“ Arbeitsspeicher, so dass alle laufenden Threads oder erzeugten Objekte freigegeben werden. 10 Applets brauchen eine eigene Benutzeroberfläche. Deshalb überschreiben sie die üblichen Methoden zur Darstellung der Objekte unter Windows (siehe Frage 9) und die Methoden zur Ereignisbehandlung. Ausgangspunkt hierfür ist unter Java die Klasse: java.awt.event.*, die hierzu importiert werden muss. 11 Der Java Abstract Windowing Toolkit (java.awt.*) bietet für die JavaProgrammierung die notwendigen Klassen zur Erzeugung der WindowsObjekte und der Abstract Windowing Toolkit Eventhandler (java.awt.event.*) bietet die notwendigen Klassen zur Erzeugung und zur Behandlung der Windows-Ereignisse (Mausklick etc.) Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 283 1 Der HTTP-Server verwaltet statische Dokumente (HTML-Dateien, Dateien mit Applet-Klassen oder Multimediadaten), die er dem Client auf dessen Anfrage ordentlich verpackt und adressiert nach den Vorschriften des HTTPProtokolls zur Verfügung stellt. 2 Der HTTP-Server ist standardmäßig mit dem Port 8080 verbunden. Über diesen Port spricht ihn der Client mit seinem Request (Anforderung) an. 3 Anbieter Produkt Lizenz Apache Apache kommerziell Apache Tomcat Apache Software Foundation; freie Software Microsoft IIS kommerziell Google GWS kommerziell lighttpd lighttpd BSD-Lizenz Sun Java System Web Sun Microsystems Server 4 Der Austausch von Daten zwischen dem HTTP-Server und dem Webserver erfolgt entsprechend der sogenannten CGI-Spezifikation. CGI steht für Common Gateway Interface und ist ein Standard für den Server. CGI regelt, wie die Eingaben aus der HTML-Seite an die Anwendungsprogramme übergeben werden. 5 CGI-Skripte sind Programme, die direkt auf dem Webserver laufen. Ein Webserver, der CGI unterstützt, stellt eine Laufzeitumgebung mit Umgebungsvariablen und den Ein- und Ausgabekanälen zur Verfügung. Der Vorteil besteht darin, dass es mit CGI-Skripten möglich ist, HTMLSeiten dynamisch zu erzeugen. Diese müssen zum Zeitpunkt der Anfrage (Request) noch nicht auf dem Server existieren, sondern werden jetzt erst auf der Basis aktueller Daten von dem CGI-Programm erzeugt. Der Nachteil der CGI-Ausführung ist ihre relativ geringe Geschwindigkeit, da für jeden CGI-Aufruf ein neuer Prozess gestartet wird. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 6 Die spezielle Laufzeitumgebung für die serverseitige Programmierung bietet der eigentliche Webserver als so genannten Web-Container an, worin die serverseitigen Anwendungsprogramme laufen. Diese Container haben Bestand, solange eine Web-Anwendung läuft, was für die Performance wichtig ist. So bleibt beispielsweise die Anmeldung eines Kunden einschließlich seiner eingegebenen Daten so lange in einem Web-Container bestehen, solange die Sitzung läuft, also bis zur Abmeldung durch den Kunden. Die Anwendung muss nicht für jeden Kommunikationsschritt neu geladen werden, was zu einer beschleunigten Verarbeitung beiträgt. 7 PHP und Perl sind Skriptsprachen, die zur Erstellung von dynamischen Webseiten oder Web-Anwendungen verwendet werden. PHP ist eine OpenSource-Software. PHP zeichnet sich besonders durch die leichte Erlernbarkeit und die gute Datenbankunterstützung aus. PHP-Code wird serverseitig verarbeitet, der Quelltext wird im Gegensatz zu JavaScript nicht an den Browser übermittelt, sondern an einen Interpreter auf dem Webserver. Erst die Ergebnisse des PHP-Interpreters, üblicherweise ein als Ausgabe erzeugter HTML-Text, wird an den Browser geschickt. Um eine PHP-Datei im Rahmen einer WebAnwendung ausführen zu können, benötigt man serverseitig einen PHP Interpreter. Dieser wird allgemein aktiv, sobald von Server eine Datei mit der Typenbezeichnung *.php abgerufen wird. Anstelle dieser Datei werden die Ergebnisse der PHP-Programmabarbeitung an den Client übermittelt. 8 Ihr lokaler Rechner arbeitet wahrscheinlich mit einem Windows- oder LINUXBetriebssystem. Beide Betriebssysteme sind Multitasking-Systeme, können also mehrere Programme gleichzeitig aktiv halten. Sie nutzen diese Fähigkeiten beispielsweise, wenn Sie aufgerufene Computerspiele hinter OfficeAnwendungen verbergen. Natürlich kann man in dieser Umgebung auch ein Programm als Webserver starten und mit diesem Programm kommunizieren. 9 Der lokale Webserver wird als „localhost“ angesprochen. Die Funktionsfähigkeit des lokalen Webservers kann überprüft werden, indem man den Server am lokalen Rechner über den Standardport 8080 anspricht. Dazu muss im Browser die Adresse http://localhost:8080 eingegeben werden, worauf sich z. B. der Tomcat-Server mit seinem Begrüßungsbildschirm meldet. 10 Um auf einem Rechner auch ohne Internetverbindung die Kommunikation zwischen Client und Server simulieren zu können wird der Tomcat-Server installiert. Beim Ansprechen des lokalen Servers schaltet sich normalerweise auch die auf diesem Rechner installierte Firewall ein. Sie soll schließlich kontrollieren, was alles von dem lokalen Rechner nach außen geht. Dieses „nach außen gehen“ ist auch bei der lokal simulierten Kommunikation zwischen Server und Client durch die Firewall zu erkennen. Die Firewall analysiert die Verbindungsdaten und stoppt diesen Prozess eventuell. Vor Beginn der weiteren Arbeit muss die Firewall daher informiert werden, welche Transfers zulässig sind, während ein Abschalten der Firewall nicht empfehlenswert ist. 11 Durch die Einbindung des Tomcat-Servers in die Eclipse-Umgebung kann auf einem Rechner auch ohne Internetverbindung die Kommunikation zwischen Client und Server simulieren werden. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 288 1 Das Applet wird auf dem Client-Rechner, das Servlet auf dem Server ausgeführt. Servlets sind das serverseitige Gegenstück zu den Applets. Als Servlet bezeichnet man Java-Klassen, deren Instanzen innerhalb eines Webservers Anfragen von Clients entgegennehmen und beantworten. Die Schnittstelle javax.servlet.Servlet muss durch diese Klassen implementiert werden. 2 Die Verwendung von einem Servlet im HTML-Text ist nicht besonders spektakulär und aufwendig. Wichtig sind jedoch die folgenden Elemente: • Der Rahmen mit den Tags html, head, title und body entspricht den Standardkonventionen. • Der form-Tag schafft den Rahmen für den Aufruf des Servlets. • Die Zeile Action=“SLFunktion“ bewirkt, dass beim Anklicken des submit-Buttons das Programm “SLFunktion.class“ im Servlet-Container gestartet wird. • Der input-Tag stellt den Button vom Type “submit“ (übermitteln) bereit. Der HTML-Quelltext zur Bearbeitung eines Servlets sieht dann wie folgt aus: <HTML> <HEAD> <TITLE> Aufruf eines Servlets </TITLE> </HEAD> <BODY> <H1>Beispiel eines Servlets </H1> <FORM action=“SLFunktion”> Rufen Sie hier bitte das Servlet vom Server ab! <INPUT type=“submit” value=“Aufruf”> </FORM> </BODY> </HTML> 3 Innerhalb der form-Tags bewirkt die Zeile Action=“SLFunktion“, dass beim Anklicken des submit-Buttons das Programm “SLFunktion.class“ im Servlet-Container gestartet wird. 4 Das Servlet muss sich die Parameter aus dem Request-String auslesen. Dazu gibt es beispielsweise die Methode getParameterValues(), wobei der Rückgabewert ein String ist und als Aufrufparameter wird der Name des auszulesenden Parameters übergeben. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 5 HTML kennt keine Variablen. Man kann daher aus einem Servlet auch keine Werte an HTML zurückgeben. Ähnlich wie bei PHP oder Perl kann das Servlet jedoch einen Ausgabestream erstellen, der dann an den aufrufenden Client gesandt wird und dort durch den Browser dargestellt werden kann. (vergleiche Beispiel auf Seite 286) 6 In unserem Beispiel wird die doGet( )-Methode überschrieben und mit den Parametern „anfrage“ und „antwort“ neu programmiert, wobei der Parameter „anfrage“ ungenutzt bleibt, da beim Aufruf keine Werte übertragen werden. Der Parameter „antwort“ wird jedoch als html/text typisiert und dann aus dem Ausgabestream durch die getWriter( )-Methode gefüllt. In den Ausgabestream „out“ wird eine einfache Textkette gesetzt, die als Beschreibung einer Webseite in HTML zu erkennen ist. 7 Nach dem Aufruf des Servlets erscheint das Bild wie im Buch auf Seite 290. Den entsprechenden Aufruf finden Sie im Buch auf Seite 286. 8 Das Herkunftsland Deutschland (hl=de), der Suchbegriff (q=Westermann) und die Art der Anfrage (btnG=Google-Suche) werden übermittelt. Diese Anzeige ist nur ganz kurz sichtbar nach Betätigung des Such-Buttons und vor Anzeige der Ergebnisse. 9 Mit den Methoden doGet( ) oder doPost( ) können jeweils die RequestDaten der beiden HTTP-Methoden GET und POST verarbeitet werden. 10 Als Entwickler muss man im Rahmen einer entsprechenden EclipseUmgebung in jedem Fall die doGet( )- und die doPost( )-Methoden implementieren, während der Rest automatisch hinzugefügt werden kann. Bei Verwendung der Servlet-Spezifikation und einer entsprechenden WebContainer-Umgebung (z. B. Apache Tomcat) wird eine vom javax.servlet.http.HttpServlet abgeleitete Klasse erstellt. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 304 1 Der PHP-Interpreter läuft auf dem Server, also weit entfernt von all den möglichen Clients, die Web-Dokumente abrufen und dabei den PHPInterpreter aktivieren. Der PHP-Interpreter kennt den Browser des Nutzers nicht. Man sollte die PHP-Programme daher möglichst browserunabhängig schreiben. Zum Abruf eines Web-Dokumentes vom Server ist jedoch eine Anforderung (Request) des Dokumentes notwendig, die üblicherweise von einem Browser kommt. Diese Anfrage wird vom Server bearbeitet. In der Anfrage (Request) muss der Absender angegeben sein, an den das Web-Dokument zurückzusenden ist. Aus der Absenderinformation kann der PHP-Interpreter den vom Absender verwendeten Browser mit der Auswertung der ServerVariable $_SERVER['HTTP_USER_AGENT'] auslesen. Mit der Funktion get_browser() kann Name und Version des aufrufenden Browsers ermittelt werden. Die Funktion get_browser() kann den Wert von "$HTTP_USER_AGENT" auslesen, den Browser ermitteln und dann einen entsprechenden Eintrag in der eventuell auf dem Server installierten "browscap.ini"-Datei suchen. Ist die Browser-Version in der Datei „browscap.ini“ vermerkt, werden alle Besonderheiten des Browsers ermittelt. Es wird dabei nicht berücksichtigt, ob der Nutzer in seinem Browser einzelne Arbeitsmöglichkeiten deaktiviert hat, sondern nur aufgezeigt, welche prinzipiellen Möglichkeiten der Browser unterstützt. Quelle: http://www.selfphp.de/funktionsreferenz/sonstige_funktionen/ get_browser.php) Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 2 Der PHP-Interpreter kennt den Bildschirm des Nutzers nicht. Man sollte die PHP-Programme daher möglichst so gestalten, dass sich die Ausgaben prozentual zur Bildschirmgröße verteilt anordnen oder an einem Minimalstandard orientieren. Als Lösung kann hier nur die kombinierte Anwendung von JavaScript mit PHP gesehen werden. Das folgende Beispiel zeigt die Verwendung eines geeigneten JavaScript-Programmes. Hier wird das JavaScript zuerst zum Client gesandt, wo die Bildschirmgröße ermittelt wird, und dann wieder zum PHP-Interpreter zurückgesendet. Das dauert einen Moment, aber beim zweiten Versuch kann PHP nun auf die Größenwerte zur Breite und Höhe zugreifen. <?php if (isset($_GET['width']) AND isset($_GET['height'])) { // Ausgabe der beiden Größenangaben echo "Die Breite ist: ". $_GET['width'] ."<br />\n"; echo "Die Höhe ist: ". $_GET['height'] ."<br />\n"; } else { // Übergabe der Größenangaben // (der ursprüngliche 'QUERY_STRING' wird beibehalten; // POST-Variablen müssen anders behandelt werden) echo "<script language='javascript'>\n"; echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}" . "&width=\" + screen.width + \"&height=\" + screen.height;\n"; echo "</script>\n"; exit(); ?> 3 Der PHP-Interpreter läuft auf dem Server, er kann somit relativ einfach auf die umfangreichen Parameter der Serverumgebung zurückgreifen. Alle Parameter sind über die vordefinierte Variable $_SERVER[ ] erreichbar. $_SERVER[ ] ist ein assoziatives Array aus Variablen, die dem aktuellen Skript vom jeweiligen HTTP-Server bereitgestellt werden. Die Werte aus dem assoziativen Array sind durch die Angabe des Parameternamens innerhalb der eckigen Klammern abrufbar. $_SERVER ist ein Array, das Informationen enthält, wie Header, Pfade und die verschiedenen Wege, um das Skript anzusprechen,. Es gibt keine Garantie dafür, dass der jeweilige Webserver alle möglichen Einträge in die vordefinierte Variable schreibt, denn Server können einzelne Werte weglassen oder andere Einträge unterstützen, die in der Referenz nicht aufgeführt sind. (Quelle: http://php.net/manual/de/reserved.variables.server.php) Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 4 Der der PHP-Interpreter kennt auch das Verhalten des Nutzers am Browser nicht. Der Nutzer kann eine Verbindung zum Webserver aufbauen, diese ruhen lassen und auf anderen Webseiten weiter surfen. Beim Nutzer bleiben gleichzeitig mehrere Verbindungen offen, d. h., er kann auch dieselbe Seite mehrfach öffnen, während auf dem Server gleichzeitig viele verschiedene Anfragen unterschiedlicher Nutzer eintreffen können. Die jeweils bestehenden Verbindungen vom Nutzer zum Server werden als Sitzungen (Session) bezeichnet. Die Merkmale der Sitzung werden in der vordefinierten Variablen $_SESSION[ ] verwaltet. $_SESSION[ ] ist ein assoziatives Array aus Session-Variablen, die vom aktuellen Skript auf dem Server gespeichert werden. Die Werte aus dem assoziativen Array sind durch die Angabe des Parameternamens innerhalb der eckigen Klammern abrufbar. Durch die Funktion „session_start()“ wird die Sitzung gestartet und die vordefinierte Variable $_SESSION[ ] angelegt. Diese Variable, worin beliebige Vermerke gespeichert werden können, bleibt während der gesamten Sitzung bestehen. Dem Array $_SESSION[ ] neu hinzugefügte Variablen mit Werten werden automatisch als Session-Variable registriert und gespeichert. (Quelle: http://www.php.net/manual/de/reserved.variables.session.php) Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 Seite 314 1 Die Datei web.xml enthält Parameter zur Sprache und Codierung (display-name xml:lang="de">…), den Dateinamen des Servlets (servlet-class>DabaSL.DabaSL …) und den Aliasnamen (url-pattern>/DBAlias…) für den Aufruf des Servlets. <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee app_2_4.xsd"> http://java.sun.com/xml/ns/j2ee/web- <display-name xml:lang="de">DabaSL</display-name> <servlet> <display-name xml:lang="de">DabaSL</display-name> <servlet-name>DabaSL</servlet-name> <servlet-class>DabaSL.DabaSL</servlet-class> </servlet> <servlet-mapping> <servlet-name>DabaSL</servlet-name> <url-pattern>/DBAlias</url-pattern> </servlet-mapping> </web-app> Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 2 Erklärung: Die Verwendung einer Datenbank auf dem Server durch ein Servlet bedingt die Einbindung eines Datenbanktreibers. Die Aktivierung des Datenbanktreibers ist bei Servlets aber eine komplizierte Angelegenheit, denn das Servlet läuft auf einem Einsatzsystem, das sich vom Entwicklungssystem völlig unterscheiden kann. Eigentlich kennen wir bei der Entwicklung das Einsatzsystem mit all seinen Softwarekomponenten nicht. Wir kennen das Betriebssystem nicht, wir kennen die Verzeichnisstruktur nicht und wir kennen die konkret installierten Softwarekomponenten nicht. Das klingt schlimm, ist aber Realität bei der „Softwareentwicklung im Großen“. Wir kennen aber die Architektur des Serversystems. Wir wissen nicht, was konkret vorhanden ist, aber wir wissen welche Komponenten prinzipiell vorhanden sein müssen. Und diese Tatsache betrifft möglicherweise auch die Datenbanksysteme. Dieser Ansatz klingt kompliziert, ermöglicht aber eine gewaltige Flexibilität. Der Betreiber des Servers kann Komponenten austauschen (updaten) oder wir wechseln mit unserer Anwendung einfach zu einem anderen Anbieter für den Server-Dienst. Alle konkreten Parameter müssen daher in strukturmäßig (Architektur!) vereinbarten Dateien gespeichert werden. Entwickelt und getestet wurde im vorliegenden Beispiel mit Microsoft Access, während auf dem produktiven Server von Sun „PointBase“ als Datenbanksystem bereitgestellt wird. In der Zielstellung von ACI wird hingegen MySQL als Datenbanksystem favorisiert, womit in der Beispielsituation letztlich schon drei verschiedene Datenbanksysteme zur Auswahl stehen. Der Datenbanktreiber wird daher nicht fest in das Programm integriert, d. h., er darf nicht mit kompiliert werden. Man müsste ansonsten bei jeder Veränderung in der Entwicklungs- oder Einsatzumgebung die Programme im Quelltext verändern und neu kompilieren sowie anschließend per Deployment erneut zum Server übertragen. Im professionellen Umfeld werden die erforderlichen Parameter daher über Parameterdateien vermittelt. build.xml ist so eine strukturmäßig zu verwendende Parameterdatei. Die Abbildung auf S. 295 zeigt, dass build.xml einige Eigenschaften <property> zum Projekt vermittelt und dabei die Datei common.xml einbindet mit <include>, welche wiederum in den “common.properties“ und den “database.properties“ genau den JDBCDatenbanktreiber benennt. Im vorliegenden Fall der Abbildung ist es der JDBC-Universaltreiber aus dem pointbase-Verzeichnis. In den Parameterdateien können diese Werte editiert werden, ohne dass ein kompletter Entwicklungsschritt (Compiler und Deployment) durchgeführt werden muss. Beim Wechsel auf ein neues Server-System oder Datenbankmanagementsystem muss nur hier etwas verändert werden. Antwort: Die Parameterdatei build.xml sorgt für die Einbindung der Datei common.xml (siehe Seite 295 des Buches) 3 Erklärung: siehe Erklärung zu Frage 2! Antwort: Die Parameterdatei common.xml verweist auf die “database.properties“ und benennt damit für den dynamischen Methodenaufruf den JDBC-Datenbanktreiber (siehe Seite 295 des Buches). Im vorliegenden Fall der Abbildung ist es der JDBC-Universaltreiber aus dem pointbase-Verzeichnis. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 4 Erklärung: Eigentlich kennen wir bei der Entwicklung von Client-ServerProjekten das Einsatzsystem mit all seinen Softwarekomponenten nicht. Wir kennen das Betriebssystem nicht, wir kennen die Verzeichnisstruktur nicht und wir kennen die konkret installierten Softwarekomponenten nicht. Java bietet für diesen Fall den dynamischen Methodenaufruf an. Damit lässt sich zur Laufzeit eine im Programm definierte Methode aufrufen, wenn ihr Name als Zeichenkette vorliegt. Dieser Name wird dann in einer strukturmäßigen Parameterdatei abgelegt. Antwort: Zunächst geht man von einem Class-Objekt aus, das die Klasse des Objekts beschreibt und wofür eine Objektmethode aufgerufen werden soll. Über die forName( )-Methode wird diesem Objekt der Name der zu aktivierenden Methode bekannt gegeben, der aus den besprochenen Parameterdateien stammt. Auf diesem Weg wird zur Laufzeit der jeweilige Datenbanktreiber aktiviert, der die JDBC-Schnittstelle zur Datenbank herstellt. Quelltext auf Seite 295: try { // Class.forName(driverName).newInstance( ); // “new.Instance( )” zur Umgehung von abgebrochenen Zugriffen Class.forName(driverName); // dynamischer Methodenaufruf dbconn =DriverManager.getConnection(url, user, passwd); } // try 5 Java Server Pages (JSP) sind eine spezielle Technologie, um statische HTMLSeiten mit dynamisch generiertem HTML-Code zu mischen. Dazu werden die konventionellen HTML-Texte um spezielle JSP-Tags ergänzt. Der Webserver wandelt die JSP zunächst in ein Servlet um. Danach arbeitet die JSP wie ein normales Servlet. Diese Umwandlung übernimmt die JSP-Engine, wodurch das Servlet maschinell erstellt wird. JSP-Tags werden direkt in den HTML-Code eingebunden und sind zu kennzeichnen mit: <% … %> Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 6 Java Beans sind normale Java-Klassen, die innerhalb ihrer Programmierung jedoch bestimmte Konventionen einhalten müssen, um sie so zu standardisieren, dass sie auch von anderen Entwicklern in ihre Applikationen eingebunden werden können. Im Rahmen dieser Konventionen gibt es neue Begriffe zu beachten: • Ein Java Bean ist eine normale Klasse mit Eigenschaften und Methoden. • Statt des Begriffs Eigenschaften verwendet man hier den Begriff Properties, um deutlich zu machen, dass diese Eigenschaften durch relativ strenge Vorschriften geschützt sind. • Zu jeder Property gibt es Setter- und Getter-Methoden zum Schreiben und Lesen der Property. Diese Methoden beginnen jeweils mit set oder get, müssen public sein (also für alle zugänglich) und die Eigenschaften vor Fehlbelegungen absichern. • Events werden als neuer Begriff eingeführt. Java Beans sollen mit anderen Komponenten kommunizieren, was durch die Erzeugung von Events geschieht. (Im Beispiel zu den Applets wurden bereits Events genutzt.) • Die Events werden nach der Reihenfolge ihres Eintretens bearbeitet. Dazu müssen sie ihrerseits durch so genannte Listener verwaltet werden. • Java Beans müssen serialisierbar sein (“implements serializable“), d. h., die Abarbeitungsfolge muss zur Laufzeit dynamisch zu bestimmen sein. 7 Enterprise Java Beans (EJB) basieren auf einer noch schärferen Spezifikation. Sie werden entwickelt als “server-side“-Komponenten und müssen extrem parametrisierbar sein, um leicht an verschiedene Installationsbedingungen der Server anpassbar zu sein. Eine derartige Arbeitsweise funktioniert wie bei der Herstellung einer Verbindung zur Datenbank. Die Parameter kommen aus der Properties-Datei und werden über die Dateien COMMON.XML und BUILD.XML ausgelesen und weitergegeben. Bei der Implementierung von EJB muss man beachten, dass EJB und Clients getrennt voneinander auf unterschiedlichen Computern und damit auf verschiedenen JVMs laufen, also keinerlei Möglichkeiten zur „internen“ Kommunikation besitzen. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 8 Erklärung: Durch Betätigung einer Schaltfläche „Aufruf“ vom Typ “submit“ wird die im Formular vereinbarte Aktion “action=verarbeiten“ aufgerufen. Dieser Request gelangt zum Server. Dort wurde bereits durch den Aufruf der HTML-Seite das Servlet „verarbeiten“ (vgl. Quelltext auf S. 286) gestartet. Das Java-Programm führt seine Aktionen aus und generiert eine HTML-Seite, deren anschließende Interpretation durch den Browser beim aufrufenden Client erfolgt. Bei einem echten WebService kommuniziert clientseitig nicht mehr das spezielle Programm „Browser“ mit dem Server. WebServices wurden für die Kommunikation von Programm zu Programm konzipiert. Damit entfallen aber alle Standardleistungen des Browsers: Request und Response müssen selbst verwaltet werden. Die Methoden doGet( ) und doPost( ) stehen in gewohnter Art nicht zur Verfügung, sie müssen überschrieben werden. Antwort: Quelltext Seite 300: publicvoid doGet( HttpServletRequest anfrage, HttpServletResponse antwort) throws ServletException, IOException { // Hauptteil verarbeitet Browsereingaben // usw. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 9 Das Servlet generiert im Beispiel einen einfachen HTML-Quelltext aus den Ergebnissen der Datenbankabfrage im Objekt antwort: Antwort: Quelltext Seite 300: publicvoid doGet( HttpServletRequest anfrage, HttpServletResponse antwort) throws ServletException, IOException { // ... antwort.setContentType(“text/html“); PrintWriter out =antwort.getWriter( ); try { // Zugriff auf Datenbank ueber die JDBC-ODBC-Bruecke // ... Ergebnis =Lesen(Daba, Anw); if (Ergebnis.next( )) { out.println(HTMLtext(true, EAN, Ergebnis.getString(2))); } else { Bezeichnung=anfrage.getParameter(“bezeichnung”); if(Bezeichnung.length( )==0) { out.println(HTMLtext(false, EAN, “unbekannt”)); } else { Anw =“INSERT INTO Artikel2(EAN, Bezeichnung) ”+ “VALUES(“ + ” ‘“ + EAN + ”‘, ’“ + Bezeichnung + ”‘);”; int Zahl =Einfuegen(Daba, Anw); out.println(HTMLtext(true, EAN, Bezeichnung)); } } Ergebnis.close( ); // usw. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH Lösung zu 978-3-8045-5384-2 Entwickeln und Bereitstellen von Anwendungssystemen - IT-Buchreihe Band 3 10 Eine Vorbereitung auf mögliche Fehler sowie das Entwickeln einer Fehlerbehandlung ist in komplizierten Strukturen (Client, Server, Datenbank) unbedingt notwendig. Java verlangt daher ein „Exception-Handling“, der Compiler selbst akzeptiert keine Anweisungen ohne Ausnahmebehandlung. Deshalb werden die kritischen Anweisungen des Datenbankzugriffes mittels “try“ gekapselt und gegebenenfalls mit “catch“ abgefangen. Als Ausnahmen werden behandelt: Ausnahmesituation Bemerkung ClassNotFoundException Der gewünschte Treiber kann beim dynamischen Methodenaufruf nicht gefunden werden. Hier ist eventuell der CLASSPATH-Wert anzupassen. IOException Bei der Ein- oder Ausgabe tritt ein Fehler auf, was hier durch die allgemeine Arbeit mit Zeichenketten kaum passieren kann. NullPointerException Im Objekt vom Type ResultSet bewegt sich der Zeiger in unvorgesehene Regionen. SQLException Die SQL-Anweisung ist falsch und kann daher nicht ausgeführt werden, meistens durch einen Syntaxfehler in SQL verursacht. Bildungshaus Schulbuchverlage Westermann Schroedel Diesterweg Schöningh Winklers GmbH