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

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort

Download:
- ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
7., aktualisierte Auflage
geb., mit DVD (November 2007)
1.492 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1146-8
Pfeil 19 JavaServer Pages und Servlets
Pfeil 19.1 Dynamisch generierte Webseiten
Pfeil 19.1.1 Was sind Servlets?
Pfeil 19.1.2 Was sind JavaServer Pages?
Pfeil 19.2 Servlets und JSPs mit Tomcat entwickeln
Pfeil 19.2.1 Servlet-Container
Pfeil 19.2.2 Entwicklung der Servlet/JSP-Spezifikationen
Pfeil 19.2.3 Webserver mit Servlet-Funktionalität
Pfeil 19.2.4 Tomcat
Pfeil 19.2.5 Ablageort für eigene JSP-Seiten
Pfeil 19.2.6 Web-Applikationen
Pfeil 19.2.7 Zuordnung von Web-Applikationen zu physikalischen Verzeichnissen
Pfeil 19.2.8 Mit dem WTP ein Web-Projekt entwickeln
Pfeil 19.3 Statisches und Dynamisches
Pfeil 19.3.1 Statischer Template-Code
Pfeil 19.3.2 Dynamische Inhalte
Pfeil 19.3.3 Kommentare
Pfeil 19.4 Die Expression Language (EL)
Pfeil 19.4.1 Operatoren der EL
Pfeil 19.4.2 Literale
Pfeil 19.4.3 Implizite EL-Objekte
Pfeil 19.5 Formulardaten
Pfeil 19.6 Auf Beans zurückgreifen
Pfeil 19.6.1 Beans in JSP-Seiten anlegen
Pfeil 19.6.2 Properties einer Bean im EL-Ausdruck erfragen
Pfeil 19.6.3 Properties mit <jsp:setProperty> setzen
Pfeil 19.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
Pfeil 19.6.5 Parameterwerte in Bean übertragen
Pfeil 19.7 JSP Tag-Libraries
Pfeil 19.7.1 Standard Tag Library (JSTL)
Pfeil 19.7.2 Jakarta Taglibs Project
Pfeil 19.8 Einbinden und Weiterleiten
Pfeil 19.8.1 Einbinden von Inhalten
Pfeil 19.8.2 Forward und Redirect
Pfeil 19.8.3 Applets einbinden
Pfeil 19.9 Skripten von JSPs
Pfeil 19.9.1 Scriptlets
Pfeil 19.9.2 JSP-Ausdrücke
Pfeil 19.9.3 JSP-Deklarationen
Pfeil 19.9.4 Quoting
Pfeil 19.9.5 Entsprechende XML-Tags
Pfeil 19.9.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke
Pfeil 19.10 JSP-Direktiven
Pfeil 19.10.1 page-Direktiven im Überblick
Pfeil 19.10.2 Mit JSPs Bilder generieren
Pfeil 19.11 Sitzungsverfolgung (Session Tracking)
Pfeil 19.11.1 Lösungen für Sitzungsverfolgung
Pfeil 19.11.2 Auf Session-Dateien zurückgreifen
Pfeil 19.12 Servlets
Pfeil 19.12.1 Servlets compilieren
Pfeil 19.12.2 Servlet-Mapping
Pfeil 19.12.3 Der Lebenszyklus eines Servlets
Pfeil 19.12.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
Pfeil 19.12.5 Servlets und Sessions
Pfeil 19.12.6 Weiterleiten und Einbinden von Servlet-Inhalten
Pfeil 19.13 Internationalisierung
Pfeil 19.13.1 Die Länderkennung des Anfragers auslesen
Pfeil 19.13.2 Länderkennung für die Ausgabe setzen
Pfeil 19.13.3 Westeuropäische Texte senden
Pfeil 19.14 Zum Weiterlesen


Galileo Computing - Zum Seitenanfang

19.10 JSP-Direktiven Zur nächsten ÜberschriftZur vorigen Überschrift

Eine Direktive gibt dem JSP-Container besondere Informationen darüber mit, wie er die Seite bearbeiten soll. Sie ergeben keine direkt sichtbare Ausgabe. Direktiven werden in den Tags <%@ und %> eingeschlossen, und die allgemeine Form lautet:

<%@ direktivenname attribut="wert" attribut2="wert" ... %>

Jede Direktive besitzt einen Namen. Es gibt zum Beispiel Direktiven für die Einbettung von fremden Seiten (include) und die Definition der Seitenattribute (page), die Startinformationen für die Servlet-Umgebung definiert. Mit dem Namen können wir auch eine XML-Form nutzen:

<jsp:directive direktivenname attrib1="wert" attrib2="wert" ... />

Galileo Computing - Zum Seitenanfang

19.10.1 page-Direktiven im Überblick Zur nächsten ÜberschriftZur vorigen Überschrift

Die page-Direktive ist die komplexeste aller Direktiven. Sie hat eine Reihe von Attributen, die vorgestellt werden sollen.

Das Attribut import

Die Direktive page import gibt an, welche Klassen durch die JSP importiert werden sollen. Sie entsprechen dem bekannten import. Mehrere Pakete werden durch ein Komma getrennt. Das Attribut import ist das einzige, das mehr als einmal benutzt werden kann.

<%@ page import="java.util.*, java.awt.Point" %>

