Was sind Servlets..., der Einstieg

Die Java Servlet-API ist eine Programmierschnittstelle um die Java-Technologie serverseitig zur Verfügung zu stellen. Ursprünglich sollten Servlets die CGI-Technologie für die Erstellung von dynamischen Webseiten ersetzen. Die Anwendung von Servlets ist jedoch nicht auf die Erstellung dynamischer Webseiten beschränkt, so können Anwendungen, Applets, ... auch auf Servlets als Server Technologie zugreifen, wobei die jeweiligen Clients nicht mit der Java-Technologie entwickelt worden sein müssen.
Servlets sind plattform- und protokollunabhängig. Sie stellen ein Framework für Services nach dem "Request-Response" - Verfahren zur Verfügung.

Folgendes Beispiel zeigt ein einfaches Servlet durch Erweiterung der generischen Basisklasse. Als "Response" wird ein kleiner HTML-Text übertragen, welcher z.B. von einem Browser ausgegeben werden kann.

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

public class Servlet1 extends GenericServlet{
   public void service(ServletRequest request,
                       ServletResponse response) throws ServletException, IOException{
     response.setContentType("text/html");
     PrintWriter writer = response.getWriter();                      
     writer.println("<html><body>Hello I'm a GenericServlet</body></html>");
  }
}
itmapa.de - X2H V 0.17

Servlets können als "Response" unterschiedliche Inhalte liefern. Dazu gehören Text, HTML, Bilder, ... . Die Standardrückgabe ist Text bzw. HTML. Um die Art der Rückgabe zu setzen, kann der Responsetyp gesetzt werden, was im Beispiel "Servlet1.java" in Zeile 3 geschieht.

Das nachfolgende Beispiel "Servlet2.java" zeigt die Übermittlung eines Bildes als Responsetyp. Der Responsetyp wird dabei in Zeile 12 gesetzt.

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

public class Servlet2 extends GenericServlet{
  public void service(ServletRequest request,
                      ServletResponse response) throws ServletException, IOException{
                            
     File bild = new File(getServletContext().getRealPath("")+"/3Tier1.gif");
     FileInputStream inFile = new  FileInputStream(bild);
     byte[] buffer = new byte[(int)bild.length()];
     inFile.read(buffer);    
     response.setContentType("image/gif");    
     ServletOutputStream daten = response.getOutputStream();
     daten.write(buffer);       
  }
}
itmapa.de - X2H V 0.17


Der "service" Methode eines Servlets werden ein ServletRequest "request" und ein ServletResponse "response" Objekt übergeben. Dabei handelt es sich, wie die Namen vermuten lassen, beim ServletRequest um die Anfrage, die der Client an den Server schickt, und beim ServletResponse um die Antwort, die der Server zum Client als Antwort zurückschickt. In den bisherigen Beispielen wurde die Anfrage des Clients unberücksichtigt gelassen.

Servlets sind eigenständige Objekte, welche Referenzen auf andere Objekte haben können. Jedes Servlet kann dabei als Anwendung betrachtet werden, welche innerhalb eines Servers ausgeführt wird.

Im weiteren Verlauf des Artikels wird im Wesentlichen davon ausgegangen, dass dynamische HTML-Seiten mithilfe der Servlet Technologie erstellt werden sollen.