Willkommen bei java-server.net

JSP Syntax

Wie schon erwähnt ist die Hauptfunktion von JSP das Produzieren von dynamischen Web-basierten Inhalten. Die "Dynamik" wird mittels speziellen JSP-Elementen erreicht. Diese Elemente lassen sich in drei Hauptgruppen gliedern. Dies sind:

  • Scripting-Elemente
  • Direktiven und
  • Action-Elemente

Weiter gibt es die so genannten implizite Objekte, welche in jeder JSP-Seite angesprochen respektive verwendet werden können.

Scripting-Elemente

Scripting-Elemente werden verwendet um Objekte zu manipulieren und Berechnungen durchzuführen und sind "normale" Java-Fragmente. Mit der JSP Version 2.0 kam die Expression Language (EL) und die JSP Standard Tag Library (JSTL) hinzu, welches das verwenden von Java-Kode innerhalb einer JSP-Seite eigentlich unnötig macht. Damit eine JSP-Seite übersichtlich und wartbar bleibt, sollte auf Java-Kode innerhalb einer JSP-Seite völlig verzichtet werden.

Deklerationen

JSP erlaubt Variabeln und Funktionen zu deklarieren. Variabeln werden direkt innerhalb der Klasse erstellt und werden somit zu Klassenvariabeln. Das heisst, dass die deklarierten Variabeln nicht exklusive pro Anfrage und Benutzer verwendetet werden sondern einen globalen Gültigkeitsbereich - innerhalb des Servlets - haben. Diese Variabeln werden auch als "page-level" Variabeln bezeichnet. Bei diesen Variabeln muss immer darauf geachtet werden, dass der Zugriff "Thread-Safe" erfolgt, denn mehrerer Threads, können gleichzeitig das gleiche Servlet - unsere JSP-Seite - ausführen.

Eine Deklaration erfolgt zwischen den Begrenzungszeichen <%! und %>. Die generelle Form von Deklarationen ist wie folgt:

<%! decleration; [decleration;]+ %>

Beispiel:

   1:    <%!
   2:    java.util.Date date = java.util.Calendar.getInstance().getTime();
   3:
   4:    java.util.Date getCurrentDate() {
   5:      return date;
   6:    }
   7:    %>

Scriptlets

Scriptlets sind kleine Kodestücke welche zwischen den Begrenzungszeichen <% und %> stehen. Die Kodestücke können z.B. für das Prüfen von Bedingungen und Schleifen verwendete werden.

Beispiel:

   1:<body>
   2:    <% for( int i = 0; i < 10; i++ ) {%>
   3:        <% if( i == 0 ) {%>
   4:            Hallo<br><br>
   5:        <%}%>
   6:        Das ist eine JSP-Seite.<br>
   7:    <%}%>
   8:</body> 

Ausdrücke

Ausdrücke sind Scriptlets sehr ähnlich und sind bestimmt für das Auswerten von regulären Java-Ausdrücken. Der Syntax ist wie folgt: <%= ausdruck %> Beachten Sie, dass nach einem Ausdruck kein Strichpunkt folgt.

Beispiel:

   1:<body>
   2:      <% for( int i = 0; i < 10; i++ ) {%>
   3:        Zeile <%= i+1%><br>
   4:    <%}%>
   5:</body>

Kommentar

In den JSP-Seiten können beliebig mit Kommentar versehen werden. Diese Kommentare werden im Gegensatz zu HTML-Kommentare nicht in die zu generierende Seite übernommen.

JSP-Kommentar:

   1:<%-- Dies ist ein JSP-Kommentar --%>

Achtung JSP-Elemente werden auch in HTML-Kommentaren ausgeführt.
HTML-Kommentar:

   1:<!-- Dies ist ein HTML-Kommentar. Generiert am <%= getCurrentDate()%> -->

Direktiven

JSP kennt drei verschiedene Direktiven. Dies sind

  • die page Direktiven,
  • die include Direktiven
  • und die taglib Direktiven

Der Syntax einer Direktive allgemein die folgende Form:

