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?
<< zurück | Galileo Computing / <openbook> / Java 7 - Mehr als eine Insel | vor >>
Java 7 - Mehr als eine Insel von Christian Ullenboom Das Handbuch zu den Java SE-Bibliotheken
Java 7 - Mehr als eine Insel Galileo Computing 1433 S., 2012, geb. 49,90 Euro, ISBN 978-3-8362-1507-7 |
| 14 JavaServer Pages und Servlets
|  | 14.1 Dynamisch generierte Webseiten
|  |  | 14.1.1 Was sind Servlets?
|  |  | 14.1.2 Was sind JavaServer Pages?
|  | 14.2 Servlets und JSPs mit Tomcat entwickeln
|  |  | 14.2.1 Servlet-Container
|  |  | 14.2.2 Entwicklung der Servlet/JSP-Spezifikationen
|  |  | 14.2.3 Webserver mit Servlet-Funktionalität
|  |  | 14.2.4 Tomcat installieren
|  |  | 14.2.5 Ablageort für eigene JSPs
|  |  | 14.2.6 Webapplikationen
|  |  | 14.2.7 Zuordnung von Webapplikationen zu physikalischen Verzeichnissen
|  |  | 14.2.8 Web-Projekt mit Eclipse IDE for Java EE Developers
|  | 14.3 Statisches und Dynamisches
|  |  | 14.3.1 Statischer Template-Code
|  |  | 14.3.2 Dynamische Inhalte
|  |  | 14.3.3 Kommentare
|  | 14.4 Die Expression Language (EL)
|  |  | 14.4.1 Operatoren der EL
|  |  | 14.4.2 Literale
|  |  | 14.4.3 Implizite EL-Objekte
|  | 14.5 Formulardaten
|  |  | 14.5.1 Einen Parameter auslesen
|  |  | 14.5.2 HTML-Formulare
|  | 14.6 Auf Beans zurückgreifen
|  |  | 14.6.1 Beans in JSPs anlegen
|  |  | 14.6.2 Properties einer Bean im EL-Ausdruck erfragen
|  |  | 14.6.3 Properties mit <jsp:setProperty> setzen
|  |  | 14.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
|  |  | 14.6.5 Parameterwerte in Bean übertragen
|  | 14.7 JSP-Tag-Libraries
|  |  | 14.7.1 Standard Tag Library (JSTL)
|  | 14.8 Skripting-Elemente in JSPs
|  |  | 14.8.1 Scriptlets
|  |  | 14.8.2 JSP-Ausdrücke
|  |  | 14.8.3 JSP-Deklarationen
|  |  | 14.8.4 Quoting
|  |  | 14.8.5 Entsprechende XML-Tags
|  |  | 14.8.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke
|  | 14.9 Sitzungsverfolgung (Session Tracking)
|  |  | 14.9.1 Lösungen für die Sitzungsverfolgung
|  |  | 14.9.2 Sitzungen in JSPs
|  |  | 14.9.3 Auf Session-Dateien zurückgreifen
|  | 14.10 Servlets
|  |  | 14.10.1 Servlets compilieren
|  |  | 14.10.2 Servlet-Mapping
|  |  | 14.10.3 Der Lebenszyklus eines Servlets
|  |  | 14.10.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
|  |  | 14.10.5 Servlets und Sessions
|  |  | 14.10.6 Weiterleiten und Einbinden von Servlet-Inhalten
|  | 14.11 Zum Weiterlesen
# 14 JavaServer Pages und Servlets »Lebensfreude entsteht durch Frieden, der nicht statisch, sondern dynamisch ist.« – Henry Miller (1891–1980) ## 14.1 Dynamisch generierte Webseiten 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? ### 14.1.1 Was sind Servlets? 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. ### 14.1.2 Was sind JavaServer Pages? 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. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java 7 – Mehr als eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchempfehlungen
| Java und XML
| Einstieg in Eclipse 3.7
| Android 3
| NetBeans Platform 7
| Java ist auch eine Insel
| Apps entwickeln für Android 4
| Java 7
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

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