English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP动作元素

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:

SyntaxBeschreibung
jsp:includeEine Datei zur Zeit der Anfrage der Seite einbinden.
jsp:useBeanJavaBean suchen oder instanziieren.
jsp:setPropertyEigenschaft eines JavaBeans festlegen.
jsp:getPropertyEigenschaft eines JavaBeans ausgeben.
jsp:forwardDie Anfrage an eine neue Seite umleiten.
jsp:pluginFür verschiedene Browser-Typen OBJECT- oder EMBED-Tags für Java-Plugins generieren.
jsp:elementDynamische XML-Elemente definieren
jsp:attributeAttribute dynamisch definierten XML-Elementes festlegen.
jsp:bodyInhalt dynamisch definierten XML-Elementes festlegen.
jsp:textVorlagen zum Einfügen von Text in JSP-Seiten und Dokumenten

Gängige Eigenschaften

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.

Element <jsp:include>

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.

EigenschaftBeschreibung
pageRelative URL-Adresse, die in der Seite enthalten ist.
flushBoolean-Attribut, das definiert, ob der Cache vor dem Einbinden von Ressourcen aktualisiert wird.

Online-Beispiel

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

Element "<jsp:useBean>"

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".

EigenschaftBeschreibung
classDer vollständige Paketname des Beans wird angegeben.
typeDer Typ der Referenzvariable, die auf das Objekt verwiesen wird, wird angegeben.
beanNameDurch 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:

Element "<jsp:setProperty>"

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:

EigenschaftBeschreibung
nameDas Attribut "name" ist obligatorisch. Es gibt an, für welchen Bean das Attribut gesetzt werden soll.
propertyDie 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.
valuevalue 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.
paramparam 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.

Der Aktionselement <jsp:getProperty>

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:

EigenschaftBeschreibung
nameder Name der Bean-Eigenschaft, die abgerufen werden soll. Die Bean muss bereits definiert sein.
propertystellt den Wert der Bean-Eigenschaft dar, die extrahiert werden soll

Online-Beispiel

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-Befehls-Element

 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:

EigenschaftBeschreibung
pageDie 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.

Online-Beispiel

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

jsp:plugin-Befehls-Element

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>动作元素

<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: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>及不使用该动作元素执行结果的区别。