17.5 Skript-Elemente
Neben dem Inhalt der HTML-Datei (der Template genannt wird) lassen sich drei unterschiedliche JSP-Konstrukte in eine Seite einbinden:
|
Skript-Elemente
Sie enthalten Java-Programmcode, der direkt in das Servlet wandert. Es gibt unterschiedliche Typen für Ausdrücke, Anweisungen und Deklarationen. Normale Anweisungen werden Scriptlets genannt. |
|
Direktiven
Direktiven steuern die Struktur der Seite. |
|
Aktionen
Es handelt sich um das Nutzen von vorgefertigten Komponenten wie Beans, Einbinden von externen Seiten und Weiterleitung an andere Seiten. |
Allen gemeinsam ist, dass sie mit dem Tag <% beginnen und mit %> enden. Skript-Tags können nicht geschachtelt werden.
Hinter dem öffnenden Tag kann noch ein weiteres Zeichen folgen, wie diese Aufzählung zeigt:
|
<% .. %>
Eingebettete Java-Stücke (Scriptlets) besitzen dieses Format. Hier lassen sich beliebige Anweisungen einsetzen, die in einer Methode gültig sind und auch Ausgaben machen. |
|
<%= .. %>
Der Ausdruck wird in die Seite eingebaut. |
|
<%! .. %>
Diese Umgebung definiert Variablen, Methoden und innere Klassen. |
Es ist wegen der ähnlichen Schreibweise wichtig, die Unterscheidung zwischen Deklaration (!), Ausdruck (=) und Scriptlet aufrecht zu halten, da es sonst zu Compilermeldungen des JSP-Übersetzers kommt.
17.5.1 Scriptlets
Scriptlets liegen zwischen den Tags <% und %>. Zwischen ihnen kann beliebiger Java-Quellcode eingebettet werden.
Listing 17.4 wieFuehlIchMich.jsp
<% if ( Math.random() > 0.5 ) { %>
Wow, bist du gut drauf.
<% } else { %>
Du bist ja ein super Hecht.
<% } %>
Die Block-Klammern sollten grundsätzlich gesetzt werden, auch wenn es im Einzelfall ohne Klammern funktioniert. Das liegt daran, dass der JSP-Compiler die Templates in beliebig vielen Anweisungen aufspalten kann, so dass dann zwischen if und else mehr als eine Anweisung liegen.
17.5.2 Ausdrücke
JSP-Ausdrücke sind eine Abkürzung für out.println() innerhalb von Scriptlets. Innerhalb der Tags <%= und %> steht ein gültiger Java-Ausdruck ohne abschließendes Semikolon (da es automatisch in ein print() gesetzt wird, und da steht ja auch kein Semikolon vor der schließenden Klammer).
Listing 17.5 ausdruck.jsp
<% double w=2; %> Die Wurzel von <%= w %> ist <%= Math.sqrt(w) %>
<p>
Die aktuelle Zeit ist <%= new java.util.Date() %>
<p>
Hallo <%= request.getRemoteHost() %>.
Meine Ausgabe ist:
Die Wurzel von 2.0 ist 1.4142135623730951
Die aktuelle Zeit ist Sat Aug 02 15:45:22 CEST 2003
Hallo 127.0.0.1.
17.5.3 Deklarationen
Die bisherigen Einbettungen wurden vom JSP-Compiler automatisch in eine spezielle Funktion gelegt - Methoden lassen sich doch nicht deklarieren. Zwischen den Tags <%! und %> lassen sich nun Dinge außerhalb dieser JSP-Funktion definieren, zum Beispiel Objektvariablen, Methoden oder innere Klassen. In Ausdrücken und Scriptlets können wir dann die Methoden aufrufen und die Variablen nutzen.
Listing 17.6 points.jsp
<%! double d; %>
<%! java.awt.Point p = new java.awt.Point(2,3),
q = new java.awt.Point(5,8); %>
<%! public java.awt.Point zufall(
java.awt.Point p, java.awt.Point q ) {
return ( Math.random() > 0.5 ) ? p : q; } %>
<%= zufall(p,q) %>
Der Gültigkeitsbereich der Eigenschaften umfasst die aktuelle Datei sowie möglicherweise zusätzlich eingebundene Dateien. Häufig wird so in Ausdrücken oder Scriptlets auf diese Eigenschaften verwiesen.
17.5.4 Kommentare und Quoting
Kommentare
In einer Server-Seite können zwei Arten von Kommentaren eingesetzt werden. Einmal Kommentare, die nicht im HTML-Text umgebaut werden und folglich auch nicht zum Browser wandern. Sie haben eines der beiden Formate:
<%-- Kommentar --%>
<% /** Kommentar **/ %>
JSP-Kommentare lassen sich, genauso wie normale Kommentare, nicht schachteln.
Der zweite Typ Kommentar ist ein HTML-Kommentar, der auf der Client-Seite sichtbar ist. Er hat folgendes Format:
<!-- Kommentar
-->
Das Elegante dieser Schreibweise ist, dass in den Kommentar noch Ausdrücke eingesetzt werden können. Um zum Beispiel eine Versionsnummer, die in der Variablen version gehalten wird, zu schreiben, reicht Folgendes:
<!-- <%= version %>
-->
Quoting
Das Quoting ersetzt spezielle Zeichenketten, die andernfalls falsch interpretiert werden können. Wir kennen dieses schon von Strings, die ein »«« einbringen wollen. Hier musste \" geschrieben werden, damit das Anführungszeichen nicht fälschlicherweise als Endzeichen angesehen wird. In JSP haben wir ebenso die üblichen Regeln für das Quoting. Für die Skript-Elemente ist aber <% %> eine Zeichenkette, die als Einheit gilt. In Zeichenketten schreiben wir daher für <% einfach <\% und für %> dies ebenso mit einem Backslash %\>.
|