JSP-Tags Syntaxreferenz
In diesem Abschnitt wollen wir alle Tags, die wir kennen gelernt haben, zusammenstellen sowie noch einige weitere Tags vorstellen. Beachten Sie parallel die JSP Syntax Referenz, um sich mit der Dokumentation vertraut zu machen.
Die einfachen Tags
Zu den einfachen Tags zählen: Der Kommentar Tag,
Code: Kommentar Tag
<%-- Ich bin ein Kommentar in JSP --%>
der Expression Tag zur direkten Ausgabe in die Seite:
Code: Expression Tag
<%= „Heute ist „+ new java.util.Date() %>
Scriptlets sind kleine Codefragmente, die im mit der Ausgabe der Seite ausgeführt werden. In Scriptlets können sie keine Methoden definieren. Zeilen in Scriptlets enden mit Semikolon:
Code: Scriptlet
<%
for (int i=0;i<value; i++) {
out.println(“<option value=\””+ i +”\”>”+text[i]);
}
%>
Um Methoden und globale Variablen zu definieren nutzen Sie Declarations
Code: Declaration
<%! public static final int GLOBAL_VALUE=44; %>
Die Bean Tags
Um Java-Beans automatisiert zu behandeln, haben wir eben kennen gelernt:
Code: Bean Tags
<jsp:userBean id=“beanName“ scope=“session“ class=“my.package.Aclass“/>
<!—alle Properties, die im Request sind und zur Bean passen, setzen ?
<jsp:setProperty name=”beanName” property=”*”/>
<!— ein bestimmte Properties aus dem Request setzen -->
<jsp:setProperty name=“beanName“ property=“aProperty“/>
<!—eine bestimme Property frei setzen -->
<jsp:setProperty name=“beanName“ property=“aProperty“ value=“<%=aValue%>“/>
<!—Eigenschaften der Bean in die Seite ausgeben -- >
<jsp:getProperty name=“beanName“ property=“aProperty“/>
Alternativ zu getProperty können Sie die passende Methode auch auf dem Objekt aufrufen und das Ergebnis ausgeben:
<%= beanName.getAProperty() %>
oder als Scriptlet:
<% out.println(beanName.getAProperty(); %>
Die Dispatcher Tags
Die Dispatcher Tags leiten den Request an eine andere JSP oder an ein Servlet zur weiteren Verarbeitung weiter. Das geschieht nicht dadurch, dass der Browser eine Rehdirekt-Anweisung erhält; vielmehr bekommt der Browser davon überhaupt nichts mit. Der Server leitet, wenn er bei der Abarbeitung einer JSP auf diesen Tag stößt, die Request- und Responseobjekte an eine andere JSP respektive ihre generierte Java-Klasse weiter.
Code: Dispatcher Tags
<jsp:include page=“/namedServlet“/>
<jsp:forward page=“/namedServlet“ flush=”true”/>
Beim <jsp:include ../> Tag wird nach Abarbeitung der zweiten Klasse wieder zur ursprünglichen JSP zurückgekehrt, die dann den Prozess abschließt. Der <jsp:forward ../> Tag gibt die Kontrolle an die zweite Klasse / JSP ab und kehr nicht mehr zurück. Mit flush können Sie steuern, ob die JSP ihre bisher erzeugte Ausgabe an den Browser schicken soll, bevor die zweite Seite ausgeführt wird. Per Voreinstellung wird die Ausgabe gepuffert (flush=“false“), falls der Puffer ausreicht.
Die Include Direktive
Code: Include Direktive
<%@ include file=“lib/inc.jsp“%>
Die Include Direktive fügt Code aus externen Dateien in die JSP ein, bevor die JSP kompiliert wird. Dies ist das erwartete Verhalten, dass Sie von anderen Sprachen (wie PHP include(„aFile.php“)) kennen. Der inkludierte Code wird mit der JSP kompiliert und mit ihr anschließend ausgeführt. Sie können auf alle Variablen der inkludierenden JSP zugreifen; die eingefügte Datei muss für sich nicht kompilierfähig sein.
Beachten Sie, dass Tomcat u.U. nicht merkt, wenn Sie die einzufügende Datei ändern, ohne dass die inkludierende geändert wird. Dies ist ein häufiger Quell der Verzweiflung, weil unsere Änderungen plötzlich keine Wirkung mehr zu haben scheinen. Nehmen Sie daher auch eine kleine Änderung an der inkludierenden Datei vor, wenn Sie Includes ändern.
Die Page Direktive
In der Page Direktive werden seitenweite Angaben gemacht, die sowohl für den Server als auch für die Ausgabe an den Browser relevant sein können. Die für uns wichtigen Angaben:
Code: Page Direktive - import
<%@ import=“java.util.* ;java.text.NumberFormat‘’ %>
Mit import werden die Java Klassen und Packages angegeben, die in der Seite verwendet werden. Diese Informationen benötigt der Compiler. Alle Klassen und Packages, die Sie hier, können Sie in der JSP ohne Package-Angabe verwenden. Sie können prinzipiell auf die import-Angabe in der Page-Direktive verzichten und alle verwendeten Java-Klassen mit voll qualifiziertem Pfad (java.util.Date now =new java.util.Date()) angeben, allerdings ist das recht mühsam.
Code: Page Direktive – errorPage
<%@ errorPage=“/error.jsp“%>
ErrorPage gibt eine Seite an, die aufgerufen werden soll, wenn in der JSP ein Fehler bei der Ausführung auftritt. Sie können Error-Pages aber auch global für alle JSPs definieren, sodass Sie diese Direktive nur in besonderen Fällen nutzen werden.
Code: Page Direktive -contentType
<%@ contentType=“text/plain“%>
Gibt an, welchen Content die JSP produziert. Voreinstellung ist „text/html“. Der Inhalt dieses Feldes wird als Content Type Header an den Browser geschickt.
Code: Page Direktive -pageEncoding
<%@ pageEncoding=“ISO-8859-1“ %>
ISO-8859-1 ist ein brauchbares Encoding für deutsche und englische Texte und im Allgemeinen die richtige Wahl. Es ist auch die Voreinstellung. Weitere mögliche Angaben ISO-8859-2 bis ISO-8859-10 für Nicht-Lateinschriften, für Unicode UTF-8 oder UTF-16 und ASCII für 7 Bit-Kodierung. Eine gute Einführung mit weiterführenden Links zum Thema Zeichensätze bei SELFHTML.
Eine vollständige Referenz der JSP Tags finden sie bei Sun.