Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
Java 7 - Mehr als eine Insel von Christian Ullenboom
Das Handbuch zu den Java SE-Bibliotheken
Buch: Java 7 - Mehr als eine Insel

Java 7 - Mehr als eine Insel
Rheinwerk Computing
1433 S., 2012, geb.
49,90 Euro, ISBN 978-3-8362-1507-7
Pfeil 14 JavaServer Pages und Servlets
Pfeil 14.1 Dynamisch generierte Webseiten
Pfeil 14.1.1 Was sind Servlets?
Pfeil 14.1.2 Was sind JavaServer Pages?
Pfeil 14.2 Servlets und JSPs mit Tomcat entwickeln
Pfeil 14.2.1 Servlet-Container
Pfeil 14.2.2 Entwicklung der Servlet/JSP-Spezifikationen
Pfeil 14.2.3 Webserver mit Servlet-Funktionalität
Pfeil 14.2.4 Tomcat installieren
Pfeil 14.2.5 Ablageort für eigene JSPs
Pfeil 14.2.6 Webapplikationen
Pfeil 14.2.7 Zuordnung von Webapplikationen zu physikalischen Verzeichnissen
Pfeil 14.2.8 Web-Projekt mit Eclipse IDE for Java EE Developers
Pfeil 14.3 Statisches und Dynamisches
Pfeil 14.3.1 Statischer Template-Code
Pfeil 14.3.2 Dynamische Inhalte
Pfeil 14.3.3 Kommentare
Pfeil 14.4 Die Expression Language (EL)
Pfeil 14.4.1 Operatoren der EL
Pfeil 14.4.2 Literale
Pfeil 14.4.3 Implizite EL-Objekte
Pfeil 14.5 Formulardaten
Pfeil 14.5.1 Einen Parameter auslesen
Pfeil 14.5.2 HTML-Formulare
Pfeil 14.6 Auf Beans zurückgreifen
Pfeil 14.6.1 Beans in JSPs anlegen
Pfeil 14.6.2 Properties einer Bean im EL-Ausdruck erfragen
Pfeil 14.6.3 Properties mit <jsp:setProperty> setzen
Pfeil 14.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
Pfeil 14.6.5 Parameterwerte in Bean übertragen
Pfeil 14.7 JSP-Tag-Libraries
Pfeil 14.7.1 Standard Tag Library (JSTL)
Pfeil 14.8 Skripting-Elemente in JSPs
Pfeil 14.8.1 Scriptlets
Pfeil 14.8.2 JSP-Ausdrücke
Pfeil 14.8.3 JSP-Deklarationen
Pfeil 14.8.4 Quoting
Pfeil 14.8.5 Entsprechende XML-Tags
Pfeil 14.8.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke
Pfeil 14.9 Sitzungsverfolgung (Session Tracking)
Pfeil 14.9.1 Lösungen für die Sitzungsverfolgung
Pfeil 14.9.2 Sitzungen in JSPs
Pfeil 14.9.3 Auf Session-Dateien zurückgreifen
Pfeil 14.10 Servlets
Pfeil 14.10.1 Servlets compilieren
Pfeil 14.10.2 Servlet-Mapping
Pfeil 14.10.3 Der Lebenszyklus eines Servlets
Pfeil 14.10.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
Pfeil 14.10.5 Servlets und Sessions
Pfeil 14.10.6 Weiterleiten und Einbinden von Servlet-Inhalten
Pfeil 14.11 Zum Weiterlesen

Rheinwerk Computing - Zum Seitenanfang

14.6 Auf Beans zurückgreifenZur nächsten Überschrift

Eine JavaBean ist eine einfache Softwarekomponente mit einem Standard-Konstruktor und enthält nach einem Namensschema benannte Methoden. Für eine Eigenschaft XXX existieren die Methoden setXXX() oder getXXX(). Eine JSP kann Beans erzeugen, Properties lesen und schreiben und auf diese Weise Geschäftslogik anstoßen. JavaBeans stellen somit das Backend der Webapplikation dar.


