Kapitel 5 - Servlets Flashcards
Was sind Servlets?
Prinzipiell handelt es sich um serverseitigen Code
- Selbstprogrammierte Klassen, die auf HTTP-Anfragen reagieren
- HTTP-Anfragen werden an die Servlets delegiert
- Kommunikation mit dem Client durch den Container
- Softwarekomponenten einer Webanwendung
- Aufruf vom Webcontainer bei jeder HTTP-Anfrage
- Objekte werden vom Webcontainer erzeugt
Was sind die Vorteile von Servlets gegenüber anderen Programmiersprachen?
- Einmal geladene Servlets bleiben im Speicher
- Ausführung erfolgt in Threads statt in Prozessen
- Hohe Geschwindigkeit, da Servlets kompiliert werden
- Dank Java automatisch plattformunabhängig
- Einfacher Zugang zu fast allen Java APIs
Was ist ein Webcontainer?
- Stellt in Java programmierten Webserver dar
- Laufzeitumgebung für Servlets und Java Server Pages
- Technische Grundlage für weitreichende Webframeworks
Wie funktioniert der Webcontainer? (5)
- Der Webcontainer empfängt eine HTTP-Anfrage
- Zu jeder anfragbaren URL existiert eine Klasse (Servlet), welche die Anfrage bearbeiten kann
- Um die Anfrage zu bearbeiten, muss der Container nur eine spezielle Methode des entsprechenden Servletobjekts aufrufen
- Innerhalb der Methode müssen die zurückschickenden Daten erzeugt werden
- Der Server wandelt die generierte Antwort in eine HTTP-Antwort um. Anschließend schickt er die ANtwort zurück an den Client
Nennen Sie 3 Komponenten des Webcontainers
- Servletobjekt
- Requestobjekt
- Responseobjekt
Was macht das Servletobjekt?
- Reagiert auf HTTP-Anfragen mit einer Antwort
- Methoden zur Protokollierung im Serverprotokoll
- Methoden für den Zugriff auf den Servlet COntext
Was macht das Requestobjekt?
- Kapselt die empfangene HTTP-Anfrage
- Methoden für den Zugriff auf die Session und den Session Context
- Methoden zum Lesen und Schreiben von Cookies
- Methoden zum Lesen und Schreiben von Anfrageparametern
- Methoden, um Informationen über den Client zu ermitteln
Was macht das Responseobjekt?
- Kapselt die zu sendende HTTP-Antwort
- Methode zum Erzeugen eines PrintWriter für die Antwort
Was ist das Servlet-Interface?
Gehen Sie hierbei auch auf die Methode service() ein!
Definiert den Vertrag mit dem Container
- Gemeinsames Basisinterface aller Servletobjekte
- Schreibt die Lebenszyklusmethoden vor
- LEgt fest, wie Anfragen bearbeitet werden
Methode service() bearbeitet alle Anfragen
- Bekommt ein ServletRequest-Objekt übergeben
- Bekommt ein ServletResponse-Objekt übergeben
- Wirft ServletException oder IOException
Wie funktioniert das Deployment von Servlets?
- Kein direktes Hochladen auf den Server wie bei einer statischen Webseite möglich
- Servlets werden stattdessen als Web-Archiv deployed
- Die Ordnerstruktur muss eingehalten werden
- Der Deploymentdeskriptor ist ab Java7 optional
- Das Archiv enthält auch benötigte Ressourcen wie HTML-Dateien, Stylesheets und Bilder

Was ist der Deploymentdeskriptor? (4)
Welche Angaben müssen mindestens beinhaltet sein? (5)
- XML-Konfigurationsdatei einer Webanwendung
- Dient der Konfiguration des Deployments
- Wird zunehmend durch Annotationen im Quellcode ersetzt
- Ablageort im Web-Archiv: /WEB-INF/web.xml
Beinhaltet mindestens folgende Angaben
- Benennung aller verwendeten Servlets
- Initialisierung der Servlets mit Parametern
- Mapping von URLs zu Servlets
- Initialisierung und Mapping von Filter Objekten
- Konfiguration von Session Listener Objekten
Wie verwendet man die 3 Kontexte?
- Jedes Servlet hat Zugriff auf drei Kontextobjekte, um darin Objekte zwischen mehreren Aufrufen zwischenzuspeichern
- Verwaltung eines serverseitigen Zustands je Besucher
- Wiedererkennung eines Besuchers anhand einer Session ID
- Notwendig, um Logins / Warenkörbe…abzubilden
Nennen Sie die Methoden der Kontextobjekte. (4)
public void setAttribute(String name, Object value)
public Object getAttribute(String name)
public void removeAttribute(String name)
public Enumeration<string> getAttributeNames()</string>
Beschreiben Sie den Servlet Context und dessen Methoden (5)
Übergreifender Kontext für die gesamte Anwendung
Genau ein Servlet Context je Webanwendung
Zugriff durch: this.getServletContext
Methoden des Interfaces ServletContext
- Methoden, um Objekte an den Kontext zu binden
- Auslesen verschiedener Containerdaten (Version, …)
- Erzeugen von und Zugriff auf Filter
- Erzeugung und Zugriff auf Session Listener
- Auslesen der Initialisierungsparameter
Beschreiben Sie den Session Context und dessen Methoden (4)
Repsärsentiert eine Sitzung mit einem Benutzer
Überweindet die Zustandslosigkeit von HTTP
Fasst mehrere Seitenaufrufe logisch zusammen
Zugriff durch: request.getSession
Methoden des Interfaces HttpSession
- Methoden, um Objekte an den Kontext zu binden
- Sitzung beenden, Abfrage auf neue Sitzung
- Festlegen des Timeouts, nachdem die Sitzung verfällt
- Zugriff auf den Servlet Context
Beschreiben Sie den Request Context und dessen Methoden (5)
Stellt eine bearbeitete HTTP-Anfrage dar
Wird dem Servlet als Methodenparameter übergeben
Weitergabe von Parametern von einer Weiterleitung
Methoden des Interfaces HttpServletRequest
- Methoden, um Objekte an den Kontext zu binden
- Authentifizierung eines Benutzers am Container
- Auslesen einzelner Werte der HTTP-Anfrage
- Erzeugen eines Dispatchers für Weiterleitungen
- Zugriff auf den Session Context
Beschreiben Sie den Einsatz des Request Context (4)
- Der Anwender setzt eine neue Anfrage ab, die durch ein Request Object dargestellt wird
- Der Request Context wird dem aufgerufenen Servlet übergeben
- Das Servlet bindet ein Objekt an den Context. Anschließend wird die Bearbeitung an ein anderes Servlet weitergeleitet
- Dem neuen Servlet wird derselbe Request Context übergeben, so dass es das Objekt aus dem Kontext auslesen kann.
Nennen Sie die Vorteile von Servlets (5)
- Relativ einfach zu programmieren
- Aufgrund der Einfachheit sehr flexibel und perfomant
- Bilden die technische Basis aller Java-Webframeworks
- Nicht an HTML als Ausgabeformat gebunden
- Können auch Grafiken und Binärdaten erzeugen
Nennen Sie die Nachteile von Servlets (3)
- Keine direkte HTML-Programmierung möglich
- Java-Kenntnisse erforderlich, ungeeignet für Webdesigner
- Viel mehr Tippaufwand als bei anderen Web-Frameworks