Galileo Computing < openbook > Galileo 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

Download:
- openbook, ca. 21,3 MB
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
Galileo 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

14 JavaServer Pages und ServletsZur nächsten Überschrift

»Lebensfreude entsteht durch Frieden, der nicht statisch, sondern dynamisch ist.«
– Henry Miller (1891–1980)


Galileo Computing - Zum Seitenanfang

14.1 Dynamisch generierte WebseitenZur nächsten ÜberschriftZur vorigen Überschrift

In der ersten Generation von Internet-Seiten war jede Seite statisch auf dem Webserver abgelegt. Unterschiedliche Clients (im Allgemeinen Browser) erfragten die Seite und stellten sie dar. Dies reichte jedoch für viele Anwendungen nicht aus und schränkte die Interaktionsfähigkeit ein. Es gibt mehrere gute Gründe für dynamische Webseiten, bei denen HTML erst auf Anfrage generiert wird:

  • Die Seite ist von Benutzereingaben abhängig. Wenn ein Kunde sich beispielsweise für ein Produkt und dessen Preis interessiert hat, wäre es kaum möglich, für jedes Produkt eine aktuelle statische Webseite bereitzustellen. Zudem sieht ja jede Seite anders aus, und so gäbe es sehr viele Seiten. Wenn sich die Produktbeschreibung ändert, müsste der Benutzer immer eine aktuelle Seite sehen. In diesem Fall ist es günstig, die Webseiten bei Bedarf zu erzeugen. Für Einkaufssysteme kommt eine weitere Eigenschaft hinzu: Der Benutzer bewegt sich über mehrere Seiten und verwaltet einen Warenkorb, der anwachsen oder schrumpfen kann.
  • Web-2.0-Seiten zeichnen sich besonders durch Beteiligung der Mitglieder aus, die Content hinzufügen und verändern. Beispiele sind Blogs, Wikis wie Wikipedia oder soziale Netzwerke. Nach jeder Sekunde kann der Inhalt einer Webseite nach dem Neuladen ganz anders aussehen.

Ist der Web-Inhalt dynamisch, kann bei einer Browser-Anfrage der Webserver keine statische Webseite zurückliefern, sondern muss irgendwie auf der Serverseite ein Programm laufen lassen, das dynamisch HTML generiert. Die Interaktion des Webservers, der ja alle Browser-Anfragen annimmt, mit dem Serverprogramm basiert auf speziellen Schnittstellen, wobei die älteste das Common Gateway Interface (kurz CGI) ist. Aufgrund von Dateiendungen oder speziellen Pfaden weiß der Server, dass es sich um keine statische Webseite handelt, sondern gibt die Aufforderung zum Aufbau von HTML an ein externes Programm weiter, das zum Beispiel aus Datenbanken Produktbeschreibungen holt, dann HTML generiert und es zum Webserver gibt, der das HTML wiederum zum Client schickt.

Serverseitig gibt es mittlerweile eine ganze Reihe von Programmiersprachen, wobei PHP zu den populärsten zählt. Vereinfacht ausgedrückt passiert Folgendes: Bekommt ein Webserver wie Apache oder IIS eine Anfrage an eine Datei, die auf .php endet, so wird die Verarbeitung an den PHP-Interpreter weitergeleitet. Der liest die PHP-Datei ein, interpretiert sie, was zu HTML führt, und schickt sie zurück zum Browser, der die Webseite darstellt. Von Microsoft gibt es eine vergleichbare Technologie, die ASP (Active Server Pages) bzw. ASP.NET (Active Server Pages .NET) genannt wird. Während PHP eine eigene, an C angelehnte Programmiersprache ist, lassen sich bei ASP.NET die .NET-Sprachen wie VB.NET oder C# nutzen. Doch was ist mit Java?


Galileo Computing - Zum Seitenanfang

14.1.1 Was sind Servlets?Zur nächsten ÜberschriftZur vorigen Überschrift

Servlets sind Java-Programme, die in einem besonders präparierten Java-Webserver ausgeführt werden. Die Besonderheit daran ist zunächst, dass ein Webserver in Java realisiert werden muss; eine andere Besonderheit ist die, dass die Java-Programme als Klassen vom Java-Webserver geladen und dort auch verwaltet und mit einer besonderen Servlet-Schnittstelle angesprochen werden. Daher heißt ein Java-Webserver, der Servlets lädt und verwaltet, auch Servlet-Container. Servlets sind somit ein wenig mit Applets vergleichbar. Ein Applet ist ein Java-Programm auf der Clientseite (im Browser), während ein Servlet ein Programm auf der Serverseite (im Server) ist. Der Browser ist der Applet-Container, während der Java-Webserver mit Servlet-Schnittstelle einen Servlet-Container darstellt.

