JSP - Aktionen

In diesem Kapitel werden wir Aktionen in JSP diskutieren. Diese Aktionen verwenden Konstrukte in der XML-Syntax, um das Verhalten der Servlet-Engine zu steuern. Sie können eine Datei dynamisch einfügen, JavaBeans-Komponenten wiederverwenden, den Benutzer auf eine andere Seite weiterleiten oder HTML für das Java-Plugin generieren.

Es gibt nur eine Syntax für das Action-Element, da es dem XML-Standard entspricht:

<jsp:action_name attribute = "value" />

Aktionselemente sind grundsätzlich vordefinierte Funktionen. In der folgenden Tabelle sind die verfügbaren JSP-Aktionen aufgeführt.

S.No. Syntax & Zweck
1

jsp:include

Enthält eine Datei zum Zeitpunkt der Anforderung der Seite.

2

jsp:useBean

Findet oder instanziiert eine JavaBean.

3

jsp:setProperty

Legt die Eigenschaft einer JavaBean fest.

4

jsp:getProperty

Fügt die Eigenschaft einer JavaBean in die Ausgabe ein.

5

jsp:forward

Leitet den Anforderer an eine neue Seite weiter.

6

jsp:plugin

Generiert einen browserspezifischen Code, der ein OBJECT- oder EMBED-Tag für das Java-Plugin erstellt.

7

jsp:element

Definiert XML-Elemente dynamisch.

8

jsp:attribute

Definiert das Attribut eines dynamisch definierten XML-Elements.

9

jsp:body

Definiert den Körper eines dynamisch definierten XML-Elements.

10

jsp:text

Wird zum Schreiben von Vorlagentext in JSP-Seiten und -Dokumenten verwendet.

Gemeinsame Attribute

Es gibt zwei Attribute, die allen Aktionselementen gemeinsam sind: das id Attribut und die scope Attribut.

ID-Attribut

Das id-Attribut identifiziert das Action-Element eindeutig und ermöglicht den Verweis auf die Aktion innerhalb der JSP-Seite. Wenn die Aktion eine Instanz eines Objekts erstellt, kann der ID-Wert verwendet werden, um über das implizite Objekt PageContext darauf zu verweisen.

Bereichsattribut

Dieses Attribut gibt den Lebenszyklus des Aktionselements an. Das ID-Attribut und das Bereichsattribut stehen in direktem Zusammenhang, da das Bereichsattribut die Lebensdauer des mit der ID verknüpften Objekts bestimmt. Das scope-Attribut hat vier mögliche Werte:(a) page, (b)request, (c)session, und (d) application.

Die Aktion <jsp: include>

Mit dieser Aktion können Sie Dateien in die zu generierende Seite einfügen. Die Syntax sieht so aus -

<jsp:include page = "relative URL" flush = "true" />

im Gegensatz zu den include Direktive, die die Datei zum Zeitpunkt der Übersetzung der JSP-Seite in ein Servlet einfügt. Diese Aktion fügt die Datei zum Zeitpunkt der Anforderung der Seite ein.

In der folgenden Tabelle sind die Attribute aufgeführt, die der Include-Aktion zugeordnet sind.

S.No. Attribut & Beschreibung
1

page

Die relative URL der einzuschließenden Seite.

2

flush

Das boolesche Attribut bestimmt, ob der Puffer der enthaltenen Ressource geleert wird, bevor sie eingeschlossen wird.

Beispiel

Definieren wir die folgenden zwei Dateien (a)date.jsp und (b) main.jsp wie folgt -

Es folgt der Inhalt der date.jsp Datei -

<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>

Es folgt der Inhalt der main.jsp Datei -

<html>
   <head>
      <title>The include Action Example</title>
   </head>
   
   <body>
      <center>
         <h2>The include action Example</h2>
         <jsp:include page = "date.jsp" flush = "true" />
      </center>
   </body>
</html>

Lassen Sie uns nun alle diese Dateien im Stammverzeichnis behalten und versuchen, darauf zuzugreifen main.jsp. Sie erhalten folgende Ausgabe:

The include action Example

Today's date: 12-Sep-2010 14:54:22

Die Aktion <jsp: useBean>

Das useBeanAktion ist sehr vielseitig. Zunächst wird anhand der Variablen id und scope nach einem vorhandenen Objekt gesucht. Wenn ein Objekt nicht gefunden wird, versucht es, das angegebene Objekt zu erstellen.

Der einfachste Weg, eine Bohne zu laden, ist wie folgt:

<jsp:useBean id = "name" class = "package.class" />

Sobald eine Bean-Klasse geladen ist, können Sie verwenden jsp:setProperty und jsp:getProperty Aktionen zum Ändern und Abrufen der Bean-Eigenschaften.

In der folgenden Tabelle sind die Attribute aufgeführt, die der Aktion useBean zugeordnet sind.

S.No. Attribut & Beschreibung
1