Rheinwerk Computing - Zum Seitenanfang

14.6.1 Beans in JSPs anlegenZur nächsten ÜberschriftZur vorigen Überschrift

Die JSP-Aktion <jsp:useBean> macht in der JSP eine JavaBean-Instanz verfügbar, die über einen EL-Ausdruck oder über ein Scriptlet verwendet werden kann:

Listing 14.9: now.jsp

<jsp:useBean id="now" class="java.util.Date" />
Heute ist ${now}.

Die Aktion <jsp:useBean> erwartet zwei Attribute:

  • id: Gibt den Namen der Bean an. Der Name muss ein gültiger Java-Bezeichnername sein, denn die Aktion führt zu einer lokalen Variablen im Servlet, auf die ein Scriptlet zugreifen kann.
  • class: Identifiziert mit dem voll qualifizierten Klassennamen die JavaBean.

Der Ausdruck ${now} ruft automatisch die toString()-Methode der Bean auf, sodass das aktuelle Datum in der JSP erscheint.


Rheinwerk Computing - Zum Seitenanfang

14.6.2 Properties einer Bean im EL-Ausdruck erfragenZur nächsten ÜberschriftZur vorigen Überschrift

Mit der JSP Expression Language können nicht nur einfache Literale wie in ${12+12} verarbeitet werden, sondern es lassen sich wie zum Beispiel in ${now.year} auch JavaBeans-Properties erfragen. Dazu ist der Name der Property nach einem Punkt hinter den Bean-Namen zu setzen. Da das Date-Objekt die (deprecated) Setter/Getter setYear() und getYear() besitzt, ist für den Zugriff auf das Jahr Folgendes zu schreiben:

Listing 14.10: year.jsp

<jsp:useBean id="now" class="java.util.Date" />
Jahr: ${1900 + now.year}.

Properties beginnen immer mit einem Kleinbuchstaben!


Rheinwerk Computing - Zum Seitenanfang

14.6.3 Properties mit <jsp:setProperty> setzenZur nächsten ÜberschriftZur vorigen Überschrift

Die EL bietet nur Leseoperationen, sodass zum Belegen von Bean-Attributen eine andere Syntax zu wählen ist. JSP definiert zum Setzen von Properties die Aktion <jsp:setProperty>. Setzen wir ein Date-Objekt auf den 12.3.1973:

Listing 14.11: mybirthday.jsp

<jsp:useBean id="birthday" class="java.util.Date" />
<jsp:setProperty name="birthday" property="date" value="12" />
<jsp:setProperty name="birthday" property="month" value="2" />
<jsp:setProperty name="birthday" property="year" value="${ 1973 – 1900 }" />
${birthday}

Konvertierungen von String in den Property-Datentyp nimmt der Web-Container selbstständig vor – natürlich kann es zu Konvertierungsfehlern kommen. Im Attribut value sind auch EL-Ausdrücke zur Berechnung möglich, was der letzte Ausdruck zeigt.

Hinweis

Wir haben auf die Properties mit der EL zugegriffen, aber vor JSP 2.0 kam <jsp:getProperty> mit den Attributen name und property zum Einsatz.


Rheinwerk Computing - Zum Seitenanfang

14.6.4 Bean-Klasse zum Testen von E-Mail-AdressenZur nächsten ÜberschriftZur vorigen Überschrift

Wir wollen zunächst eine einfache Bean schreiben, die eine E-Mail-Adresse auf Korrektheit prüft. Dabei bedienen wir uns eines kleinen regulären Ausdrucks, der auch in Abschnitt 4.8, »Reguläre Ausdrücke«, in »Java ist auch eine Insel« zu finden ist:

Listing 14.12: com/tutego/web/EMailChecker.java

package com.tutego.web;

public class EMailChecker
{
private String email = "";

public void setEmail( String email )
{
this.email = email;
}

public String getEmail()
{
return email;
}

public boolean isValidEmail()
{
return email.matches( "[\\w|-]+@\\w[\\w|-]*\\.[a-z]{2,3}" );
}
}

