(JSP) Java Server Pages - Lebensfreude entsteht durch Frieden, der nicht statisch, sondern dynamisch ist
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Java Server Pages (JSP) Lebensfreude entsteht durch Frieden, der nicht statisch, sondern dynamisch ist Henry Miller
Inhaltsverzeichnis Einleitung und Motivation JSP Übersicht Was ist Java Server Pages? Was sind Servlets? Funktionsweise der JSP JSP Syntax Vordefinierte Variablen Ausdrücke Scriptlets Deklarationen Kommentare Direktiven Aktionen JSP und JavaBeans JSP Vor- und Nachteile gegenüber reinen Servlets gegenüber ASP gegenüber PHP gegenüber Java Script Referenzen Links Bücher
Einleitung und Motivation In Web-Anwendungen werden neben statischem HTML-Text auch dynamische Inhalte benötigt Dynamische Inhalte werden von Anwendungslogik erzeugt Problem: neben Inhalt muss auch Layout erzeugt werden Ö Anwendungslogik wird durch Layout-Daten unübersichtlich Ö Bei Anpassung des Layouts müssen Funktionen geändert werden Ö Bei Trennung von Layout und Inhalt müssen mehrere Ressourcen gepflegt werden Dies wäre z.B. möglich, wenn die Anwendungslogik XML- Daten als Ausgabe erzeugt, die dann per XSLT in HTML transformiert würden. Hier müßte also neben der Anwendungslogik auch das XSLT-Skript gepflegt und beide konsistent gehalten werden und es müßten zwei Arbeitsschritte zum Erzeugen der HTML-Ausgabe ausgeführt werden.
Lösung Anwendungslogik in HTML-Seite einbetten Bei Anforderung der Seite durch Klienten den tatsächlichen Inhalt generieren und dabei Programm- Code ausführen
Java Server Pages JSP sind Textdokumente, die HTML (oder XML) mit Elementen von Java verknüpfen In HTML kann das Design und bestimmte statische Inhalte definiert werden In Java werden die dynamische Inhalte hinzugefügt Der Web-Server übersetzt eine JSP automatisch in ein Java Servlet, das dann alle HTTP-Requests an die entsprechende URL behandelt. Der Übersetzungsvorgang von JSP in ein Servlet muss nur einmal getätigt werden, danach benutzt der Servlet-Container direkt die übersetzte Klasse.
Servlets Servlets sind Programme, die auf einem Webserver ausgeführt werden Servlets bilden das Bindeglied zwischen von einem Webbrowser kommenden Anfrage (Request) und Datenbanken oder Anwendungen auf diesem HTTP- Server Sie haben folgende Aufgaben: 1. Alle vom Benutzer gesendeten Daten lesen. 2. Etwaige weitere Informationen über die in der HTTP- Anfrage eingebettete Anfrage nachschlagen. 3. Ergebnisse generieren 4. Ergebnisse in ein Dokument hineinformatieren (HTML) 5. Geeignete HTTP-Antwortparameter setzen. 6. Dokument an den Client zurücksenden.
Verarbeitung einer JSP-Datei Servlet-Container Entwickler Servlet-Klasse JSP-Seite Servlet-Quelltext .class .jsp .java Java VM Werkzeuge des javac Servlet-Instanz Containers
Ablauf bei der Anfrage einer JSP-Seite: JSP-Web-Server Request JSP generiertes Response Servlet Servlet Client Source JSP Compiler Code
Unterschied zwischen Servlets und Java Server Pages Servlets sind Server-Programme, die Webseiten erstellen, in dem sie die HTML-Anweisungen mit println() in den Ausgabestrom senden. Hier fällt die gewünschte Trennung zwischen Informationen und Visualisierung. Beispiel: Zweierpotenzen.java Eine JSP geht das Problem genau anders herum an. Wo ein Servlet eine Java-Klasse ist, die sich um die Ausgabe des HTML-Codes kümmert, ist eine JSP eine HTML-Seite mit Java-Code. Beispiel: Zweierpotenzen.jsp
Vordefinierte Variablen Implizite Objekte, die in den Ausdrücken und Scriptlets (nicht in Deklarationen) automatisch zur Verfügung stehen. request: erlaubt den Zugriff auf die mit dem HTTP-Request gelieferten Informationen, z.B. Formularinhalte. (Typ: HttpServletRequest Methoden des Request-Objekts ausführen ParameterAusFormularenLesen response: Die mit der Antwort an den Client verbundene HttpServletResponse bietet Methoden zur direkten Beeinflussung der HTTP-Response, z.B. Fehlermeldungen out: Ein Objekt, dass direkte Schreiboperationen in den Message-Body der HTTP-Response erlaubt (Typ: JSPWriter) session: Das mit der Anfrage verbundene Http-Session-Objekt legt besucherspezifische Informationen über eine Reihe von Requests hinweg ab. application: gibt Zugriff auf Objekte einer Web-Anwendung, die von mehreren Benutzern gleichzeitig genutzt werden können, z.B. Datenbankverbindungen
JSP - Konstrukte Neben dem regulären HTML gibt es noch drei weitere wichtige JSP-Konstrukte, die Sie in eine Seite einbetten: Skriptingelemente Damit kann man Java Code spezifizieren, der Teil des resultierenden Servlets werden soll. Man unterscheidet: Ausdrücke, Scriptlets und Deklarationen Direktiven Damit kann man die Gesamtstruktur des Servlets kontrollieren. Aktionen Damit kann man spezifizieren, welche bestehenden Komponenten benutzt werden sollen, sowie das Verhalten der JSP-Engine steuern.
Ausdrücke geben die Möglichkeit Variablen direkt in den Output umzuleiten. Die Berechnung der Expression erfolgt zur Laufzeit, wenn die Seite aufgerufen wird. • Ein JSP - Ausdruck hat folgende Form: • oder in Form von XML: Java Expression Beispiel: EinDate.jsp
Scriptlets geben die Möglichkeit kompliziertere Ausdrücke auszuwerten und mit out.println an den Outstream zu übergeben. • Ein JSP - Scriptlet hat folgende Form: • oder in Form von XML: Java Code Beispiel: WieFuehlIchMich.jsp
Deklarationen Eine Deklaration ist ein Java-Codeabschnitt, der sich in einer JSP- Seite befindet und klassenweit gültige Variablen und Methoden in der generierten Klassen- datei definiert. Jedes in einer Deklaration definierte Element steht allen anderen Deklarationen, Ausdrücken und Codeabschnitten in dieser Seite zur Verfügung. • Eine JSP- Deklaration hat folgende Form: • oder in Form von XML: Java Code Beispiel: Points.jsp
Beispiele mit Parameterangabe Beispiel: BGColor.jsp Beispiel: ParamDa.jsp code execute code execute
Kommentare JSP Kommentare werden nicht in HTML-Text umgebaut und wandern folglich auch nicht zum Browser: HTML-Kommentare dagegen sind für den Klient sichtbar:
JSP-Direktiven Die Direktive page definiert wichtige Attribute, die die gesamte Seite betreffen. Eine einzelne JSP kann mehrere Seitendirektiven enthalten. Während des Übersetzungs- vorgangs werden alle page-Direktiven gesammelt und zusammen auf dieselbe Seite angewendet. Jedes von der page-Direktiven kann nur einmal in einer JSP - Seite vorhanden sein. (außer import) oder die XML-Form:
Die Direktive page • Attribut import: gibt an welche Klassen durch die JSP importiert werden sollen; einzigste, das mehr als einmal benutzt werden kann. • Attribut contentType: ist der MIME-Typ der JSP-Seite. Änderungen des Standardwerts >>text/html
Die Direktive page • Attribut info: Der Autor einer Seite kann diese näher beschreiben. In der Regel befinden sich Informationen über Autor, Erstellungsdatum und Version in dem Attribut. • Attribut buffer: spezifiziert die Größe von der Variablen out benutzten Puffers. d. h. dass der Dokumentinhalt so lange im Puffer gespeichert und nicht an den Client gesendet wird, bis entweder 32 KB an Daten aufgelaufen sind oder die Seite komplett ist. Die Standardgröße vom Server abh., mind. aber 8 KB. d. h. der Puffer wird abgeschaltet.
Die Direktive page • Attribut autoflush der volle Puffer wird automatisch auf die Festplatte geleert beim Puffer-Überlauf wird eine Ausnahme ausgelöst. • Attribut session kontrolliert, ob die Seite an http-Sitzungen teilnimmt oder nicht Die Variable session ist an die bestehende Sitzung -falls vorhanden- gebunden. bedeutet, dass keine Sitzungen automatisch benutzt werden, und die Versuche, auf die Variable session zuzugreifen in einen Fehler münden.
Die Direktive page • Attribut iserrorPage: zeigt an, ob die aktuelle Seite die Fehlerseite für eine andere JSP-Seite sein kann. Beispiel: iserrorPage • Attribut errorpage: spezifiziert eine JSP-Seite, die etwaige Ausnahmen verarbeiten soll, die zwar ausgelöst, aber in der aktuellen Seite nicht abgefangen worden sind. Man verwendet es wie folgt: Die ausgelöste Ausnahme wird der bezeichneten Fehlerseite mit der Variablen exception automatisch zur Verfügung gestellt. Beispiel:errorPage • Attribut language: gibt an welche Skriptsprache in diesem JSP benutzt wird Zur Zeit wird nur >>java
Die Direktive include • Mit der include-Dierektive binden Sie eine Datei in das JSP- Hauptdokument in dem Moment ein, in dem das Dokument in ein Servlet übersetzt wird. (also zur Übersetzungszeit) Beispiel: ImportJavaAwt.jsp • Die eingebundene Datei darf nicht nur statisches HTML, sondern auch JSP-Code enthalten. • Wenn sich die eingebundene Datei ändert, müssen alle JSP- Seiten aktualisiert werden, die diese Datei benutzen. (Leider ist es so das nur wenige Server einen Mechanismus zur Ermittlung von Änderungen an einer eingebundenen Datei (und zur nachfolgenden Neukompilierung des Servlets) unterstützen.)
Standardaktionen Aktionen sind spezifische Tags, die sich auf das Laufzeit- verhalten einer JSP-Seite und auf die Antwort auswirken, die zum Client zurückgesendet wird. Für einzelne Aktionen existieren keine Tags, sie werden in XML-Anweisungen gesetzt.
Aktion include Beispiel: include.jsp - Aktion jsp:include bietet eine weitere Möglichkeit die angegebene Ressource in die Seite einzufügen. - Die Aktion wird nun nicht beim Übersetzen der Seite ausgeführt (siehe include-Direktive), sondern erst wenn die Anfrage eines Clients bearbeitet wird (zum Zeitpunkt des Aufrufs!). - Da zu diesem Zeitpunkt, die Hauptdatei bereits in ein Servlet übersetzt wurde, darf die eingebundene Datei kein JSP - Code enthalten.
Aktion forward Ermöglicht die Weiterleitung einer Anfrage an eine andere Seite oder an ein Servlet. Diese Aktion beendet die Ausführung der aktuellen Seite, sie wird auch nicht wieder aufgenommen. Beispiel: forward.jsp one.jsp two.html
JSP-Server doc.jsp Get doc.jsp ... doc2.jsp ... ... ... Arbeitsweise der Aktion forward
JSP-Server doc.jsp Get doc.jsp doc2.jsp ... ... .... .... Arbeitsweise der Aktion include
JSP und JavaBeans Implementierung von Funktionen in Skriptlets eher unübersichtlich Funktionen auslagern in JavaBeans Aktionen in JSP: Bean instantiieren entspricht in etwa Eigenschaften setzen Eigenschaften auslesen Beispiel: MeinJspUndJavaBeansTest.jsp MeineBean.java
Vorteile von JSP: gegenüber reinen Servlets normales HTML ist bequemer zu schreiben Bessere Trennung von Präsentation und Inhalt gegenüber Active Server Pages (ASP) von Microsoft Java ist mächtiger für komplexe Anwendungen als VBScript oder andere ASP-spezifische Sprachen JSP lässt sich auf andere Betriebssysteme und Webserver portieren, sind nicht auf WINDOWS NT/2000 und IIS festgelegt. gegenüber PHP (Hypertext Pre-Prozessor) Vorteil liegt im Bereich der bereits vielfältig vorhandenen API´s für das Netzwerk, für Datenbankzugriffe usw. Wenn man Java kann, muss man keine neue Sprache lernen gegenüber JavaScript Nur auf Clientseite ausgeführt Keine Datenbankzugriffe
Referenzen Links http://www.java.sun.com/jsp http://www.galileocomputing.de/openbook/javainsel2 http://www.jakarta.apache.org/ Bücher Hall, M.: “Core Servlets und JavaServerPages“, Sun microsystems Turau,V.: “Java Server Pages“, dpunkt
Sie können auch lesen