|
| ||
| ||
![]() |
Siehe dazu auch: MVC-Modell
Mit Einführung der Servlet API 2.4 und der Verabschiedung von JSP 2.0 ist es möglich, komplett auf JSP-Skriptelemente zu verzichten. JSPX-Dokumente entsprechen wohlgeformten XML-Dokumenten, deren Tag-Elemente durch eindeutige Namensräume definiert sind. So ist es beispielsweise möglich, XHTML-konforme Ausgaben zu erzeugen, ohne dass Tag-Bezeichner kollidieren.
Das folgende Beispiel zeigt das Gerüst eines wohlgeformten JSPX-Dokumentes zur Erzeugung von XHTML-Code. Über das XML-Wurzelelement „<jsp:root>“ werden ein Standardnamensraum für XHTML-Elemente definiert (xmlns) und ein Namensraum für JSP-Elemente (xmlns:jsp). Durch das Voranstellen des jeweiligen Namensraums (z. B. <jsp: ...) kann ein Tag auf diese Weise eindeutig referenziert werden. Auch Java Tag Libraries werden auf diese Weise als Namensraum eingebunden; eine entsprechende Direktive gibt es nicht mehr. Die Namensraumdefinition wird an Kindelemente vererbt.
Im Beispiel wird, aus Kompatibilitätsgründen zu aktuellen Browsern, über die JSP-Direktive „page“ als Content-Type "text/html" anstatt "application/xhtml+xml" vereinbart, da viele gängige Browser XHTML-Dokumente sonst als XML-Quelltext interpretieren würden, anstatt die XHTML-Elemente zu interpretieren und darzustellen.
<?xml version="1.0" encoding="utf-8"?> <jsp:root xmlns="http://www.w3.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> <jsp:output doctype-root-element="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> <jsp:directive.page contentType="text/html; charset=utf-8" language="java" /> <html xmlns="http://www.w3.org/1999/xhtml"> XHTML- und/oder JSP-Elemente </html> </jsp:root>
Eine weitere Neuerung ist die so genannte „Expression Language“ (EL). Die Expression-Language besteht aus Skriptelementen, die an Skriptelemente interpretierter Skriptsprachen angelehnt ist. Jedes Skriptelement beginnt mit einem Dollar-Zeichen und schließt einen Ausdruck (engl. expression) in geschweiften Klammern ein.
${1+2}, ${PI/2}, ${person.name}
Der Ausdruck kann ein einfacher Platzhalter einer Variablen sein, eine Konstante oder ein Term. Auch eine Referenzierung innerhalb abstrakter Datenstrukturen ist über Introspektion möglich.
Eine spezielle Erweiterung des JSP-Compilers ersetzt vor dem Kompiliervorgang jedes Vorkommen der EL-Elemente durch den entsprechenden Java-Code.
Die EL-Elemente wurden so konzipiert, dass sie vollständig ohne geschützte XML-Entitäten auskommen. Somit wird der Einsatz in wohlgeformten XML-Dokumenten möglich.