Insgesamt bietet die Bean zwei Properties an:

  • email: Lese-/Schreib-Property
  • validEmail: Nur-Lesen-Property

Hinter der Property email stehen Setter/Getter-Methoden, die auf das private Attribut email zugreifen. Die Property validEmail bedient sich ebenfalls der internen Variablen email und wird nicht durch ein eigenes internes Attribut gestützt. (Wenn ein Wert aus einem anderen Wert hervorgeht, so nennt sich das in UML eine abgeleitete Eigenschaft – mit Vererbung hat das nichts zu tun.)

E-Mail-Bean in der JSP nutzen

Zum Testen soll eine JSP eine EMailChecker-Bean anlegen und sie mit unterschiedlichen E?Mail-Adressen füttern. Für jede E-Mail-Adresse wird dann die Property validEmail sagen, ob die E-Mail auf den ersten Blick korrekt oder nicht korrekt aussieht:

Listing 14.13: email.jsp

<jsp:useBean id="emailchecker" class="com.tutego.web.EMailChecker" />
<jsp:setProperty name="emailchecker" property="email" value="a@b.com" />
${emailchecker.validEmail}

<br>
<jsp:setProperty name="emailchecker" property="email" value="@b.com" />
${emailchecker.validEmail}

<br>
<jsp:setProperty name="emailchecker" property="email" value="a@b" />
${emailchecker.validEmail}

Hinweis

Unsere JavaBean EMailChecker ist in einem Paket com.tutego.web und nicht im Default-Package. Tomcat akzeptiert keine JavaBeans im Default-Package und auch, wenn sie dort wäre und wir versuchen würden, sie mit <jsp:useBean id="emailchecker" class="EMailChecker"/> in der JSP bekanntzumachen, bekämen wir nur die wenig hilfreiche Meldung:

org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 1 in the jsp file: /emailcheck.jsp
EMailChecker cannot be resolved to a type


Rheinwerk Computing - Zum Seitenanfang

14.6.5 Parameterwerte in Bean übertragenZur nächsten ÜberschriftZur vorigen Überschrift

Um die Bean mit Benutzerwerten zu füttern, ist lediglich auf einen Parameter zurückzugreifen. Wollten wir zum Beispiel eine Mail-Adresse an ein Programm emailcheck.jsp übermitteln, schreiben wir (das »@« müsste eigentlich umkodiert werden in »%40«):

http://localhost:8080/web/emailcheck.jsp?email=a@b.com

Die Bean soll die E-Mail aus dem Parameter email speichern und dann auswerten:

Listing 14.14: emailcheck.jsp

<jsp:useBean id="emailchecker" class="com.tutego.web.EMailChecker" />
<jsp:setProperty name="emailchecker" property="email" value="${param.email}" />
${emailchecker.email}
ist gültig? ${emailchecker.validEmail}

Damit ergibt sich auf der Webseite:

a@b.com ist gültig? true

<jsp:setProperty> ohne value

Der Zugriff auf die Parameter einer Anfrage und das Speichern des Attributs in der Bean ist eine häufig gestellte Aufgabe. Daher haben die Entwickler eine Abkürzung vorgesehen. Hier wird bei <jsp:setProperty> einfach das Attribut value weggelassen.

<jsp:setProperty name="emailchecker" property="email" />

Damit wird der Wert direkt aus dem Parameter ausgelesen, wie üblich automatisch konvertiert und auf eine Property übertragen; dieser Vorgang trägt den gleichen Namen wie der Parameter.

Ist der Wert von property="*", werden alle Eigenschaften aus den Parametern ausgelesen und die entsprechenden setXXX()-Methoden der Bean aufgerufen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Neuauflage: Java SE 8 Standard-Bibliothek
Neuauflage: Java SE 8 Standard-Bibliothek
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Einstieg in Eclipse






 Einstieg in Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de