home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Grundlagenwissen

HTML-Seiten benötigen zur Übertragung das Hypertext Transfer Protocol.Dieses Protokoll ist ein zustandsloses Protokoll (d.h. vergisst was gefragt wurde und wer die Anfrage gestellt hat, nachdem die Anfrage bearbeitet wurde) und die Kommunikation geschieht über Request (Anfrage: Browser) und Response (Antwort: Server).

HTTP hat mehrere Zugriffsmethoden. z. Bsp.:

  • GET ist die gebräuchlichste Methode. Mit ihr werden Inhalte vom Server angefordert.
    Übermittlung der HTML-Formular-Parameter über URL, hinten angehängt. Beispiel: http://www.johner.org/index.html?Parameter="parameterwert"&Parameter2="parameterwert2"
  • POST ähnelt der GET-Methode, nur dass ein zusätzlicher Datenblock übermittelt wird. Dieser besteht üblicherweise aus Name-Wert-Paaren, die aus einem HTML-Formular stammen. Grundsätzlich können Daten auch mittels GET übertragen werden (als Argumente im URI), aber die Übertragung der Argumente erfolgt bei POST diskret (wichtig bei sensiblen Daten), und die zulässige Datenmenge ist deutlich größer.
  • PUT dient dazu, Dateien unter Angabe des Ziel-URIs auf einen Webserver hochzuladen. Heute kaum noch implementiert (vergl. dazu WebDAV), war es in der Anfangszeit des WWW eine tatsächlich genutzte Möglichkeit.
  • DELETE löscht die angegebene Ressource (z. B. eine Datei) auf dem Server. Dies ist heutzutage ebenso wie der PUT-Befehl kaum noch implementiert bzw. in der Standardkonfiguration aktueller Webserver abgeschaltet.
Quelle: http://de.wikipedia.org/wiki/Http

PUT und DELETE sind hierbei meist vom Webhoster abgeschalten. Wäre dies nicht der Fall könnte jeder Dateien beliebig hochladen und löschen. Dies ist in fast allen Fällen nicht erwünscht. Hingegen möchte man eventuell erlauben ein Bild (*.jpeg) hochzuladen, und dieses später wieder zu löschen. Um diese Funktionalität trotz der Deaktivierung von Put und Delete zu gewährleisten benutzt man Servlets.

Servlets sind im Gegensatz zu Perl-Skripts Multithreading-Fähig. Praktisch dabei ist, dass sich das Servlet selber um die Threaderzeugung kümmert. Darüber hinaus bieten Servlets die Möglichkeit relativ Sessions zu erzeugen. Wie die Session konkret realisiert wird, entscheidet das Servlet hierbei. 

Bei der Realisierung eines Servlets sollte darauf geachtet werden die Präsentation und Geschäftslogik zu trennen, denn dies erhöht die Wartbarkeit.

 

Alternativen für dynamische Webseiten

Servlets sind nicht die einzige Möglichkeit dynamische Webseiten zu implementieren.

Folgende Programmiersprachen/Technologien können ebenfalls dynamische Webseiten generieren:

  • PHP
  • Java Server Pages (JSP)
  • Java Server Faces (JSF)
  • PERL (CGI-BIN)
  • ASP, ASPX, ASP.net (Microsoft)

Ablauf eines Servlets

Quelle:Wikipedia

Zustände eines Servlets

Ein Servlet kennt verschiedene Zustände:

  1. init(): Mit init() wird der Server initialisiert. Nach der Initialisierung ist das Servlet in dem Zustand "Bereit!". In der Init()-Methode könnte man zum Beispiel die Verbindung zur Datenbank aufbauen. Darüber hinaus gibt es die Möglichkeit anzugeben welche Klassen bereits bei der Initialisierung geladen werden sollen. Dies geschieht in der web.xml mit dem Tag:

    <load-on-startup>-1</load-on-startup>

  2. service() bzw. doGet()/doPost(): Das Servlet ist nun bereit und kann Anfragen bearbeiten. Genauer heisst das, das Servlet kann nun Post und Get-Request entgegennehmen.
  3. destroy(): Wenn ein Servlet nicht mehr benötigt wird, ist es sinnvoll es zu löschen. Dies geschieht mit der Methode destroy(). Nach dem Löschen kümmert sich der Java GarbageCollector um alle Objekte welche nicht mehr benötigt werden, indem er diese ebenfalls löscht. Das Servlet befindet sich nun im Zustand "Gelöscht".

Sessions

Wie bereits erwähnt ist HTTP ein zustandsloses Protokoll.Das heisst es stellt dem Server selbst keine Verfahren zur Verfügung, mit dem er erkennen könnte, daß mehrere aufeinanderfolgende Anfragen vom selben Benutzer stammen. Dies bedeutet zum einen Schutz der Privatsphäre, jedoch auch einen höheren Aufwand für Web-Applikationen, welche nicht zustandslos sind.Um die Zustandlosigkeit zu überwinden setzt man Sessions ein.Typischerweise verwendet man Sessions für den Einsatz von Warenkörben (bei Webshops) oder bei Logins (StudiVZ etc.).Aber ganz allgemein Ausgedrück wird eine Session eigentlich immer dann verwendet, wenn ich etwas Sitzungsübergreifend vorhanden bleiben soll. Aber nur solange es sich um kleine Datenmengen handelt, da die Cookies nicht allzu viel Speicher zur Verfügung stellen,damit der Browser nicht zu "schwerfällig" wird.

Es gibt 2 verschiedene Möglichkeiten Sessions zu implementieren:

  1. Cookies: welche auf dem Client-PC gespeichert werden und verschiedene Informationen wie etwa ID, Datum, Lease-Datum (Datum wie lange der Cookie gültig ist).
  2. URL-Encoding: der Benutzer wird über die URL identifiziert. In der URL wird die Session-ID mitgegeben und vom Server kann der Benutzer so identifiziert werden. Beispiel:

    http :// www.johner.org/index.html?action=something&session=A54C6FE2#info 

Die Entscheidung, welche Variante zum Einsatz kommt, nimmt einem meist das Servlet ab.