English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Im Gegensatz zu JSP-Direktivelementen wirken JSP-Aktionselemente im Anforderungsverarbeitungsstadium. JSP-Aktionselemente werden in XML-Syntax geschrieben.
Mit JSP-Aktionen können Dateien dynamisch eingefügt, JavaBean-Komponenten wiederverwendet, Benutzer zu anderen Seiten umgeleitet, HTML-Code für Java-Plugins generiert werden.
Aktionselemente haben nur eine Syntax, die den XML-Standard entspricht:
<jsp:action_name attribute="value"> />
Aktionselemente sind im Allgemeinen vorgedefinierte Funktionen. Die JSP-Spezifikation definiert eine Reihe von Standardaktionen, die mit JSP als Präfix beginnen. Folgende Standardaktionselemente sind verfügbar:
Syntax | Beschreibung |
---|---|
jsp:include | Eine Datei zur Zeit der Anfrage der Seite einbinden. |
jsp:useBean | JavaBean suchen oder instanziieren. |
jsp:setProperty | Eigenschaft eines JavaBeans festlegen. |
jsp:getProperty | Eigenschaft eines JavaBeans ausgeben. |
jsp:forward | Die Anfrage an eine neue Seite umleiten. |
jsp:plugin | Für verschiedene Browser-Typen OBJECT- oder EMBED-Tags für Java-Plugins generieren. |
jsp:element | Dynamische XML-Elemente definieren |
jsp:attribute | Attribute dynamisch definierten XML-Elementes festlegen. |
jsp:body | Inhalt dynamisch definierten XML-Elementes festlegen. |
jsp:text | Vorlagen zum Einfügen von Text in JSP-Seiten und Dokumenten |
Alle Aktionselemente haben zwei Eigenschaften: id-Eigenschaft und scope-Eigenschaft.
id-Eigenschaft:
Die id-Eigenschaft ist die eindeutige Kennung des Aktionselements und kann in der JSP-Seite referenziert werden. Der id-Wert, der vom Aktionselement erstellt wird, kann über den PageContext aufgerufen werden.
scope-Eigenschaft:
Diese Eigenschaft wird verwendet, um den Lebenszyklus des Aktionselements zu identifizieren. Die id-Eigenschaft und die scope-Eigenschaft sind direkt miteinander verbunden. Die scope-Eigenschaft definiert das Leben der mit dem id verknüpften Objekts. Die scope-Eigenschaft hat vier mögliche Werte: (a) page, (b) request, (c) session und (d) application.
Das Element <jsp:include> wird verwendet, um statische und dynamische Dateien zu includieren. Diese Aktion fügt die angegebene Datei in die generierte Seite ein. Der Syntaxformat ist wie folgt:
<jsp:include page="relative URL-Adresse" flush="true"> />
Das include-Element wurde bereits vorgestellt. Es wird beim Umwandeln von JSP-Dateien in Servlets eingefügt, während die Aktion jsp:include zu einem anderen Zeitpunkt erfolgt, nämlich zur Zeit der Anfrage der Seite.
Hier ist eine Liste der Attribute, die mit der include-Aktion verbunden sind.
Eigenschaft | Beschreibung |
---|---|
page | Relative URL-Adresse, die in der Seite enthalten ist. |
flush | Boolean-Attribut, das definiert, ob der Cache vor dem Einbinden von Ressourcen aktualisiert wird. |
Nachfolgend haben wir zwei Dateien definiert date.jsp und main.jspWie folgt:
Code des Datei "date.jsp":
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <p> Das heutige Datum ist: <%= (new java.util.Date()).toLocaleString() %> </p>
Code des main.jsp-Datei:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <h2>Beispiel für die Aktion "include"</h2> <jsp:include page="date.jsp" flush="true" /> </body> </html>
Legen Sie die beiden Dateien nun im Wurzelverzeichnis des Servers ab und öffnen Sie die Datei main.jsp. Das Ergebnis ist wie folgt:
Beispiel für die Aktion "include" Das heutige Datum ist: 2016-6-25 14:08:17
jsp:useBean Die Aktion wird verwendet, um ein JavaBean zu laden, das in der JSP-Seite verwendet wird.
Diese Funktion ist sehr nützlich, da sie es uns ermöglicht, die Vorteile der Wiederverwendung von Java-Komponenten auszuschöpfen.
Die einfachste Syntax der Aktion "jsp:useBean" ist:
<jsp:useBean id="name" />
Nach dem Laden der Klasse können wir die Attribute des Beans durch die Aktionen "jsp:setProperty" und "jsp:getProperty" ändern und abrufen.
Nachfolgend finden Sie die Attributliste der Aktion "useBean".
Eigenschaft | Beschreibung |
---|---|
class | Der vollständige Paketname des Beans wird angegeben. |
type | Der Typ der Referenzvariable, die auf das Objekt verwiesen wird, wird angegeben. |
beanName | Durch das Verwenden der Methode "instantiate()" von "java.beans.Beans" wird der Name des Beans angegeben. |
Bevor wir konkrete Beispiele geben, lassen Sie uns zunächst die Aktionen "jsp:setProperty" und "jsp:getProperty" betrachten:
Die Aktion "jsp:setProperty" wird verwendet, um die Attribute eines bereits exemplifizierten Bean-Objekts zu setzen und hat zwei Verwendungen. Zunächst kann "jsp:setProperty" außerhalb des Elements "jsp:useBean" (hinterher) verwendet werden, wie folgt gezeigt:
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName" property="someProperty" ...>/>
In diesem Fall wird "jsp:setProperty" immer ausgeführt, egal ob "jsp:useBean" einen bestehenden Bean gefunden hat oder ein neues Exemplar erstellt hat. Die zweite Verwendung ist, "jsp:setProperty" innerhalb des Elements "jsp:useBean" zu platzieren, wie folgt gezeigt:
<jsp:useBean id="myName" ...> ... <jsp:setProperty name="myName" property="someProperty" ...>/> </jsp:useBean
In diesem Fall wird "jsp:setProperty" nur ausgeführt, wenn ein neues Bean-Exemplar erstellt wird, nicht jedoch, wenn ein bestehendes Exemplar verwendet wird.
Die Aktion "jsp:setProperty" hat folgende vier Attribute, wie in der folgenden Tabelle dargestellt:
Eigenschaft | Beschreibung |
---|---|
name | Das Attribut "name" ist obligatorisch. Es gibt an, für welchen Bean das Attribut gesetzt werden soll. |
property | Die Eigenschaft property ist obligatorisch. Sie stellt dar, welche Eigenschaft gesetzt werden soll. Es gibt eine spezielle Anwendung: Wenn der Wert von property "" ist*") bedeutet, dass alle Anfrageparameter mit denselben Namen wie die Bean-Eigenschaft an die entsprechenden set-Methode der Eigenschaft weitergegeben werden. |
value | value ist optional. Diese Eigenschaft wird verwendet, um den Wert der Bean-Eigenschaft zu spezifizieren. Zeichenfolgen-Daten werden im Zielklasse durch die Standardschnittstelle valueOf automatisch in Zahlen, boolean, Boolean, byte, Byte, char, Character konvertiert. Zum Beispiel werden boolean- und Boolean-Werte (wie "true") durch Boolean.valueOf konvertiert, int- und Integer-Werte (wie "42") wird durch Integer.valueOf konvertiert. value und param können nicht gleichzeitig verwendet werden, aber einer von ihnen kann verwendet werden. |
param | param ist optional. Es bestimmt, mit welchem Anfrageparameter der Wert der Bean-Eigenschaft als Wert verwendet wird. Wenn die aktuelle Anfrage keine Parameter hat, wird nichts unternommen, das System gibt nicht null an die set-Methode der Bean-Eigenschaft weiter. Daher können Sie die Bean selbst Standardwerte liefern, die nur geändert werden, wenn der neue Wert durch den Anfrageparameter explizit angegeben wird. |
Die Aktion <jsp:getProperty> extrahiert den Wert der angegebenen Bean-Eigenschaft, konvertiert ihn in einen String und gibt ihn aus. Die Syntax ist wie folgt:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
Die folgende Tabelle enthält Eigenschaften, die mit getProperty verbunden sind:
Eigenschaft | Beschreibung |
---|---|
name | der Name der Bean-Eigenschaft, die abgerufen werden soll. Die Bean muss bereits definiert sein. |
property | stellt den Wert der Bean-Eigenschaft dar, die extrahiert werden soll |
In folgendem Beispiel haben wir Bean verwendet:
package com.w3codebox.main; public class TestBean { private String message = "基础教程网"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
Kompilieren Sie den obigen Beispieldatei TestBean.java :
$ javac TestBean.java
Nach dem Kompilieren wird eine Datei im aktuellen Verzeichnis erstellt. TestBean.class Datei, Kopieren Sie diese Datei in das aktuelle JSP-Projekt, WebContent/WEB-INF/classes/com/w3codebox/mainunten ( com/w3codebox/main-Paketpfad, es muss nichts manuell erstellt werden).
Hier ist ein Verzeichnisstrukturdiagramm in Eclipse:
Hier ist ein sehr einfaches Beispiel, das eine Bean lädt und sie wie folgt setzt/Lesen Sie seine message-Eigenschaft ab.
Lassen Sie uns nun den Bean in der Datei main.jsp aufrufen:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <h2>Jsp verwendet JavaBean-Beispiel</h2> <jsp:useBean id="test" /> <jsp:setProperty name="test" property="message" value="Grund教程..." /> <p>Informationen ausgeben....</p> <jsp:getProperty name="test" property="message" /> </body> </html>
Durch den Browser aufgerufen, die obigen Dateien ausgeführt, die Ausgabe ist wie folgt:
jsp:forward-Befehl leitet die Anfrage auf eine andere Seite um. Der jsp:forward-Befehl hat nur eine Eigenschaft page. Die Syntax ist wie folgt:
<jsp:forward page="relative URL-Adresse" />
Hier sind die mit forward verbundenen Eigenschaften:
Eigenschaft | Beschreibung |
---|---|
page | Die property "page" enthält eine relative URL. Der Wert kann direkt angegeben oder bei der Anfrage dynamisch berechnet werden, sei es eine JSP-Seite oder ein Java Servlet. |
In den folgenden Beispielen haben wir zwei Dateien verwendet, nämlich: date.jsp und main.jsp.
Der Code der date.jsp-Datei ist wie folgt:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <p> Das heutige Datum ist: <%= (new java.util.Date()).toLocaleString() %> </p>
Code des main.jsp-Datei:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <h2>forward-Beispiel</h2> <jsp:forward page="date.jsp" /> </body> </html>
Legen Sie die beiden Dateien nun im Wurzelverzeichnis des Servers ab und öffnen Sie die Datei main.jsp. Das Ergebnis ist wie folgt:
Das heutige Datum ist: 2016-6-25 14:37:25
Der "jsp:plugin"-Befehl wird verwendet, um je nach Browser-Typ die notwendigen OBJECT- oder EMBED-Elemente einzufügen, die für die Ausführung von Java Applets durch Java-Plugins erforderlich sind.
如果需要的插件不存在,它会下载插件,然后执行Java组件。 Java组件可以是一个applet或一个JavaBean。
plugin动作有多个对应HTML元素的属性用于格式化Java 组件。param元素可用于向Applet 或 Bean 传递参数。
以下是使用plugin 动作元素的典型示例:
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" width="60" height="80"> <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value="black" /> <jsp:fallback> Unable to initialize Java Plugin </jsp:fallback> </jsp:plugin>
如果你有兴趣可以尝试使用applet来测试jsp:plugin动作元素,<fallback>元素是一个新元素,在组件出现故障的错误时发送给用户错误信息。
<jsp:element> 、 <jsp:attribute>、 <jsp:body>动作元素动态定义XML元素。动态是非常重要的,这就意味着XML元素在编译时是动态生成的而非静态。
以下示例动态定义了XML元素:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr"> 属性值 </jsp:attribute> <jsp:body> XML 元素的主体 </jsp:body> </jsp:element> </body> </html>
浏览器访问以下页面,输出结果如下所示:
<jsp:text>动作元素允许在JSP页面和文档中使用写入文本的模板,语法格式如下:
<jsp:text>模板数据</jsp:text>
以上文本模板不能包含重复元素,只能包含文本和EL表达式(注:EL表达式将在后续章节中介绍)。请注意,在XML文件中,您不能使用表达式如 ${whatever > 0},因为>符号是非法的。 你可以使用 ${whatever gt 0}表达式或者嵌入在一个CDATA部分的值。
<jsp:text><![CDATA[<br>]]></jsp:text>
如果你需要在XHTML中声明DOCTYPE,必须使用到<jsp:text>动作元素,示例如下:
<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> Welcome to JSP Programming </jsp:text></book></books> </body> </html>
你可以对以上示例尝试使用<jsp:text>及不使用该动作元素执行结果的区别。