(JSP) Java Server Pages - Lebensfreude entsteht durch Frieden, der nicht statisch, sondern dynamisch ist

Die Seite wird erstellt Santiago Haag
 
WEITER LESEN
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