Java Servlets

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Begriff

Java Servlets sind Java Klassen, die als Schnittstelle zwischen einer Java Anwendung und einem Servlet Container dienen. Sie implementieren das Interface javax.servlet.Servlet. Im Webbereich wird allerdings in der Regel von der Klasse javax.servlet.http.HttpServlet abgeleitet.

Funktionsweise

Java Servlets sind Java-Objekte, die Requests (Anfragen) von Webclients entgegen nehmen, eine Response (Antwort) mit dynamischem Inhalt generieren und zum Client zurück schicken. Die zugrunde liegende Technologie wurde von Sun Microsystems entwickelt und ist Bestandteil der Java Plattform, Enterprise Edition (Java EE).

Bei Webanwendungen werden bevorzugt HttpServlets verwendet. Hier ist diese Implementierung der Service-Methode bereits vorgegeben. Sie unterscheidet die einzelnen http-Methoden und ruft für Jede einen entsprechenden Handler auf, so dass eigene Ableitungen hier besser die Methoden doGet() bzw. doPost() für das http-GET bzw. http-POST überschreiben sollten. Die jeweiligen Methoden erhalten vom Servlet-Container alle erforderlichen Informationen, z.B. ein Request- und ein Response-Objekt.

Nach Abarbeitung des individuellen Codes der Anwendung liefert der Servlet Container das Ergebnis an den Client zurück.

JavaEE 5

Java Servlets wurden bis JavaEE 5 über eine Konfigurationsdatei ‚web.xml’ dem Servlet Container bekannt gemacht und mit einer URL versehen. Über die URL können Clients z.B. vom Browser aus das Servlet aufrufen. Der Servlet Container erkennt anhand des Inhalts der Konfigurationsdatei, welches Servlet zu verwenden ist. Falls noch nicht geschehen, wird eine Instanz der Klasse erzeugt und die von jedem Servlet zu implementierende Service-Methode aufgerufen.

JavaEE 6

Seit JavaEE 6 ist die Verwendung der Konfigurationsdatei optional. EJB Entity Beans, JAX-RPC 1.1, JAXR 1.0 und Java EE Application Deployment 1.2 sind optional

JavaEE 7

Applikationsserver stellen in JavaEE 7 eine vorkonfigurierte Standard-Datenbank und eine JMS ConnectionFactory zur Verfügung. Damit verringert sich der Konfigurationsaufwand. GlassFish 4.0 dient nun als Referenzimplementierung.
Neu hinzugekommen sind WebSockets (JSR 356), JSON (JSR 353) und Batch Applications (JSR 352). JavaServer Faces (JSF) unterstützen nun HTML5. Besseren Zugriff auf die Ressourcen der Container ermöglichen die Concurrency Utilities.

JavaEE 8

Neu hinzugekommen sind Java API for JSON Binding (JSON-B, JSR 367) und Security API (JSR 375). Updates erhielten:

  • Servlet 4.0 (JSR 369)
  • CDI 2.0 (Context and Dependency Injection)
  • JAX-RS 2.1 für die Entwicklung von Java REST-Services
  • JSF 2.3 (JSR 372)
  • Bean Validation 2.0 (JSR 380)
  • Java API for JSON Processing (JSONP, JSR 374)

Einsatzgebiete

Java Servlets werden zur Kommunikation mit einer Java Anwendung auf einem Servlet Container eingesetzt. Auch beim Einsatz von JavaServer Pages ist dies der Fall, da diese Seiten lediglich eine Art Wrapper (Java) für Servlets sind, die zur Vereinfachung der Entwicklung einer grafischen Weboberfläche dienen soll. Der Servlet Container wandelt JSP-Seiten kurzerhand in Servlets um und verwendet diese dann für die weitere Abarbeitung.

Für den Entwickler sind Servlets eine sinnvolle Ergänzung zu JavaServer Pages im Sinne der Entwicklung nach dem Model-View-Controller-Prinzip (MVC). Dabei übernehmen Servlets die Rolle des Controllers in dem sie sämtliche webspezifische Logik einer Anwendung implementieren. So werden JSP-Seiten von störendem Java Code befreit und es wird eine klare Trennung von Auszeichnungssprache und Programmiersprache erreicht. Alle Interaktionen des Webanwenders, die eine Kommunikation mit dem Server zur Folge haben (auch das Anfordern einer neuen JSP-Seite) werden hier über Servlets abgewickelt.

Servlets in Web Frameworks

JSF und Struts implementieren mit dem FacesServlet bzw. dem ActionServlet je ein einziges Servlet als zentrale Controllerinstanz. Diese verarbeitet die Konfigurationsdatei des jeweiligen Frameworks und steuert so die Gesamtanwendung.

Externe Links

Quellen