Im Gegensatz zu JSP-Anweisungselementen funktionieren JSP-Aktionselemente während der Anforderungsverarbeitungsphase. JSP-Aktionselemente werden in XML-Syntax geschrieben.
Verwenden Sie JSP-Aktionen, um Dateien dynamisch einzufügen, JavaBean-Komponenten wiederzuverwenden, Benutzer auf andere Seiten umzuleiten und HTML-Code für Java-Plug-Ins zu generieren.
Für Aktionselemente gibt es nur eine Syntax, die dem XML-Standard entspricht:
<jsp:action_name attribute="value" />
Aktionselemente sind im Grunde vordefinierte Funktionen. Die JSP-Spezifikation definiert eine Reihe von Standardaktionen, die JSP als Präfix verwenden. Die verfügbaren Standardaktionselemente sind wie folgt.
| Grammatik | beschreiben |
|---|---|
| jsp:include | Importieren Sie eine Datei, wenn die Seite angefordert wird. |
| jsp:useBean | Suchen oder instanziieren Sie eine JavaBean. |
| jsp:setProperty | Legen Sie JavaBean-Eigenschaften fest. |
| jsp:getProperty | Gibt die Eigenschaften einer JavaBean aus. |
| jsp:weiterleiten | Senden Sie die Anfrage an eine neue Seite. |
| jsp:plugin | Erzeugt je nach Browsertyp OBJECT- oder EMBED-Tags für Java-Plug-Ins. |
| jsp:element | Definieren Sie dynamische XML-Elemente |
| jsp:Attribut | Legen Sie dynamisch definierte XML-Elementattribute fest. |
| jsp:body | Legt den Inhalt eines dynamisch definierten XML-Elements fest. |
| jsp:text | Verwenden von Vorlagen, die Text in JSP-Seiten und -Dokumente schreiben |
Alle Aktionselemente haben zwei Attribute: das ID-Attribut und das Scope-Attribut.
ID-Attribut:
Das ID-Attribut ist die eindeutige Kennung des Aktionselements und kann auf der JSP-Seite referenziert werden. Der vom Aktionselement erstellte ID-Wert kann über PageContext aufgerufen werden.
Bereichsattribut:
Dieses Attribut wird verwendet, um den Lebenszyklus des Aktionselements zu identifizieren. Das ID-Attribut steht in direktem Zusammenhang mit dem Scope-Attribut und das Scope-Attribut definiert die Lebensdauer des zugehörigen ID-Objekts. Das Bereichsattribut hat vier mögliche Werte: (a) Seite, (b) Anfrage, (c) Sitzung und (d) Anwendung.
Das Aktionselement <jsp:include> wird zum Einbinden statischer und dynamischer Dateien verwendet. Diese Aktion fügt die angegebene Datei in die generierte Seite ein. Das Syntaxformat ist wie folgt:
<jsp:include page="relative URL" flush="true" />
Die Include-Direktive wurde bereits eingeführt. Sie führt Dateien ein, wenn die JSP-Datei in ein Servlet konvertiert wird. Die Aktion jsp:include ist hier unterschiedlich.
Im Folgenden finden Sie eine Liste von Eigenschaften, die sich auf die Include-Aktion beziehen.
| Eigentum | beschreiben |
|---|---|
| Seite | Die relative URL-Adresse, die in der Seite enthalten ist. |
| spülen | Boolesche Eigenschaft, die definiert, ob der Cache geleert werden soll, bevor die Ressource eingeschlossen wird. |
Im Folgenden definieren wir zwei Dateien date.jsp und main.jsp. Der Code lautet wie folgt:
date.jsp-Dateicode:
<p> Heutiges Datum: <%= (new java.util.Date()).toLocaleString()%></p>
main.jsp-Dateicode:
<html><head><title>Das Beispiel für die Include-Aktion</title></head><body><center><h2>Das Beispiel für die Include-Aktion</h2><jsp:include page="date.jsp" Flush ="true" /></center></body></html>
Legen Sie nun die beiden oben genannten Dateien im Stammverzeichnis des Servers ab und greifen Sie auf die Datei main.jsp zu. Die angezeigten Ergebnisse lauten wie folgt:
Die Include-Aktion Beispielheutiges Datum: 12.09.2013 14:54:22
Die Aktion jsp:useBean wird zum Laden einer JavaBean verwendet, die auf der JSP-Seite verwendet wird.
Diese Funktion ist sehr nützlich, da sie es uns ermöglicht, die Wiederverwendung von Java-Komponenten zu nutzen und gleichzeitig den Komfortverlust zu vermeiden, der JSP von Servlets unterscheidet.
Die einfachste Syntax für die Aktion jsp:useBean lautet:
<jsp:useBean id="name" />
Nachdem die Klasse geladen wurde, können wir die Eigenschaften der Bean über die Aktionen jsp:setProperty und jsp:getProperty ändern und abrufen.
Im Folgenden finden Sie eine Liste von Eigenschaften im Zusammenhang mit der useBean-Aktion.
| Eigentum | beschreiben |
|---|---|
| Klasse | Geben Sie den vollständigen Paketnamen der Bean an. |
| Typ | Gibt den Typ an, der auf die Objektvariable verweist. |
| beanName | Geben Sie den Namen der Bean über die Methode „instantiate()“ von java.beans.Beans an. |
Bevor wir konkrete Beispiele nennen, schauen wir uns zunächst die Aktionselemente jsp:setProperty und jsp:getProperty an:
jsp:setProperty wird verwendet, um die Eigenschaften des instanziierten Bean-Objekts festzulegen. Es gibt zwei Möglichkeiten, es zu verwenden. Erstens können Sie jsp:setProperty außerhalb (hinter) dem jsp:useBean-Element verwenden, etwa so:
<jsp:useBean id="myName" ... />...<jsp:setProperty name="myName" property="someProperty" .../>
Zu diesem Zeitpunkt wird jsp:setProperty ausgeführt, unabhängig davon, ob jsp:useBean eine vorhandene Bean findet oder eine neue Bean-Instanz erstellt. Die zweite Verwendung besteht darin, jsp:setProperty in das jsp:useBean-Element einzufügen, wie unten gezeigt:
<jsp:useBean id="myName" ... >... <jsp:setProperty name="myName" property="someProperty" .../></jsp:useBean>
Zu diesem Zeitpunkt wird jsp:setProperty nur beim Erstellen einer neuen Bean-Instanz ausgeführt. Wenn eine vorhandene Instanz verwendet wird, wird jsp:setProperty nicht ausgeführt.
| Eigentum | beschreiben |
|---|---|
| Name | Das Namensattribut ist erforderlich. Es gibt an, für welches Bean die Eigenschaft festgelegt werden soll. |
| Eigentum | Das Eigenschaftsattribut ist erforderlich. Es gibt an, welche Eigenschaft festgelegt werden soll. Es gibt eine besondere Verwendung: Wenn der Wert der Eigenschaft „*“ ist, bedeutet dies, dass alle Anforderungsparameter, deren Namen mit den Bean-Eigenschaftsnamen übereinstimmen, an die entsprechende Eigenschaftssatzmethode übergeben werden. |
| Wert | Das Wertattribut ist optional. Mit dieser Eigenschaft wird der Wert der Bean-Eigenschaft angegeben. Zeichenfolgendaten werden über die Standardmethode valueOf in der Zielklasse automatisch in Zahlen, Boolesche Werte, Boolesche Werte, Byte, Byte, Zeichen und Zeichen konvertiert. Beispielsweise werden Attributwerte vom Typ Boolean und Boolean (z. B. „true“) von Boolean.valueOf konvertiert, und Attributwerte vom Typ int und Integer (z. B. „42“) werden von Integer.valueOf konvertiert. Wert und Parameter können nicht gleichzeitig verwendet werden, aber beide können verwendet werden. |
| param | param ist optional. Es gibt an, welcher Anforderungsparameter als Wert der Bean-Eigenschaft verwendet wird. Wenn die aktuelle Anfrage keine Parameter hat, wird nichts unternommen und das System übergibt keinen Nullwert an die Set-Methode der Bean-Eigenschaft. Daher können Sie die Bean den Standardeigenschaftswert selbst bereitstellen lassen und den Standardeigenschaftswert nur ändern, wenn der Anforderungsparameter explizit einen neuen Wert angibt. |
Die Aktion jsp:getProperty extrahiert den Wert der angegebenen Bean-Eigenschaft, wandelt ihn in einen String um und gibt ihn dann aus. Das Syntaxformat ist wie folgt:
<jsp:useBean id="myName" ... />...<jsp:getProperty name="myName" property="someProperty" .../>
Die folgende Tabelle enthält die mit getProperty verknüpften Eigenschaften:
| Eigentum | beschreiben |
|---|---|
| Name | Der Name der abzurufenden Bean-Eigenschaft. Bean muss definiert sein. |
| Eigentum | Gibt an, dass der Wert der Bean-Eigenschaft extrahiert werden soll |
In den folgenden Beispielen verwenden wir Beans:
/* Datei: TestBean.java */package action; public class TestBean { private String message = "Keine Nachricht angegeben"; public String getMessage() { return(message); public void setMessage(String message) { this.message = Nachricht; }}Kompilieren Sie das obige Beispiel und generieren Sie die Datei TestBean.class. Kopieren Sie die Datei in das Verzeichnis, in dem der Server offiziell Java-Klassen speichert, und nicht in das Verzeichnis, das für Klassen reserviert ist, die nach der Änderung automatisch geladen werden können (z. B. C:Apache-Tomcat). -7.0.2 webappsWEB-INFclassesaction Verzeichnis, die Variable CLASSPATH muss diesen Pfad enthalten). Beispielsweise sollten für Java Web Server Beans und alle von Beans verwendeten Klassen im Klassenverzeichnis abgelegt oder in JAR-Dateien gekapselt und im lib-Verzeichnis abgelegt werden, sie sollten jedoch nicht unter Servlets abgelegt werden. Das Folgende ist ein sehr einfaches Beispiel. Seine Funktion besteht darin, eine Bean zu laden und dann ihre Nachrichteneigenschaft festzulegen/zu lesen.
Rufen wir nun die Bean in der Datei main.jsp auf:
<html><head><title>JavaBeans in JSP verwenden</title></head><body><center><h2>JavaBeans in JSP verwenden</h2> <jsp:useBean id="test" /> < jsp:setProperty name="test" property="message" value="Hallo JSP..." /> <p>Nachricht erhalten...</p> <jsp:getProperty name="test" property="message " /> </center></body></html>
Führen Sie die obige Datei aus und die Ausgabe sieht wie folgt aus:
Verwendung von JavaBeans in der JSPGot-Nachricht ... Hallo JSP ...
Die Aktion jsp:forward leitet die Anfrage an eine andere Seite weiter. Das jsp:forward-Tag hat nur ein Attribut, page. Das Syntaxformat ist wie folgt:
<jsp:forward page="Relative URL" />
Die folgenden Attribute sind mit der Weiterleitung verbunden:
| Eigentum | beschreiben |
|---|---|
| Seite | Das Seitenattribut enthält eine relative URL. Der Wert der Seite kann direkt angegeben oder während der Anfrage dynamisch berechnet werden. Es kann sich um eine JSP-Seite oder ein Java-Servlet handeln. |
In den folgenden Beispielen verwenden wir zwei Dateien: date.jsp und main.jsp.
Der Dateicode date.jsp lautet wie folgt:
<p> Heutiges Datum: <%= (new java.util.Date()).toLocaleString()%></p>
main.jsp-Dateicode:
<html><head><title>Das Beispiel für die Vorwärtsaktion</title></head><body><center><h2>Das Beispiel für die Vorwärtsaktion</h2><jsp:forward page="date.jsp" / ></center></body>
Legen Sie nun die beiden oben genannten Dateien im Stammverzeichnis des Servers ab und greifen Sie auf die Datei main.jsp zu. Die angezeigten Ergebnisse lauten wie folgt:
Heutiges Datum: 12.09.2010 14:54:22
Die Aktion jsp:plugin wird verwendet, um je nach Browsertyp die OBJECT- oder EMBED-Elemente einzufügen, die zum Ausführen des Java-Applets über das Java-Plug-in erforderlich sind.
Wenn das erforderliche Plug-in nicht vorhanden ist, lädt es das Plug-in herunter und führt dann die Java-Komponente aus. Eine Java-Komponente kann ein Applet oder ein JavaBean sein.
Die Plugin-Aktion verfügt über mehrere Attribute, die HTML-Elementen entsprechen, die zum Formatieren von Java-Komponenten verwendet werden. Das param-Element kann verwendet werden, um Parameter an Applet oder Bean zu übergeben.
Das Folgende ist ein typisches Beispiel für die Verwendung des Plugin-Aktionselements:
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" > <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value=" black" /> <jsp:fallback> Das Java-Plugin </jsp:fallback> </jsp:plugin> konnte nicht initialisiert werden
Wenn Sie interessiert sind, können Sie versuchen, das jsp:plugin-Aktionselement mit einem Applet zu testen. Das Element <fallback> ist ein neues Element. Wenn die Komponente ausfällt, wird eine Fehlermeldung an den Benutzer gesendet.
Die Aktionselemente <jsp:element>, <jsp:attribute> und <jsp:body> definieren dynamisch XML-Elemente. Dynamik ist sehr wichtig, was bedeutet, dass XML-Elemente zur Kompilierungszeit dynamisch und nicht statisch generiert werden.
Das folgende Beispiel definiert dynamisch XML-Elemente:
<%@page language="java" contentType="text/html"%><html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun. com/JSP/Page"><head><title>XML-Element generieren</title></head><body><jsp:element name="xmlElement"><jsp:attribute name="xmlElementAttr"> Wert für attribute</jsp:attribute><jsp:body> Body für XML-Element</jsp:body></jsp:element></body></html>
Der während der Ausführung generierte HTML-Code lautet wie folgt:
<html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>XML-Element generieren</ title></head><body><xmlElement xmlElementAttr="Wert für das Attribut"> Body für XML-Element</xmlElement></body></html>
Das Aktionselement <jsp:text> ermöglicht die Verwendung von Vorlagen zum Schreiben von Text in JSP-Seiten und -Dokumenten. Das Syntaxformat ist wie folgt:
<jsp:text>Vorlagendaten</jsp:text>
Die obige Textvorlage kann keine anderen Elemente enthalten, sondern nur Text und EL-Ausdrücke (Hinweis: EL-Ausdrücke werden in den folgenden Kapiteln eingeführt). Bitte beachten Sie, dass Sie in XML-Dateien keine Ausdrücke wie ${whatever > 0} verwenden können, da das >-Symbol unzulässig ist. Sie können den Ausdruck ${whatever gt 0} oder den in einen CDATA-Abschnitt eingebetteten Wert verwenden.
<jsp:text><![CDATA[<br>]]></jsp:text>
Wenn Sie DOCTYPE in XHTML deklarieren müssen, müssen Sie das Aktionselement <jsp:text> verwenden. Ein Beispiel ist wie folgt:
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]></jsp:text>< head><title>jsp:text action</title></head><body><books><book><jsp:text> Willkommen bei JSP Programmierung</jsp:text></book></books></body></html>
Sie können das obige Beispiel ausprobieren, um den Unterschied in den Ausführungsergebnissen zu sehen, wenn Sie <jsp:text> verwenden und dieses Aktionselement nicht verwenden.