class

Bezeichnet den vollständigen Paketnamen der Bean.

2

type

Gibt den Typ der Variablen an, die auf das Objekt verweist.

3

beanName

Gibt den Namen der Bean an, der von der Instantiate () -Methode der Klasse java.beans.Beans angegeben wird.

Lassen Sie uns nun das diskutieren jsp:setProperty und die jsp:getProperty Aktionen, bevor Sie ein gültiges Beispiel für diese Aktionen angeben.

Die Aktion <jsp: setProperty>

Das setPropertyAktion legt die Eigenschaften einer Bean fest. Die Bean muss zuvor vor dieser Aktion definiert worden sein. Es gibt zwei grundlegende Möglichkeiten, die Aktion setProperty zu verwenden:

Sie können verwenden jsp:setProperty nach, aber außerhalb von a jsp:useBean Element, wie unten angegeben -

<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>

In diesem Fall ist die jsp:setProperty wird ausgeführt, unabhängig davon, ob eine neue Bean instanziiert oder eine vorhandene Bean gefunden wurde.

Ein zweiter Kontext, in dem jsp: setProperty erscheinen kann, befindet sich im Körper von a jsp:useBean Element, wie unten angegeben -

<jsp:useBean id = "myName" ... >
   ...
   <jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>

Hier wird die jsp: setProperty nur ausgeführt, wenn ein neues Objekt instanziiert wurde, nicht wenn ein vorhandenes gefunden wurde.

In der folgenden Tabelle sind die Attribute aufgeführt, die mit dem verknüpft sind setProperty Aktion -

S.No. Attribut & Beschreibung
1

name

Bezeichnet die Bean, deren Eigenschaft festgelegt wird. Die Bean muss zuvor definiert worden sein.

2

property

Gibt die Eigenschaft an, die Sie festlegen möchten. Der Wert "*" bedeutet, dass alle Anforderungsparameter, deren Namen mit den Bean-Eigenschaftsnamen übereinstimmen, an die entsprechenden Setter-Methoden übergeben werden.

3

value

Der Wert, der der angegebenen Eigenschaft zugewiesen werden soll. Wenn der Wert des Parameters null ist oder der Parameter nicht vorhanden ist, wird die Aktion setProperty ignoriert.

4

param

Das param-Attribut ist der Name des Anforderungsparameters, dessen Wert die Eigenschaft empfangen soll. Sie können nicht sowohl value als auch param verwenden, es ist jedoch zulässig, keines von beiden zu verwenden.

Die Aktion <jsp: getProperty>

Das getProperty Mit action wird der Wert einer bestimmten Eigenschaft abgerufen, in eine Zeichenfolge konvertiert und schließlich in die Ausgabe eingefügt.

Die Aktion getProperty verfügt nur über zwei Attribute, die beide erforderlich sind. Die Syntax der Aktion getProperty lautet wie folgt:

<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>

In der folgenden Tabelle sind die erforderlichen Attribute aufgeführt, die mit dem verknüpft sind getProperty Aktion -

S.No. Attribut & Beschreibung
1

name

Der Name der Bean, deren Eigenschaft abgerufen werden soll. Die Bean muss zuvor definiert worden sein.

2

property

Das Eigenschaftsattribut ist der Name der abzurufenden Bean-Eigenschaft.

Beispiel

Definieren wir eine Testbohne, die in unserem Beispiel weiter verwendet wird -

/* File: TestBean.java */
package action;
 
public class TestBean {
   private String message = "No message specified";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

Kompilieren Sie den obigen Code mit dem generierten TestBean.class Datei und stellen Sie sicher, dass Sie die TestBean.class in kopiert haben C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action Ordner und die CLASSPATH Variable sollte auch auf diesen Ordner gesetzt werden -

Verwenden Sie nun den folgenden Code in main.jspDatei. Dies lädt die Bean und setzt / erhält einen einfachen String-Parameter -

<html>
   
   <head>
      <title>Using JavaBeans in JSP</title>
   </head>
   
   <body>
      <center>
         <h2>Using JavaBeans in JSP</h2>
         <jsp:useBean id = "test" class = "action.TestBean" />
         <jsp:setProperty name = "test"  property = "message" 
            value = "Hello JSP..." />
            
