Java 1
  • Home
  • Tutorials
    • Hello World
      • Download
      • Installation unter Windows
      • Installation unter Linux
      • Das Hello World Programm
      • Mehr Java
    • Java Konsole
      • Java Konsole Testen
    • Basic Java
      • Java Programme
        • Die Klasse
        • Datentypen
        • Null
        • Casten
        • Operatoren
        • Kontrollstrukturen
        • Arrays
        • Aufgaben
      • Objektorientierte Konzepte
        • Hallo Fenster
        • Objekte einer Klasse
        • Vererbung
        • Interfaces
      • Alles über Klassen
        • Abstrakte Klassen
        • Methoden überschreiben
        • Super
        • Final
        • Innere Klassen
        • Anonyme Klassen
        • Enumerations
      • You're just an object
        • Sichtbarkeit
        • Druckdarstellung
        • Gleichheit
        • Klonen
        • Die Class
        • Serialisierung
    • Java Api
      • Dokumentation
      • Strings
      • Wrapper Klassen
      • System und Runtime
      • Math
      • Exceptions
      • IO
      • Sammlungsklassen
      • AWT und Swing
      • Alle Komponenten
      • Applets
      • Threads
      • Jar
      • Classpath
    • JSP und Servlets
      • Meine erste JSP
        • Downloads
        • Installation unter Windows
        • Installation unter Linux
        • Admin und Manager
        • Webapplication
      • JSP
        • Java Code in HTML einbinden
        • Das HTTP Request - Response Modell
        • Request und Response Objekte
        • Auswerten von Formulardaten
        • Aufgaben
      • Beans
        • Die Session
        • Weitere vordefinierte Objekte
        • Java-Beans
        • Beans programmieren
        • Java-Beans in JSP nutzen
        • Aufgaben
      • Servlets
        • Nutzen der Servlets
        • Servlets programmieren
        • Servlets auf dem Server einrichten
        • Servlets mit JSP
        • Servlets includen
        • Aufgaben
      • Webapplikation
        • Filter
        • Initialisierungsparameter
        • Error Pages
        • Passwortgeschützte Verzeichnisse
        • Bibliotheken nutzen
        • Eine Webapplikation deployen
        • Ausblick: Wie geht's weiter?
        • JSP-Tags Syntaxreferenz
        • Aufgaben
  • Code
    • Web
      • Datenbankverbindungen mit Tomcat
      • Texte richtig encoden
      • HTTPS mit Tomcat
      • HTML Encoden mit Javascript
    • Java
      • Print F
      • Ein generischer Poolbuilder
      • Native Bibliotheken
      • Unique Ids
    • Java FX
      • Balls
      • Hearts
      • Planner
    • Java ME
      • The Next Big Thing
    • System
      • Vi Kommandos
  • Sidemap
  • Impressum
  • Hilfe
Home > Tutorials > JSP und Servlets > Beans > Java-Beans in JSP nutzen
  • Hello World
  • Java Konsole
  • Basic Java
  • Java Api
  • JSP und Servlets
    • Meine erste JSP
    • JSP
    • Beans
      • Die Session
      • Weitere vordefinierte Objekte
      • Java-Beans
      • Beans programmieren
      • Java-Beans in JSP nutzen
      • Aufgaben
    • Servlets
    • Webapplikation

Java-Beans in JSP nutzen

Um Java-Beans in JSP zu nutzen, steht eine XML ähnliche leicht verständliche Syntax zur Verfügung, die den HTML Code nur wenig beeinträchtigt. Eine Bean wird erzeugt mit dem Tag: <jsp:userBean />. Weitere Angaben sind: die Klasse, aus der die Bean erzeugt werden soll (class="jspkurs.bsp.kap2.RegisterData") , sowie der Name, unter dem sie im Scope und in der Seite zur Verfügung stehen soll (id="registerData"). Schließlich geben wir den Scope an, den wir uns für die Bean vorstellen (scope="session"), in diesem Fall die Session, da wir die Bean über mehrere JSP nutzen wollen. Vergessen Sie nicht, den Tag wie in XML wieder zu schließen (/>)

<jsp:useBean id="registerData" scope="session" class="jspkurs.bsp.kap2.RegisterData"/>

Tomcat überprüft daraufhin, ob die Bean bereits unter diesem Namen im Scope vorhanden ist. Ist das der Fall, so liefert er uns die vorhandene Bean zurück. Findet er keine Bean mit diesem Namen, so erzeugt er eine neue und gibt uns die. Findet er eine mit dem selben Namen, aber von einer anderen Klasse, so gibt es einen Fehler. Wenn Sie das von Hand programmieren wollten, sähe der Code vielleicht so aus:

RegisterData registerData=(RegisterData)
 session.getAttribute("registerData");
 if (registerData==null){
  // registerData not in session, create it
  registerData=new RegisterData();
  session.setAttribut("registerData",registerData);
}

