Wikibooks hat ein Buch zum Thema: J2EE-Programmierung / JavaServer Pages
Java-Code muss nicht vollständig oder in sich geschlossen sein innerhalb eines einzelnen Scriptlet-Blocks. Es kann Markup-Inhalte überspannen, vorausgesetzt, die Seite als Ganzes ist syntaktisch korrekt. Beispielsweise müssen alle in einem Scriptlet geöffneten Java if/for/while-Blöcke in einem späteren Scriptlet korrekt geschlossen werden, damit die Seite erfolgreich kompiliert werden kann. Dies ermöglicht die Vermischung von Code und kann zu schlechten Programmierpraktiken führen.,
Inhalte, die in einen geteilten Java-Codeblock (der sich über mehrere Scriptlets erstreckt) fallen, unterliegen diesem Code. Der Inhalt innerhalb eines if-Blocks wird nur in der Ausgabe angezeigt, wenn die if-Bedingung als true ausgewertet wird. Ebenso kann der Inhalt innerhalb eines Schleifenkonstrukts mehrmals in der Ausgabe angezeigt werden, abhängig davon, wie oft der Schleifenkörper ausgeführt wird.
Folgendes wäre eine gültige for-Schleife auf einer JSP-Seite:
<p>Counting to three:</p><% for (int i=1; i<4; i++) { %> <p>This number is <%= i %>.</p><% } %><p>OK.</p>
Die im Webbrowser des Benutzers angezeigte Ausgabe lautet:
Counting to three:This number is 1.This number is 2.This number is 3.OK.
Expression LanguageEdit
Version 2.,0 der JSP-Spezifikation fügte Unterstützung für die Expression Language (EL) hinzu, die für den Zugriff auf Daten und Funktionen in Java-Objekten verwendet wird. In JSP 2.1 wurde es in die Unified Expression Language gefaltet, die auch in JavaServer Faces verwendet wird.
Ein Beispiel für die EL-Syntax:
Der Wert von „variable“im Objekt“ javabean “ ist ${javabean.variabel}.
Zusätzliche tagsEdit
Die JSP-Syntax fügt zusätzliche Tags hinzu, die als JSP-Aktionen bezeichnet werden, um die integrierte Funktionalität aufzurufen., Darüber hinaus ermöglicht die Technologie die Erstellung benutzerdefinierter JSP-Tag-Bibliotheken, die als Erweiterungen für die Standard-JSP-Syntax fungieren. Eine solche Bibliothek ist die JSTL, mit Unterstützung für gemeinsame Aufgaben wie Iteration und conditionals (das Äquivalent von „for“ und „if“ Anweisungen in Java.)