<%@ Direktive {Attribut="Wert"}* %>

Die "page"-Direktive

Die erste Direktive ist die page-Direktive mit welcher man verschiedene Eigenschaften einer JSP-Seite definieren und ändern kann.

Die Direktive page kennt folgende Attribute:

AttributStandardwertBeschreibung
languagejavaDefiniert die verwendete Scripting-Sprache. Es gibt Servlet-Container, welche nebst Java auch Java-Script erlauben.
extendsKann verwendet werden für das definieren der Superklasse, welche verwendet werden soll. muss das Interface javax.servlet.jsp.JspPage implementieren.
importImportiert benötigte Packate und / oder Klassen.
sessiontrueWenn dieser Wert auf true gesetzt ist, wird das implizite Objekt session erstellt und die JSP-Seite "nimmt" an einer Session teil.
buffer8kbDefiniert die verwendete Buffer-Grösse.
autoFlushtrueDefiniert, ob der Buffer automatisch gesendet werden soll, wenn der Buffer voll ist. Wenn dieser Wert fasle gesetzt wird und der Buffer überläuft, wird eine Exception geworfen.
isThreadSafetrueIndiziert das Thread-Modell, welches für die Ausführung der "JSP-Seite" vom Servlet-Container verwendet wird. Wenn der Wert auf false gesetzt wird, muss der Servlet-Container alle Anfragen seriell abarbeiten.
infoBeschreibung der Seite. Kann mit der API-Funktion getServletInfo() ermittelt werden.
isErrorPagefalseDefiniert, ob die aktuelle Seite eine Fehlerseite ist.
errorPageMit errorPage kann eine URL definiert werden, welche im Fehlerfall aufgerufen wird. Die URL muss zur Applikation gehören und wird relativ angegeben.
contentTypetext/htmlDefiniert den MIME-Typ der Seite.
pageEncodingISO-8859-1Definiert den Zeichensatz.
isElIgnoredfalseDefiniert, ob die Ausdrücke, welche mittels EL definiert sind, ausgewertet werden sollen.

Die meisten verwendeten Attribute sind sicherlich import und session.
Unser Beispiel-Programm können wir wie folgt ergänzen und ändern:

   1:<%@ page import="java.util.*" session="false" %>
   2:    <%!
   3:    Date date = Calendar.getInstance().getTime();
   4:    Date getCurrentDate() {
   5:      return date;
   6:    }
   7:    %>

Wir importieren das Package java.util und setzen das session-Attribut auf false. Dadurch müssen wir die Date und die Calendar-Klasse nicht mehr voll qualifiziert angeben. Weiter ist unser Beispiel eine unabhängige Seite, welche nicht einer Session teilnehmen muss. Aus diesem Grund können wir uns den Mehraufwand, welcher für eine Session aufgewendet werden müsste, sparen.

Die "include"-Direktive

Mit dieser Direktive wird es möglich, den kompletten Inhalt anderer Dateien in die aktuelle Seite einzubinden. Nutzen kann man dies z.B. für stets wieder kehrende HTML-Teile wie Footer und Header. Die Einbindung der Datei geschieht, bevor die JSP-Seite in ein Servlet transformiert wird. Die eingebundene Datei Kann selbst wieder JSP-Elemente beinhalten.

Der Syntax lautet: <%@ include file="datei.jsp" %>.

Die "taglib"-Direktive

Mit der Direktive taglib können so genannte tag-libraries eingebunden werden. Z. B. wird die JSP Standard Tag Library mit dieser Direktive eingebunden.

Der Syntax lautet: <%@ taglib uri="/TagLibURI" prefix="tagPrefix" %>

URI der Taglibrary kann relativ oder absolut angegeben werden.

Hier ein Beispiel für eine absolute Angebe des URIs:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

und hier ein Beispiel für eine relative Angabe eines URIs:

<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

 
© 2005-2007 by java-server.net
Linktipps: Scherer Informatik - The Java Company   Reise Rom   Warmduscher ABC