Es dürfte klar sein, dass die JSP Tags einfacher und weniger fehleranfällig sind als Java Code. Wir sollten daher immer, wenn es möglich ist, den entsprechenden Tag verwenden.
Bei der Gestaltung des Formulars sind wir schlau, indem wir die Namen der Input - Felder entsprechend den Namen der Felder (Variablen) der Bean wählen:

 

Code: /bsp/kap2/register1.jsp

<tr>
  <td>Ihr Name</td>
  <td><input type="text" name="lastName" value="<jsp:getProperty name="registerData" property="lastName"/>"></td>
</tr>
<tr>
  <td>Ihr Vorname</td>
  <td><input type="text" name="firstName" value="<jsp:getProperty name="registerData" property="firstName"/>"></td>
</tr>

Vorname und Nachname entsprechend den Feldern unserer Bean:

Code: /code2html/jspkurs/bsp/kap2/RegisterData.java.html

/** 
* Feld ür den Nachnamen. 
* Initialisieren Sie alle Felder mit null
* oder einem leeren String. 
*/
private String lastName = null;
/** 
* Feld für den Vornamen
*/
private String firstName = null;

Wenn das Formular nun gesendet wird, kann der Server automatisch die entsprechenden Felder der Bean setzen, indem wir den Tag <jsp:setProperty /> in der JSP verwenden. Zunächst wird die Bean wieder mit <jsp:useBean /> in der Seite verfügbar gemacht, dann nutzen wir <jsp:setProperty /> um die im Request ankommenden Daten in die Bean zu schreiben. Als Attribute des Tags sind erforderlich: name="registerData", der Name der Bean, damit Tomcat weiß, welche Bean er initialisieren soll, sowie die Namen der im Request und der Bean vorhandenen Felder, die gesetzt werden sollen (property="lastName"). Da es uns zu umständlich ist, dies für jeden Parameter zu schreiben, schreiben wir einfach: property="*" und überlassen es Tomcat, übereinstimmende Request und Bean-Parameter zu finden:

Code: /bsp/kap2/register2.jsp

<jsp:useBean id="registerData" scope="session" class="jspkurs.bsp.kap2.RegisterData"/>
<jsp:setProperty name="registerData" property="*"/>

Tomcat erkennt anhand der Namenskonventionen den richtigen Setter unserer Bean und ruft die entsprechende Methode für jeden Request-Parameter auf. Dies ist prima. Wenn Sie aus bestimmten Gründen im Formular einen anderen Namen als in der Bean verwenden müssen, können Sie wie folgt eine Zuordnung vornehmen:

<jsp:setProperty name="beanInScope" property="nameInBean" param="nameInHTMLForm"/>

Tomcat setzt dann das Feld nameInBean auf den Wert des Request-Parameters nameInHTMLForm. Ein ebenfalls nützliches Attribut des Tags ist value="aValue" . Sie können damit ein Feld einer Bean direkt setzen:

// Verwenden des value-Attributes
<jsp:setProperty name="beanInScope" property="nameInBean" value="Dieser Text kommt rein"/>

// Oder nutzen Sie die Ausgabe eines Java-Ausdrucks
<jsp:setProperty name="beanInScope" property="nameInBean" value="<%=new java.util.Date()%>"/>


Der dritte im Bunde ist: <jsp:getProperty />, ein Tag, der benutzt wird, um Daten aus der Bean zu lesen. Wir benutzen Ihn, um dem User die Daten anzuzeigen, die er bereits eingegeben hat, wenn er im Registrierungsprozess zurückgeht. Die Syntax ist wie erwartet:

Code: /bsp/kap2/register2.jsp

  <td><input type="text" name="street" value="<jsp:getProperty name="registerData" property="street"/>"></td>

Das Schöne an diesem Tag ist, dass er einen leeren String zurückgibt, wenn ein Feld "null" ist, also noch nicht gesetzt wurde. Würden wir <%=registerData.getStreet()%> verwenden, hätten wir im entsprechenden Feld "null" stehen.

Einige Hinweise:
Getter und Setter müssen nicht immer paarweise vorhanden sein; wenn Sie einen Wert nur setzen wollen aber niemals lesen brauchen Sie den Getter nicht in der Bean und umgekehrt. Sie dürfen auch weitergehende Operationen in den Getter und Setter Methoden ausführen, sie sind nicht darauf beschränkt, die globalen Felder zu setzen. Getter und Setter werden auch gefunden, wenn hinter ihnen gar kein Feld steht, sondern wenn Sie die Informationen in der Methode selbst verarbeiten und dann in einem anderen Feld speichern.

« Beans programmieren
Beans
Aufgaben »
Show/Hide Footer Actions

Kommentare:

Sie müssen angemeldet sein um eine Nachricht zu erstellen. Anmelden »
© 2012 Java 1. Alle Rechte vorbehalten.
Anmelden
concrete5 - open source CMS
Theme by Site5 / Mnkras.