tutorial

Werbung
Java-Servlets
Gliederung:

Allgemeine Informationen zu Servlets

Einsatz und praktische Nutzung von Servlets

Servlet Lebenszyklus

CGI versus Servlet

Implementierung von Servlets
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 1
Mittwoch, 1. November 2000
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)
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 2
Mittwoch, 1. November 2000
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)
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 3
Mittwoch, 1. November 2000
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
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 4
Mittwoch, 1. November 2000
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)
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 5
Mittwoch, 1. November 2000
Servlet Lebenszyklus
Erste Anfrage
an Servlet
Anfrage an
Servlet
Anfrage an
Servlet
Anfrage an
Servlet
Webserver lädt das
Servlet und instantiiert es
Webserver initialisiert
das Servlet: init()
init()
Servlet bearbeitet die
Anfragen: service()
service()
Webserver löscht das
Servlet: destroy()
destroy()
Webserver wird
beendet
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 6
Mittwoch, 1. November 2000
Eine Instanz viele Threads
Webserver
request
Thread
request
Thread
Beispiel:
Counter
Servlet
request
request
Autor: Cornelius Wille
Status: Entwurf
Problem:
keine Konsistenz
im Filesystem
Thread
Lösung:
Block muß
synchronized
sein
Thread
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 7
Mittwoch, 1. November 2000
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)
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 8
Mittwoch, 1. November 2000
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
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 9
Mittwoch, 1. November 2000
Implementierungshierarchie
Interface
Servlet
Package javax.servlet
abstrakte Klasse
GenericServlet
abstrakte Klasse
HTTPServlet
• allgemein für Client-Server-Architektur
Package javax.servlet.http
• Http Spezialisierungen
MeinServlet
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 10
Mittwoch, 1. November 2000
Servlets und Cookies
1. Anfrage
Client
Antwort mit Cookie
weitere Anfragen mit Session ID
http://server:8080/servlet/MeinServlet
Cookie: 0x1234ab
Server
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.
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 11
Mittwoch, 1. November 2000
Server-Side Includes
Webserver
.shtml file
request
response
Autor: Cornelius Wille
Status: Entwurf
<HTML>
>HEAD>
.
</HEAD>
<BODY>
.
<SERVLET CODE= Servlet1>
</SERVLET>
.
</BODY>
</HTML>
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Servlet1
Seite 12
Mittwoch, 1. November 2000
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
Autor: Cornelius Wille
Status: Entwurf
request
Servlet1
Servlet2
response
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Servlet3
Seite 13
Mittwoch, 1. November 2000
JavaServer Pages
Webserver
.jsp file
request
<HTML>
>HEAD>
.
</HEAD>
<BODY>
.
<%...............%>
.
</BODY>
</HTML>
Servlet1
response
Autor: Cornelius Wille
Status: Entwurf
Java
Compiler
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 14
Mittwoch, 1. November 2000
Servlets und Datenbanken
Webserver
Servlet Instanz
request
lokale Variable
response
request
response
request
lokale Variable
Connection Pool
(bei init() erzeugt)
Connection
Connection
Datenbank
lokale Variable
Connection
response
Connection
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 15
Mittwoch, 1. November 2000
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
Autor: Cornelius Wille
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 16
Mittwoch, 1. November 2000
Herunterladen