3
Dozent
• Dr. Ralf Gitzel• Promotion an der Universität Mannheim
in Wirtschaftsinformatik• Angestellt beim ABB Forschungszentrum
in Ladenburg• Forschungsgebiete: Industrieller Service
und Reliability
4
Bisherige Vorlesungen (Uni MA)
• Java I & II• Verteilte Objekte• OOA&D• Applied IT-Governance
5
Mein Programmierhintergrund
• C• C++• C#• Java• ….• (Dementsprechend sieht mein Source-
Code aus!)
6
Rückfragen bei Problemen
• Fragen gerne auch in der Vorlesung• Fragen per Email: [email protected]• Download der Folien: www.ralf-gitzel.info
7
Installation für Übungen zu Hause
• Aktuelle Java Version (JRE)• Eclipse IDE for Java EE Developers• Apache Tomcat 6.0• Glassfish v3
8
Buchempfehlungen
• Basham, Sierra & Bates: Head First Servlets & JSP
• Panda, Rahman & Lane: EJB 3 in Action
10
(Voraussichtliche) Semester Übersicht
Enterprise Java Beans Einführung
EJB Übungsstunde und KlausurvorbereitungJEE Security KonzepteFrameworksIntegration Servlet und EJB, DeploymentFortgeschrittene EJB TechnikenEJB Persistenz
Servlet & JSP ÜbungsstundeJSP & Script-Freie Seiten (EL)Fortgeschrittene Servlet-TechnikenServlets Einführung/WiederholungEinführung, Übersicht, Installation für zu Hause
11
Servlets
• Wiederholung des bisher gelernten Stoffs• Aber: Auch Vertiefung des Themas• Ziel: Ein vernünftiges Interface für EJBs
erstellen können• Ggf. am Ende noch ein Web Framework
(je nach Zeit)
12
EJB Teil
• Wichtigste Aspekte der EJB Materie• Schwerpunkt Persistenz• Security wird Servlet/EJB übergreifend
behandelt
13
Vorlesungstermine
• Falls notwendig am Anfang Fragen zur letzten Stunde / zur Übungsaufgabe
• 1h Theorie• Ca. 30 Minuten Praxis• Übungen sind zu Hause zu beenden
14
2 Übungstunden
• Ein übergreifendes Beispiel für beide Stunden
• Idee: In einer Übung mehrere Aspekte abdecken statt immer nur isoloierteTeilaspekte
15
Klausur
• 50% Praxis• 50% Theorie
• Wer in der Vorlesung darauf achtet, welche Dinge ich betone, der wird in der Klausur einiges wiedererkennen!
• Manche Folien sind nicht klausurrelevant, können aber in der Klausur einen einfacheren Weg eröffnen.
17
Was ist JEE?
• Eine Java Erweiterung für:– Verteilte Anwendungen– Multi-Tier Architekturen
• Die Erweitung basiert auf:– Containerkonzept (Application Server)– Web- und Komponententechnologien
18
JEE Architektur (vereinfacht)
RequestWeb Container
Servlet
Response
EJB Container
EJBDB
Per
sist
ence
Pro
vide
r
19
Beispiel
Request
Response
Wieviel Geld habe ich auf dem Konto?
Keins. Null. Wie immer!
20
Beispiel
RequestWeb Container
Response Anfrage-formular
Antwort-seite
EJB Container
Datenstruktur
GeschäftslogikDaten
Per
sist
ence
Pro
vide
r
21
Gruppendiskussion
• Ist der Persistence Provider sinnvoll?• Ist die Trennung in 3 Elemente (Web
Container, EJB Container, PersistenceProvider) sinnvoll?
23
Servlet Architektur
Request
Container(Application Server)
Servlet
Response
24
Gruppendiskussion: Was sind die Vorteile eines Containers?
• Kommunikation• Lebenszyklusverwaltung• Multithreading• Sicherheit
25
Umsetzung der VorteileContainer
(Application Server) ServletClass A
ServletClass B
ServletClass C
26
Umsetzung der VorteileContainer
(Application Server) ServletClass A
ServletClass B
ServletClass CRequest
ObjectResponse
Object
Servlet
Datenstrukturen zurKommunikation mitdem Client werden
erzeugt. Servletwird erzeugt und
bekommt einen Thread.
27
Umsetzung der VorteileContainer
(Application Server) ServletClass A
ServletClass B
ServletClass CRequest
ObjectResponse
Object
Servlet service() Methode im Servletwird abgearbeitet. Antwort
geht an den Containerzurück.
28
Umsetzung der VorteileContainer
(Application Server) ServletClass A
ServletClass B
ServletClass CRequest
ObjectResponse
Object
Servlet Freigabe von Ressourcenam Ende
(bzw. intelligentesManagement)
X X
X
29
Gruppendiskussion
• Ist ein Java-Servlet ein Java-Programm?• Ist der Container eine Virtuelle
Maschine?• Wo ist die main()-Methode?
30
Tatsächlicher (Klassen-)Name
Identifikatoren für Servlets
Servlet
Öffentlicher Name(URL)
Deployment Name
31
Gruppendiskussion
• Warum reicht nicht ein Name aus?• Denkanstoß:
– Unterschiedliche Sichten auf das Servlet– Wir sind nicht alleine im Container
32
Motivation für die 3 Namen
• Keine Änderung nach außen bei internen Veränderung (Pfadnamen usw.)
• Sicherheit durch Verbergen• Vermeidung von
Namensüberschneidungen
33
Elemente eines Servlets
Java Code(Funktionalität)
DeploymentDescriptor
(z.B. Name Mapping)
35
Deployment on Tomcat
Tomcat Home Directory
webapps
MyServlet
WEB-INF
classes lib web.xml
Html und JSP
DeploymentDescriptor
36
URL des Servlets
• Webseiten in der Web Applikation: http://localhost:8080/MyServlet/index.html
• Servlet (verwendet URL-Pattern aus dem Deployment Descriptor, s. später):http://localhost:8080/MyServlet/url-pattern
37
Development in EclipseNeues „Dynamic Web Project“ anlegen
Detailarbeit wird automatisch erledigt
Wichtig: servlet-api.jar zu den Bibliotheken hinzufügen! (Liegt im lib-Verzeichnis des Tomcat)
38
Evtl. Bibliothek einbinden
Rechtsklick und mit Kontextmenü Buildpath
ändern
39
Servlet + HTML Erzeugen
• Unter Java-Resourcen ein neues Servleterzeugen.
• Unter Web-Content eine neue HTML Seite erzeugen
40
HTML Seite
Öffentlicher Name aus dem Deployment
Descriptor (aber ohne /)
!
41
Servlet ergänzen
42
Testen
index.html auswählen und den Start-Knopf
drücken
44
Aufgabenstellung
• Erstelle ein Hello-World Servlet• Erstelle ein Servlet, das eine HTML Seite
zurückgibt, auf der ein Webformular ist, mit dem man ein zweites Servlet aufrufen kann.