Einleitung

Dieser Artikel beschreibt die Verwendung von JavaBeans innerhalb von JSP-Seiten. Bei den hier verwendeteten JavaBeans handelt es sich nicht um die sogenannten Enterprise Java Beans (EJB) sondern um die "einfacheren" simplen JavaBeans. Die Verwendung von JavaBeans innerhalb einer JSP soll in diesem Artikel anhand eines Beispielprogrammes erlätert werden.

Anlegen der Projektstruktur

Für das Beispielprogramm wird folgende Projektstruktur im Tomcat benötigt, die mit einem Dateimanager erzeugt werden kann:

<tomcat>
...
+webapps
  ...
  +beanexample
    +WEB-INF
      +classes
  ...
...
            

Das Java Bean

Nachfolgend der Quelltext des Java Beans, welches von der Beispiel JSP aus verwendet werden soll. Wichtig dabei ist, dass das Bean in einem Package liegt, da das Default-Package zumindest unter Tomcat nicht funktioniert.

package de.timpt;

import java.io.*;

public class SimpleBean implements Serializable{
  private String aStringValue;
  private double aDoubleValue;
  
  public SimpleBean(){
    aStringValue = "A Simple Bean";
    aDoubleValue = 132.23;
  }
  
  public String getAStringValue(){
    return aStringValue;
  }
  
  public void setAStringValue(String aStringValue){
    this.aStringValue = aStringValue;
  }
  
  public double getADoubleValue(){
    return aDoubleValue;
  }
  
  public void setADoubleValue(double aDoubleValue){
    this.aDoubleValue = aDoubleValue;
  }
}
itmapa.de - X2H V 0.20

Nach dem compilieren muss die class-Datei ins classes-Verzeichnis der Webanwedung unter Beibehaltung der Package-Struktur kopiert werden (sofern es nicht direkt dort kompiliert wird). Das SimpleBean muss demnach im folgenden Verzeichnis zu finden sein:

<tomcat>/webapps/beanexample/WEB-INF/classes/de/timpt/SimpleBean.class
            

Die JSP - lesen von Attributen aus dem Bean

Nachfolgend die JSP Seite, welche das SimpleBean verwendet:

<jsp:useBean id="mybean" class="de.timpt.SimpleBean" scope="page"/>
<html>
  <body>
    <h1>Bean Example</h1>
    <jsp:getProperty name="mybean" property="AStringValue"/>
    <br>
    <jsp:getProperty name="mybean" property="ADoubleValue"/>
  </body>
</html>
itmapa.de - X2H V 0.20

Mit der JSP-Aktion jsp:useBean in Zeile 01 wird das Bean der JSP zur Verwendung bekannt gemacht. Der Parameter id legt dabei den Namen fest, unter dem das Bean in der JSP angesprochen werden kann. Der Parameter class legt die zum Bean zugehörige Klasse fest, wobei die Endung ".class" nicht mit angegeben wird. Mit dem Parameter scope wird der Gültigkeitsbereich des Beans spezifiziert.

Um nun die Attribute des Java Beans auszulesen wird die Java-Aktion jsp:getProperty verwendet. Der Parameter name legt dabei den Namen des Beans fest (mit id in Zeile 01 festgelegt) und der Parameter property legt die auszuwertende Methode fest. Beim Parameter property werden sowohl die führenden "get" sowie die zugehörigen Klammern nicht mit angegeben.

Die JSP-Aktion jsp:getProperty finden in der Beispiel-JSP, in den Zeilen 05 und 07, Anwendung.

Setzen von Attributen eines Java Beans

Um ein Attribut innerhalb eines Beans zu setzten wird die JSP-Aktion <jsp:setProperty> verwendet. Die folgenden Attribute legen hierbei fest, welches Attribut eines Beans mit welchem Wert belgt werden soll:

  • name:
    Name des Beans, in dem der Parameter gesetzt werden soll. Der Name entspricht dabei dem Namen, der in der Aktion <jsp:useBean> definiert wurde.

  • property:
    Name des zusetzenden Attributes, wobei die gleichen Regeln wie bei <jsp:getProperty> gelten.

  • value:
    Ein expliziet zu setzende Wert.

  • param:
    Parametername aus dem Request, dessen Wert gesetzt werden soll. Wird param und value nicht gesetzt, wird nach einem mit gleichem Namen lautender Request-Parameter gesucht.

Gültigkeitsbereiche für Java Beans

Java Beans können folgende Gültigkeitsbereiche haben:

  • application
    Innerhalb der gesamten Webapplikation

  • session
    Innerhaltb einer Sitzung

  • request
    Innerhalb einer Anfrage

  • page
    Innerhalb einer JSP

Der Gültigkeitsbereichs eines Java Beans wird bei der JSP-Aktion jsp:useBean im Attribut scope festgelegt. Der Standardwert für scope ist page.