Performant?

Einem modernen Webserver kommt die Aufgabe zu, statischen Content (CSS-, JavaScript-, Grafik-Dateien) zu liefern und auch dynamische Webseiten zu generieren. Die Java-Webserver der aktuellen Generation sind schnell genug, um für mittelgroße Seiten auch die traditionellen Webserver wie Apache oder IIS zu ersetzen. Sollte es eine sehr hoch frequentierte Seite sein, so bleiben die etablierten Webserver bestehen und werden so konfiguriert, sodass sie die dynamisch ausführbaren Serverprogramme etwa an einen Servlet-Container weiterreichen.

Die Servlet-API

Das Paket java.net deklariert Klassen für die Clientseite, also für die Seite, die eine Anfrage an den Webserver stellt. Für Servlets der Serverseite ist das Paket javax.servlet reserviert, was jedoch kein Teil der Java SE ist, doch dazu später mehr.

Um eine Vorstellung davon zu bekommen, wie ein Servlet programmiert ist, werfen wir einen Blick auf ein einfaches Servlet:

Listing 14.1: com/tutego/web/servlet/SchnarchServlet.java

package com.tutego.web.servlet;

import java.io.IOException;
import javax.servlet.http.*;

public class SchnarchServlet extends HttpServlet
{
@Override
protected void doGet( HttpServletRequest req, HttpServletResponse res )
throws IOException
{
res.getWriter().println( "'Chr! Schnarch! Razong! Chr! Chr! Rapüh!'" );
res.getWriter().println( "(Disneys beste Comics, Band 5, S. 218)" );
}
}

Ein Servlet erweitert eine besondere Oberklasse und realisiert eine doGet()-Methode. Die Methode ruft der Servlet-Container immer dann auf, wenn der Client eine Standard-Anfrage über HTTP stellt. Die Implementierung der doGet()-Methode schreibt in einen besonderen Ausgabestrom, der für die Daten bestimmt ist, die zum Client gelangen.


Galileo Computing - Zum Seitenanfang

14.1.2 Was sind JavaServer Pages?Zur nächsten ÜberschriftZur vorigen Überschrift

Servlets sind Server-Programme, die Webseiten erstellen, indem sie mit println() oder Ähnlichem HTML-Code in den Ausgabestrom schreiben. Ändert sich das Erscheinungsbild, dann muss das Java-Programm umgebaut werden, was aufwändig und fehlerträchtig ist. In der Regel ist der Programmierer auch nicht der Designer, und dieser möchte mit Webseiten-Erstellungsprogrammen wie DreamWeaver oder Microsoft FrontPage arbeiten. In vielen dynamischen Programmen stecken oft nur ein oder zwei Zeilen Dynamik, der Rest ist statischer HTML-Code.

Eine JSP (JavaServer Page) geht das Problem genau umgekehrt an. Wo ein Servlet eine Java-Klasse ist, die sich um die Ausgabe des HTML-Codes kümmert, ist eine JSP eine HTML-Seite mit eingebettetem Java-Code:

Listing 14.2: date.jsp

<html><body>
Hallo Nutzer. Wir haben heute
<%= new java.util.Date() %>
.
</body></html>

Selbst eine normale Webseite ohne eingebettete JSP-Kommandos ist eine JSP.

Nun kann der Designer die Visualisierung der Informationen noch nachträglich anpassen, denn Visualisierung und Logik sind getrennt. Wie wäre es, wenn wir einem HTML-Designer einen Quellcode eines Servlets geben und ihn bitten, eine neue Spalte einzufügen?

Der JSP-Compiler

JSP-Skripte werden vom Server automatisch in Servlets übersetzt. Der Server weiß JSP von normalen HTML-Seiten zu unterscheiden, transformiert mithilfe eines JSP-Übersetzers aus der JSP ein Servlet und ruft die bekannten Servlet-Methoden auf, um die Ausgabe zu erzeugen. Der Übersetzungsvorgang von JSP in ein Servlet muss nur einmal getätigt werden – danach benutzt der Servlet-Container direkt die übersetzte Klasse.



Ihr Kommentar

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







<< zurück
  Zum Katalog
Zum Katalog: Java 7 – Mehr als eine Insel
Java 7 – Mehr als eine Insel
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Einstieg in Eclipse 3.7






 Einstieg in
 Eclipse 3.7


Zum Katalog: Android 3






 Android 3


Zum Katalog: NetBeans Platform 7






 NetBeans Platform 7


Zum Katalog: Java ist auch eine Insel






 Java ist
 auch eine Insel


Zum Katalog: Apps entwickeln für Android 4






 Apps entwickeln
 für Android 4


Zum Katalog: Java 7






 Java 7


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 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.


[Galileo Computing]

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