(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 MillerInhaltsverzeichnis
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ücherEinleitung 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ührenJava 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
ContainersAblauf bei der Anfrage einer JSP-Seite:
JSP-Web-Server
Request
JSP generiertes
Response Servlet Servlet
Client
Source
JSP Compiler
CodeUnterschied 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.jspVordefinierte 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.
DatenbankverbindungenJSP - 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.jspScriptlets
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.jspDeklarationen
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.jspBeispiele 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.htmlJSP-Server doc.jsp
Get
doc.jsp ... doc2.jsp
...
...
...
Arbeitsweise der Aktion forwardJSP-Server doc.jsp
Get
doc.jsp
doc2.jsp
...
... ....
....
Arbeitsweise der Aktion includeJSP 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.javaVorteile 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 DatenbankzugriffeReferenzen
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“, dpunktSie können auch lesen