         <p>Got message....</p>
         <jsp:getProperty name = "test" property = "message" />
      </center>
   </body>
</html>

Lassen Sie uns jetzt versuchen, darauf zuzugreifen main.jspwürde es das folgende Ergebnis anzeigen -

Using JavaBeans in JSP

Got message.... Hello JSP...

Die Aktion <jsp: forward>

Das forward action beendet die Aktion der aktuellen Seite und leitet die Anforderung an eine andere Ressource weiter, z. B. eine statische Seite, eine andere JSP-Seite oder ein Java-Servlet.

Es folgt die Syntax von forward Aktion -

<jsp:forward page = "Relative URL" />

In der folgenden Tabelle sind die erforderlichen Attribute aufgeführt, die der Weiterleitungsaktion zugeordnet sind.

S.No. Attribut & Beschreibung
1

page

Sollte aus einer relativen URL einer anderen Ressource bestehen, z. B. einer statischen Seite, einer anderen JSP-Seite oder einem Java-Servlet.

Beispiel

Lassen Sie uns die folgenden zwei Dateien wiederverwenden (a) date.jsp und (b) main.jsp wie folgt -

Es folgt der Inhalt der date.jsp Datei -

<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>

Es folgt der Inhalt der main.jsp Datei -

<html>
   <head>
      <title>The include Action Example</title>
   </head>
   
   <body>
      <center>
         <h2>The include action Example</h2>
         <jsp:forward page = "date.jsp" />
      </center>
   </body>
</html>

Lassen Sie uns nun alle diese Dateien im Stammverzeichnis behalten und versuchen, darauf zuzugreifen main.jsp. Dies würde das Ergebnis wie folgt anzeigen.

Hier wurde der Inhalt von der Hauptseite verworfen und nur der Inhalt von der weitergeleiteten Seite angezeigt.

Today's date: 12-Sep-2010 14:54:22

Die Aktion <jsp: plugin>

Das pluginMit der Aktion werden Java-Komponenten in eine JSP-Seite eingefügt. Es bestimmt den Browsertyp und fügt den ein<object> oder <embed> Tags nach Bedarf.

Wenn das benötigte Plugin nicht vorhanden ist, lädt es das Plugin herunter und führt dann die Java-Komponente aus. Die Java-Komponente kann entweder ein Applet oder eine JavaBean sein.

Die Plugin-Aktion verfügt über mehrere Attribute, die allgemeinen HTML-Tags entsprechen, die zum Formatieren von Java-Komponenten verwendet werden. Das<param> Element kann auch verwendet werden, um Parameter an das Applet oder Bean zu senden.

Im Folgenden finden Sie die typische Syntax für die Verwendung der Plugin-Aktion:

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

Sie können diese Aktion mit einem Applet versuchen, wenn Sie interessiert sind. Ein neues Element, das<fallback> Element, kann verwendet werden, um eine Fehlerzeichenfolge anzugeben, die an den Benutzer gesendet werden soll, falls die Komponente ausfällt.

The <jsp:element> Action

The <jsp:attribute> Action

The <jsp:body> Action

Das <jsp:element>, <jsp:attribute> und <jsp:body>Aktionen werden verwendet, um XML-Elemente dynamisch zu definieren. Das Wort dynamisch ist wichtig, da es bedeutet, dass die XML-Elemente zur Anforderungszeit und nicht statisch zur Kompilierungszeit generiert werden können.

Im Folgenden finden Sie ein einfaches Beispiel zum dynamischen Definieren von XML-Elementen:

<%@page language = "java" contentType = "text/html"%>
<html xmlns = "http://www.w3c.org/1999/xhtml"
   xmlns:jsp = "http://java.sun.com/JSP/Page">
   
   <head><title>Generate XML Element</title></head>
   
   <body>
      <jsp:element name = "xmlElement">
         <jsp:attribute name = "xmlElementAttr">
            Value for the attribute
         </jsp:attribute>
         
         <jsp:body>
            Body for XML element
         </jsp:body>
      
      </jsp:element>
   </body>
</html>

Dies würde zur Laufzeit den folgenden HTML-Code erzeugen -

<html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page">
   <head><title>Generate XML Element</title></head>
   
   <body>
      <xmlElement xmlElementAttr = "Value for the attribute">
         Body for XML element
      </xmlElement>
   </body>
</html>

Die Aktion <jsp: text>

Das <jsp:text>Mit der Aktion kann der Vorlagentext in JSP-Seiten und -Dokumente geschrieben werden. Es folgt die einfache Syntax für diese Aktion:

<jsp:text>Template data</jsp:text>

Der Hauptteil der Vorlage kann keine anderen Elemente enthalten. Es kann nur Text und EL-Ausdrücke enthalten (Hinweis - EL-Ausdrücke werden in einem nachfolgenden Kapitel erläutert). Beachten Sie, dass Sie in XML-Dateien keine Ausdrücke wie verwenden können${whatever > 0}, weil die Zeichen größer als illegal sind. Verwenden Sie stattdessen diegt Form, wie z ${whatever gt 0} oder eine Alternative besteht darin, den Wert in a einzubetten CDATA Sektion.

<jsp:text><![CDATA[<br>]]></jsp:text>

Wenn Sie a einschließen müssen DOCTYPE Erklärung, zum Beispiel für XHTMLmüssen Sie auch die verwenden <jsp:text> Element 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>  
         Welcome to JSP Programming
      </jsp:text></book></books>
   </body>
</html>

Versuchen Sie das obige Beispiel mit und ohne <jsp:text> Aktion.