home | suche | kontakt/johner | institut studierende | tech-docs | mindmailer |
![]() |
Einführung
Sobald der Wunsch besteht, Webseiten abhängig von Benutzereingaben oder Datenbankinhalten zu gestalten, wie das beispielsweise bei Onlineshops der Fall ist, genügen statische HTML-Seiten nicht mehr.
Die J2EE bietet mit Servlets und JSPs ein leistungsfähiges Gespann an, um diesen Wunsch zu erfüllen.
Ein Servlet ist eine Java-Klasse, die von javax.servlet.GenericServlet erbt und Webanfragen behandeln und Antworten generieren kann. Ein Servlet benötigt einen Servlet-Container als Laufzeitumgebung. D.h. ein Servlet ist keine eigenständig lauffähige Anwendung.
Eine typische Architektur, in der Servlets zum Einsatz kommen, sind vierschichtige Anwendungen, aus Browser-Client, Servlet, Geschäftslogikschicht und Datenbank.
Ein Beispiel für ein sehr einfaches Servlet, welches nur "Hallo" auf dem Browser ausgeben kann, sieht wie folgt aus:
package org.johner.servlet;
import java.io.*;
import javax.servlet.http.*;
public class SimpleServlet extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws IOException {
PrintWriter writer = res.getWriter();
res.setContentType("text/html");
writer.write("<html><body><H1>Hallo</H1></body></html>");
}
}
Zu den Vorteilen der Servlets zählen
- Portabilität durch die Sprache Java
- Sprachumfang durch die Sprache Java
- Sicherheitskonzepte
- Kostenfrei verfügbar
- Geringer Ressourcenverbrauch s. Servlet Lebenszyklus
Hingegen spricht gegen die Servlet-Technologie, dass sie auf vielen Systemen der "Hoster" im Gegensatz zu PHP oder CGI nicht zur Verfügung steht. Der Nachteil, dass Servlet selbst nicht dem MVC-Paradigma folgen, besteht angesichts der komplementären JSP-Technologie nicht.
Kommunikation
Ein Servlet kommuniziert nicht direkt mit einem Client. Dieser schickt seine HTTP-Anfrage an den Webserver, welcher den Request an die Servlet-Engine (den Servlet-Container) weiterreicht. Dort wird der Request bearbeitet und über den Webserver wieder zum Browser zurückgeschickt.
