Servlets - Lab4Inf

Werbung
Web 2.0
Software-Architekturen
Servlets als Controller einer MVC Web Architektur
Prof. Dr. Nikolaus Wulff
HTTP und HTML
• Das HyperText TransferProtokoll (HTTP)
beschreibt eine einfache verbindungslose
Kommunikation, die auf TCP/IP basiert.
• Die ausgetauschten Nachrichten sind mit der
HyperText Markup Language (HTML)
formatiert.
• Ein Browser fordert mittels der HTTP GET
Methode ein Dokument vom Webserver an,
dieser schickt es dann an den Client zurück.
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
2
Standard HTML
1: get X.html
Browser
3:
X.html
2: Datei lesen
Web-Server
X.html
+ einfache Sprache (HTML)
– nur statische Informationen & Verknüpfungen
GET http://www.fh-muenster.de:80/docs/Welcome.html
Methode
Protokoll
© Prof. Dr. Nikolaus Wulff
Server DSN + Port
symbolischer Pfad Dokument
Web 2.0 Software-Architekturen
3
HTML und CGI-Bin
• Die HTML Seiten sind statisch hinterlegt und
erlauben es nicht ein interaktive Client/Server
Anwendungen zu bauen.
• Um mehr als nur Werbung in das WWW stellen
zu können, benötigt man für e-Business so
etwas wie „eine Bestellung aufgeben“ ...
• Man behalf sich mit dem Common-GatewayInterface (CGI) um auf dem Server externe
Prozesse aufzurufen, die dynamisch HTML
generierten
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
4
Von CGI zu den Servlets
• Externe Prozesse sind eine teure Ressource. Es
fehlt die Integration in den Webserver. Sun
entwickelte daher die Servlet API als PlugIn für
den Webserver.
• Anstatt als eigenständiger Prozeß laufen
Servlets als Thread innerhalb der JVM.
• HttpServlets kapseln die GET/POST Methoden
von HTTP in der Java Umgebung.
• Da Servlets in Java geschrieben sind stehen nun
alle Möglichkeiten wie CORBA, EJB, JDBC,
JMS etc. dem Webserver zur Verfügung.
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
5
Java-Servlets
1: get/post servlet/X
X.java
Browser
7:
Web-Server
Xout
6:
Xout
2: call X.class
Servlet-Engine
+ einfache Sprache (Java)
+ Dynamik
– HTML im Java-Code über
out.println(„...“)
5: Ausgabe
4: X ausführen
Java-Compiler
(javac)
b: erzeugen
X.class
X.class
mit DB-Zugriffen
usw.
DB
© Prof. Dr. Nikolaus Wulff
a: übersetzen
Web 2.0 Software-Architekturen
3: Class Datei
laden (einmal)
6
Die Servlet Klassenhierarchie
<<Interface>>
ServletRequest
(from serv let)
GenericServlet
(from servl et)
service
service
<<Interface>>
ServletResponse
(from ser vl et)
service()
Response
kapselt die
Antwort
Request
kapselt die
Anfrage
<<Interface>>
HttpServletRequest
Session
kapselt den
0..1
Status
<<Interface>>
HttpSession
© Prof. Dr. Nikolaus Wulff
HttpServlet
service
service
doGet()
doPost()
throws
<<Interface>>
HttpServletResponse
throws
1
ServletException
(from serv let)
I OException
(from io)
Web 2.0 Software-Architekturen
PrintWriter
(from io)
7
Eigene Servlets einbinden
<<Int erface>>
HttpServletRequest
(from http)
HttpServlet
(from http)
service
service
doGet()
doPost()
0..1
<<Int erface>>
HttpSession
(from http)
MyServlet
<<Int erface>>
HttpServletResponse
(from http)
HTML-Page
as
Response
doGet()
doPos t()
sql
(from java)
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
8
Lebenslauf eines Servlets
• Ein Client ruft ein Servlet per GET/POST auf.
• Das Servlet wird vom Webserver geladen
• Das Servlet wird einmalig innerhalb der init()Methode initialisiert, das Servlet kann nun z.B.
– eine Datenbankverbindungen initialisieren,
– einen EJB oder CORBA Server kontaktieren, etc.
– Verwendet wird die ServletConfig des Web-Containers,
parametrisiert innerhalb der web.xml.
• Request- und Response Objekt werden vom WebContainer initialisiert.
• Es wird die doGet oder doPost-Methode aufgerufen.
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
9
Lebenslauf eines Servlets (II)
• Das Servlet schreibt seine Anwort in den
Ausgabestrom des Response-Objekts.
• Der Web-Container wertet den Response aus und
schreibt die Antwort per HTTP an den Client.
• Beim Herunterfahren der ServletEngine oder falls
eine maximale Lebensdauer für das Servlet im
Webserver definiert ist, wird die destroy()Methode des Servlets ausgeführt, um eventuelle
Aufräumarbeiten auszuführen.
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
10
Servlet Sequenzdiagramm
Browser
: Kunde
WebServer
HttpRequest
HttpServlet
HttpResponse
get
servlet GET
create
create
servi ce
doGet
read
write
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
11
Infrastruktur
• Damit ein Servlet in einem Web-Container läuft
muss es in seine Umgebung kopiert werden.
Dieser Vorgang heisst:
• Deployment
– physisches Kopieren aller Ressourcen in ein
Verzeichnis oder Packen als WebArchive *.war
– logisches Bekanntmachen per web.xml als Bestandteil
einer Web-Applikation
• Dies sind recht umständliche Schritte, die sich
jedoch automatisieren lassen...
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
12
web.xml
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun ...
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>de.lab4inf.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
</web-app>
• Bekannt machen eines Servlets in der »web.xml«
unter dem symbolischen Pfad /Hello innerhalb der
Web-Anwendung per dreifachem Mapping
Pfad => Name => Klasse .
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
13
Architektonische Einordnung
• Innerhalb einer Web Anwendung sind die Servlets bei
einem MVC II Architektur der Controller Schicht
zuzuordnen.
• Sie nehmen Anfragen entgegen, delegieren an Modeloder Handlerklassen und generieren selbst keine
HTML Ausgabe in den Ausgabestrom sondern
delegieren dies z.B. an eine JSP als View.
• Servlets sollten deshalb im Allgemeinen als stateless
Services (aus Sicht des aufrufenden Web-Clients)
implementiert werden.
– Ein evtueller Client-State gehört in die HttpSession
© Prof. Dr. Nikolaus Wulff
Web 2.0 Software-Architekturen
14
Herunterladen