160 likes | 334 Views
Java-Servlets. Gliederung: Allgemeine Informationen zu Servlets Einsatz und praktische Nutzung von Servlets Servlet Lebenszyklus CGI versus Servlet Implementierung von Servlets. Allgemeine Informationen. Entwicklungsumgebung für Servlets
E N D
Java-Servlets Gliederung: • Allgemeine Informationen zu Servlets • Einsatz und praktische Nutzung von Servlets • Servlet Lebenszyklus • CGI versus Servlet • Implementierung von Servlets
Allgemeine Informationen • Entwicklungsumgebung für Servlets • Java Servlet Development Kit (JSDK) beinhaltet eine Servlet-Engine um die entwickelten Servlets testen zu können • implementieren übersetzen mit „servletrunner“ testen • Lebensraum für Servlets • Webserver mit eingebauter VM für Servlets (Sun Java Web Server, Netscape`s Enterprice Server, Lotus Domino Go Webserver) • Webserver mit Erweiterungmodul für Servlets (Apache, IBM`s WebSphere Application Server)
Servlets - Applets Servlet Applet • ohne GUI-Komponente (faceless) • JAVA-Programme auf Server Seite • erweitern Webserver um dynamische Komponenten • Ausführung in VM des Servers • nutzen die lokalen Ressourcen des Servers (Filesystem, DB) • mit GUI-Komponente • JAVA-Programm auf Client Seite • wird vom Server heruntergeladen • Ausführung in der VM des Clients (Browser) • keine Möglichkeit die lokalen Ressourcen des Clients zu nutzen Server (Webserver) Anfrage (Request) Servlet Antwort (Response)
Einsatz von Servlets • Dynamische Generierung von HTML Seiten • Client eröffnet Verbindung zum Server • HTTP Methode GET (ein Dokument, ein Diagramm, ein Ergebnis einer Datenbankabfrage) • HTTP Methode POST (eine Kreditkarten Nummer, neue Daten für eine Datenbank) • Antwort ist eine dynamisch erzeugte komplette HTML Seite • Server-Side Includes (SSI) • Servlets eingebettet in HTML Seiten mit Hilfe des <SERVLET> tag • Beispiel ist ein „Counter“ der in die statischen HTML Seiten eingefügt werden soll • JavaServer Pages • Java Code zwischen <%........... %> tag wird ausgeführt, Ergebnis als String in HTML Seite • Zukunft besteht in der Kombination von JavaServer Pages und JavaBeans
Praktische Nutzung • Servlet verarbeitet Daten aus dem Secure Hypertext Transfer Protokoll (Kreditkarteninformationen aus einer HTML Seite). • Threads der Servlets lassen sich synchronisieren (Online-Konferenz mit mehreren Clients). • Aufgabenteilung durch Zusammenarbeit von mehreren Servlets auf verschiedenen Rechnern um Überlastsituationen abzufangen (Lastausgleich). • Nach Verbindungsaufnahme zwischen Client und Server über HTTP-Protokoll kann über ein frei wählbares Protokoll kommuniziert werden. • Dynamische Code Erweiterungen sind möglich (Java Bytecode zur Laufzeit auf den Server laden und ausführen)
Servlet Lebenszyklus Erste Anfrage an Servlet Webserver lädt das Servlet und instantiiert es Anfrage an Servlet Webserver initialisiert das Servlet: init() init() Anfrage an Servlet Servlet bearbeitet die Anfragen: service() service() Anfrage an Servlet Webserver löscht das Servlet: destroy() destroy() Webserver wird beendet
Eine Instanz viele Threads Webserver Beispiel: Counter Problem: keine Konsistenz im Filesystem Lösung: Block muß synchronized sein request Thread request Thread Servlet request Thread request Thread
CGI versus Servlet Leistung: • Servlets werden bei der ersten Anfrage initalisiert und bleiben nach der Abarbeitung im Speicher des Servers erhalten (CGI Prozesse werden immer neu gestartet) Plattformunabhängigkeit: • Servlets sind auf beliebiger Plattform lauffähig (Perl basierte CGI-Skripte sind übertragbar, C oder C++ erfordern eine Portierung) Wiederverwendbarkeit: • Servlets können als Klassen importiert und an anderer Stelle verwendet werden (CGI sind meist isolierte Anwendungen) Sicherheit: • Security Manager von Java verhindert Ressourcenmissbrauch (keine solche Funktion bei CGI) Lastverteilung: • Servlets unterstützen Lastverteilung zwischen Servern (CGI nur mit extremen Aufwand realisierbar)
Hello World import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>"); out.println("<BODY>"); out.println("<BIG>Hello World</BIG>"); out.println("</BODY></HTML>"); } } http://server:8080/servlet/HelloWorld
Implementierungshierarchie Servlet Interface • Package javax.servlet • allgemein für Client-Server-Architektur GenericServlet abstrakte Klasse HTTPServlet • Package javax.servlet.http • Http Spezialisierungen abstrakte Klasse MeinServlet
Servlets und Cookies 1. Anfrage http://server:8080/servlet/MeinServlet Cookie: 0x1234ab Client Server Antwort mit Cookie weitere Anfragen mit Session ID Session ID: 0x1234ab user:“abed“ login at: “17:33“ ......... Session-Objekt • Cookie ist String Objekt (bei Servlets ID der Sitzung). • Cookie kann Informationen beliebiger Art über den Client aufnehmen und auf der lokalen • Festplatte des Clients speichern. • Bei einem erneuten Aufruf des Servlets wird der Cookie wieder zurückgeliefert und kann vom • Servlet ausgewertet werden.
Server-Side Includes Webserver .shtml file <HTML> >HEAD> . </HEAD> <BODY> . <SERVLET CODE= Servlet1> </SERVLET> . </BODY> </HTML> request Servlet1 response
Verkettung von Servlets Webserver • Server läßt alle Anfragen bezüglich einer URL alle Servlets der Kette durchlaufen. • Kette wird nur bei Bedarf durchlaufen (on the fly) Beispiele: • dynamisches Übersetzen des Textes einer HTML Seite in die Landessprache • Filter mit verschiedenster Funktionalität Servlet1 request Servlet2 Servlet3 response
JavaServer Pages Webserver .jsp file Java Compiler <HTML> >HEAD> . </HEAD> <BODY> . <%...............%> . </BODY> </HTML> request Servlet1 response
Servlets und Datenbanken Webserver Servlet Instanz Connection Pool (bei init() erzeugt) request lokale Variable lokale Variable lokale Variable Connection Connection Connection Connection response Datenbank request response request response
Servlets im IVS • Servlet Entwicklungsumgebung (JSDK) • Webserver mit Servlet Erweiterung auf „freyr“ • Projekte • Counter der Webseiten der AG • Volltextsuche über die Webseiten der AG • Servlets zur Softwaremessung