Die Klassen der Pakete java.lang, javax.servlet, javax.servlet.http und javax.servlet.jsp sind automatisch importiert.

Das Attribut contentType

Der Content-Type ist der MIME-Typ der JSP-Seite. Änderungen des Standardwerts »text/html« sind nötig, wenn unsere JSP zum Beispiel eine XML-Datei zurückgibt:

<%@ page contentType="text/xml" %>

Die Zeichenkette kann zusätzlich Informationen über die Zeichenkodierung enthalten. Der Wert ist mit einem Semikolon abgetrennt:

<%@ page contentType="text/xml; charset=ISO-8859–1" %>

Tipp Tipp Um aus einer JavaServer Page (oder einem Servlet) Microsoft Excel-Tabellen zu erzeugen, reicht es, eine HTML-Tabelle zu generieren und dann als Content-Type »application/vnd.ms-excel« anzugeben.


Das Attribut extends

Eine JSP wird vom JSP-Compiler in ein Servlet übersetzt. Ein selbst geschriebenes Servlet erweitert in der Regel eine Oberklasse wie HttpServlet. Bei JSPs ist die Oberklasse nicht bekannt, sie muss nur die Schnittstelle HttpJspPage implementieren. Möchten wir eine eigene Oberklasse angeben, so würden wir das extends-Attribut der page-Direktive nutzen. Die Anwendung einer solchen eigenen Vererbungshierarchie sollte jedoch wohl durchdacht sein, da eine JSP-Umgebung eine optimale Oberklasse anbietet, die laufzeitoptimiert arbeitet.

Das Attribut info

Der Autor einer Seite kann sie näher beschreiben. In der Regel befinden sich Informationen über Autor, Erstellungsdatum und Version in dem Attribut:

<%@ page info="(c) C.Ullenboom, Januar 2007, Version 1.05" %>

Diese Information ist sinnvoll, wenn in der nachfolgenden Verarbeitung, etwa durch den JSP-Container, Veränderungen vorgenommen werden.

Das Attribut language

Dieses Attribut gibt an, welche Skriptsprache in diesem JSP benutzt wird. Zurzeit wird nur »java« unterstützt.


Tabelle 19.2 Page-Attribute
Attribut Vorgabewert Beispiel

autoFlush

true

autoFlush="false"

buffer

min. 8kb

buffer="16kb"

contentType

text/html

contentType="image/gif"

errorPage

errorPage="/jsp/error.jsp"

extends

extends="SuperServlet"

import

import="java.io.*,java.util.*"

isErrorPage

false

isErrorPage="true"

isThreadSave

true

isThreadSave="false"

language

java

language="java"

session

true

session="false"



Galileo Computing - Zum Seitenanfang

19.10.2 Mit JSPs Bilder generieren topZur vorigen Überschrift

Soll ein Bild dynamisch generiert werden, ist das mit JSPs möglich, für Binärdateien sind jedoch Servlets üblich. Die Anforderung an die JSP/das Servlet, eine Grafik zu laden, steht gewöhnlich in einer anderen Webseite, etwa so:

<img src=" http://localhost:8080/web/JpegImage.jsp" alt="smile" />

Die JSP JpegImage.jsp soll ein Bild erzeugen und mit dem passenden Encoder von Sun als JPG dem Browser übermitteln. Da der Content-Typ unserer bisherigen JSP nur für Textdateien stand, müssen wir für JPEG-Grafiken den Typ auf »image/jpeg« setzen. Die Grafik soll lediglich zwei einfache Linien darstellen. Zum Zeichnen sind das AWT-Paket, das AWT-Image-Paket für die Hintergrundgrafik und das Encoder-Paket zum Schreiben der JPEG-Datei relevant:

Damit beginnt die JSP mit:

Listing 19.17 JpegImage.jsp

<%@ page contentType="image/jpeg" %><%@ 
    page import="java.awt.*,java.awt.image.*, com.sun.image.codec.jpeg.*" %><%

Jetzt lässt sich die Grafik als Hintergrundbild vom Typ BufferedImage aufbauen. Dieses Objekt bietet getGraphics(), und mit dem bekannten Graphics-Objekt sind Zeichenoperationen möglich:

  int width  = 200, 
      height = 200; 
  BufferedImage image = new BufferedImage( width, height, 
                                           BufferedImage.TYPE_INT_RGB ); 
  Graphics g = image.getGraphics(); 
  g.setColor( Color.white ); 
  g.fillRect( 0, 0, width, height ); 
  g.setColor( Color.blue ); 
  g.drawLine( 0, 0, 200, 200 ); 
  g.drawLine( 0, 200, 200, 0 ); 
  g.dispose();

Der letzte Schritt besteht darin, vom impliziten response-Objekt den binären Ausgabestrom zu besorgen und den JPEG-Encoder zu veranlassen, das Bild in den Ausgabestrom zu schreiben:

  ServletOutputStream sos = response.getOutputStream(); 
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( sos ); 
  encoder.encode( image ); 
%>

Für eine tatsächliche Bildanforderung gibt es also immer zwei Server-Kontakte: Der erste Request fordert die Webseite an, die über ein <img>-Tag die Grafik verlangt. Im zweiten Schritt kontaktiert der Browser den Server erneut, um genau dieses Bild zu erfragen – der Browser weiß nicht, dass es dynamisch produziert wird.



Ihr Kommentar

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






<< zurück



Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> 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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de