Java Servlets: Unterschied zwischen den Versionen
K (→Funktionsweise) |
K (→Quellen) |
||
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Begriff == | == 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. | + | Java Servlets sind Java [[Klasse|Klassen]], die als [[Schnittstelle]] zwischen einer Java Anwendung und einem Servlet Container dienen. Sie implementieren das [[Interface]] {{JAPI|javax.servlet.Servlet}}. Im Webbereich wird allerdings in der Regel von der Klasse {{JAPI|javax.servlet.http.HttpServlet}} abgeleitet. |
== Funktionsweise == | == 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). | + | Java Servlets sind Java-[[Objekt|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 | + | 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 <code>doGet()</code> bzw. <code>doPost()</code> 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. | Nach Abarbeitung des individuellen Codes der Anwendung liefert der Servlet Container das Ergebnis an den Client zurück. | ||
===JavaEE 5=== | ===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. | + | 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=== | ===JavaEE 6=== | ||
Seit JavaEE 6 ist die Verwendung der Konfigurationsdatei optional. | 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.<br> | ||
+ | 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 == | == 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 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. | + | 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. | + | 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 == | == 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. | + | [[JSF]] und [[Struts]] implementieren mit dem FacesServlet bzw. dem ActionServlet je ein einziges Servlet als zentrale Controllerinstanz. Diese verarbeitet die Konfigurationsdatei des jeweiligen [[Framework|Frameworks]] und steuert so die Gesamtanwendung. |
== Externe Links == | == Externe Links == | ||
− | [http://java.sun.com/products/servlet/index.jsp Java Servlet Technology (SUN)] | + | *[http://java.sun.com/products/servlet/index.jsp Java Servlet Technology (SUN)] |
+ | *[http://www.prozesse-und-systeme.de/servletTechnology.html Servlet Technologie - prozesse-und-system.de] | ||
+ | |||
+ | ==Quellen== | ||
+ | *https://www.heise.de/developer/artikel/Die-wichtigsten-Neuerungen-in-der-Java-Enterprise-Edition-7-1886333.html | ||
+ | *https://jaxenter.de/java-ee-8-features-61567 | ||
− | [[Kategorie: | + | [[Kategorie: JSP]] |
Aktuelle Version vom 8. April 2018, 18:18 Uhr
Inhaltsverzeichnis
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.