fortgeschrittene servlet- techniken -...
TRANSCRIPT
![Page 3: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/3.jpg)
3
Übersicht
• Servlet Initialisierung• Attribute und Gültigkeitsbereiche• Sessions• Lebenszyklusereignisse
![Page 5: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/5.jpg)
5
Initialisierung
• Konfiguration des Servlets und der Web Applikation
• Es können Änderungen vorgenommen werden, ohne den Code zu kennen
• Initialisierungsparameter im DeploymentDescriptor
![Page 6: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/6.jpg)
6
Servlet Initialisierung
Container(Application Server)
Servlet A
Servlet B
Servlet C
ServletConfig A
ServletConfig B
ServletConfig CSer
vlet
Con
text
Web Application
![Page 7: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/7.jpg)
7
ServletConfig vs. ServletContext
„Globale Variable“„Lokale Variable“
Im <web-app> Tag des Deployment Descriptors
definiert
Im <servlet> Tag des Deployment Descriptors
definiert
Gilt für alle Servlets in der Webapplikation
Gilt nur für ein spezifisches Servlet
ServletContextServletConfig
![Page 8: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/8.jpg)
8
Der Deployment Descriptor im Projekt
![Page 9: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/9.jpg)
9
Grobaufbau DeploymentDescriptor
![Page 10: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/10.jpg)
10
Angabe der Servlet-SpezifischenParameter im Deployment
Descriptor
Mehrere init-params sind einfach mehrereBlöcke dieser Art hintereinander!
![Page 11: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/11.jpg)
11
Verwendung der Parameter im Servlet
Hinweis: Schlechter Programmierstil. (Warum?) Aber auch hier gilt die Regel – tut was ich sage und nicht, was ich mache!Klasse: init.BasicInit
![Page 12: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/12.jpg)
12
Angabe/Verwendung der webapplikationsspezifischen Parameter
Klasse: init.ContextUser
![Page 13: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/13.jpg)
13
Gruppendiskussion
Wie könnte es zu dieser Ausgabe
kommen?
![Page 15: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/15.jpg)
15
Motivation
Informations-austauschzwischen
verschiedenen Elementen
![Page 16: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/16.jpg)
16
Attribute Konzept
• Servlets können miteinander kommunizieren, indem sie Objekte als Attribute definieren
• Diese können einen beliebigen Typ haben (d.h. Rückgabewert ist Object!)
• Attribute werden in verschiedenen Bereichen abgelegt, je nach Gültigkeit
![Page 17: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/17.jpg)
17
Attributsbereiche
?Bis die Session beendet ist
Für einen Anwender, bis er
die Web-App„verlässt“
Session
?
Bis die Requestnicht mehr
weitergegeben wird
Alle Elemente in der Kette dieser
RequestRequest
?Wie die Anwendung
Ganze WebanwendungContext
VerwendungLebensdauerGültigkeitsbereich
![Page 18: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/18.jpg)
18
Attributsbereiche
EinkaufswagenBis die Session beendet ist
Für einen Anwender, bis er
die Web-App„verlässt“
Session
Zwischen-ergebnisse
Bis die Requestnicht mehr
weitergegeben wird
Alle Elemente in der Kette dieser
RequestRequest
Datenbank-verbindung
Wie die Anwendung
Ganze WebanwendungContext
VerwendungLebensdauerGültigkeitsbereich
![Page 19: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/19.jpg)
19
Attribut-API: Context
• Im Interface ServletContext• Im Servlet über getServletContext()
verfügbar• Methoden:
– getAttribute(String)– setAttribute(String,Object)– removeAttribute(String)– getAttributeNames()
![Page 20: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/20.jpg)
20
Attribut-API: Request
• Im Interface ServletRequest (und damit auch in HttpServletRequest)
• Methoden:– getAttribute(String)– setAttribute(String,Object)– removeAttribute(String)– getAttributeNames()
![Page 21: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/21.jpg)
21
Attribut-API: Session
• Im Interface HttpSession (mehr dazu später)
• Methoden:– getAttribute(String)– setAttribute(String,Object)– removeAttribute(String)– getAttributeNames()
![Page 22: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/22.jpg)
22
Wichtige Anmerkungen zu Attributen
• Rückgabetyp ist Object, also ist ein Castnotwendig
• Nicht thread-sicher, d.h. man sollte sich genau überlegen, wo man Attribute setzt oder ausliest um Überlappungen zu vermeiden, bzw. einen synchronized()-Block auf die HttpSession oder den Context anzuwenden
![Page 23: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/23.jpg)
23
Verwendung von Attributen –Setzen (z.B. im Context)
ServletContext!
Klasse: init.SampleContextListener
![Page 24: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/24.jpg)
24
Verwendung von Attributen -Auslesen
Klasse: init.ContextUser2
![Page 26: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/26.jpg)
26
Problem: Das http-Protokoll ist zustandslos
Request
Response
Verbindungsaufbau
Verbindung beendet
Im http-Protokoll wird nach jeder Anfrage die Verbindung beendet.Zustandslosigkeit
![Page 27: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/27.jpg)
27
Gruppendiskussion: Was wird hier passieren?
Kaufe Buch X
Zeige EinkaufwagenUser: Cowboy Bill
Kaufe Buch Y
Kaufe Buch X
Zeige Einkaufwagen
Kaufe Buch YUser: Gentleman Dave
User: Cowboy Bill
User: Cowboy Bill
![Page 28: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/28.jpg)
28
Antwort
• Im reinen Http ohne zusätzliche Sessionverwaltung sind die Anfragen anonym
• Der Server vergisst sofort wieder, ob Dave oder Bill eingekauft haben
• Somit kann er den Warenkorb nicht zuordnen!
![Page 29: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/29.jpg)
29
Lösung: Cookies
• Cookies speichern Informationen auf der Client Seite
• Diese Information wird mit jeder Anfrage an den Server übertragen
• Über einen Cookiewert („Session ID“) kann der Server erkennen, wer die Anfrage gestellt hat
![Page 30: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/30.jpg)
30
Session IDs
CB Kauft Buch X
Zeige Ek-Wagen CB
GD Kauft Buch YUser: Gentleman Dave
User: Cowboy Bill
User: Cowboy Bill
Anmelden als CBUser: Cowboy BillCB
CB
Anmelden als GDUser: Gentleman Dave
GD
GD
CB
![Page 31: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/31.jpg)
31
Vorgehen im Servlet-Umfeld
Session erzeugen
Session abfragen
Informationenin Session speichern
![Page 32: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/32.jpg)
32
Session erzeugen/abfragen
• Wird mit dem gleichen „Befehl“ erreicht• Wenn keine Session existiert, dann wird
eine neue erzeugt
• request.getSession()• HttpSession Objekt
![Page 33: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/33.jpg)
33
Beispiel für Sessionverwaltung
Neue Initial-Informationen anlegen
(z.B. leeren Warenkorb)
Werte anpassen (z.B. basierend auf den
übergebenen Parameters)
Klasse: session.BeanCounterServlet (Aufruf über: BeanCounter.html)
![Page 34: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/34.jpg)
34
Sessionlebenszyklus
• Erzeugung: getSession() – s. vorherige Seiten
• Beenden der Session:– Timeout– Explizites Beenden (invalidate())– Application endet (z.B. durch einen Absturz
oder weil sie undeployed wird)
![Page 35: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/35.jpg)
35
Steuerung des Timeout (1)
Timeout-Zeitspannefür alle Servlets in
der Web-Applikation in Minuten
![Page 36: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/36.jpg)
36
Steuerung des Timeout (2)
Timeout-Zeitspannefür diese Session in
Sekunden
Klasse: session.BeanCounterServlet (Aufruf über: BeanCounter.html)
![Page 37: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/37.jpg)
37
Explizites Beenden einer Session
Die Session endet sofort, Zugriffe auf das Session Objekt nicht mehr legitim(IllegalStateException)
Klasse: session.SessionInvalidator
![Page 38: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/38.jpg)
38
Exotische Fälle kurz erklärt
• Was passiert, wenn der Client keine Cookies annimmt?
• Was passiert bei Load Balancing mit den Sessions?
• Kann ich auch eigene Cookies explizit setzen?
![Page 39: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/39.jpg)
39
Client nimmt keine Cookies an
• Jedesmal, wenn getSession() aufgerufen wird, denkt der Container, dass eine neue Session angelegt werden muss.
• Workaround: URL-Rewriting• URL-Rewriting: Die Session-Id kommt
nicht in einen Cookie, sondern wird als String an die URL angehängt
![Page 40: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/40.jpg)
40
Verwendung des URL-Rewriting
Diese Aktion muss für alle URLs in der Web-Applikation durchgeführt werden
(s. auch encodeRedirectURL())
Klasse: session.UrlEncoder
![Page 41: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/41.jpg)
41
Url-Rewriting Hinweise
• Wenn man diese Technik verwendet, dann wird nur dann trifft der Container eine Entscheidung:– Werden keine Cookies akzeptiert, dann wird
durch jede „markierte URL“ verändert– Werden Cookies akzeptiert, dann wird die
„Markierung“ ignoriert
![Page 42: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/42.jpg)
42
Was bedeutet URL Rewriting für mich?
• Wenn ich sicherstellen will, dass Sessions auch dann funktionieren, wenn keine Cookies erlaubt sind, brauche ich URL Rewriting
• D.h. jede(!) Servlet/JSP-URL muss mit dem „Rewriting-Befehl“ modifiziert werden
![Page 43: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/43.jpg)
43
Exotische Fälle kurz erklärt
• Was passiert, wenn der Client keine Cookies annimmt?
• Was passiert bei Load Balancing mit den Sessions?
• Kann ich auch eigene Cookies explizit setzen?
![Page 44: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/44.jpg)
44
Load Balancing
Container I(Application Server)
A
Request
Container II(Application Server)
A
Verteilt die Anfragen gleichmäßig auf Server I und II.
Session Info
![Page 45: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/45.jpg)
45
Load Balancing
Container I(Application Server)
A
Request
Container II(Application Server)
A
Kann bei Bedarf Session Infos verschieben!
![Page 46: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/46.jpg)
46
Verschieben von Session Infos
• Alle Attribute müssen Serializable sein!• Für den Programmierer und für den
Client bleibt der Umzug unsichtbar
![Page 47: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/47.jpg)
47
Exotische Fälle kurz erklärt
• Was passiert, wenn der Client keine Cookies annimmt?
• Was passiert bei Load Balancing mit den Sessions?
• Kann ich auch eigene Cookies explizit setzen?
![Page 48: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/48.jpg)
48
Cookies explizit setzen
• Ja, über javax.servlet.http.Cookie• Hat für reine JEE-Anwendungen nur
wenig Sinn• Gruppendiskussion: Was ist die bessere
Alternative für uns?
![Page 50: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/50.jpg)
50
Listener Konzept
Container(Application Server)
Servlet A
Servlet B
Servlet CSer
vlet
Con
text
Web Application
ServletContextListener
Initialisierung
Zerstörung
Wird über die Ereignisse informiert und kann passenden Code
ausführen
![Page 51: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/51.jpg)
51
Implementierung des ServletContextListeners
Beim Starten der Anwendung wird ein Attribute gesetzt und ist nun für
alle Servlets verfügbar!
![Page 52: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/52.jpg)
52
Einbindung in die Web-App
Die Art des Listeners wird automatisch erkannt.Wichtig: Nicht in ein Servlet-Tag packen!
![Page 53: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/53.jpg)
53
Einige weitere Listener
• ServletContextAttributeListener:Hinzufügen, Ersetzen und Entfernen von Attributen
• HttpSessionListener: Session beginnt/endet (Wieviele aktive User gibt es?)
• HttpSessionBindingListener: Wird ein Objekt gerade als Attribut verwendet?
• ….
![Page 55: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/55.jpg)
55
Lernziele
• Context und Config verwenden können.• Attribute verwenden können und die
verschiedenen Geltungsbereiche kennen.
• Sessions einsetzen können• Bedeutung von URL-Rewriting verstehen• Load Balancing Konzept erklären können• Listener verstehen
![Page 57: Fortgeschrittene Servlet- Techniken - ralf-gitzel.inforalf-gitzel.info/JEE-03-FortgeschritteneServletTechniken.pdfIm Tag des Deployment Descriptors definiert Gilt für](https://reader030.vdocuments.mx/reader030/viewer/2022040711/5e14f3212122b81baa5f3f91/html5/thumbnails/57.jpg)
57
Szenario• Schreibe eine Anwendung, die jedem Anwender die
Namen aller anderen Anwender zeigt, die aktiv sind.• Anwender melden sich an/ab über ein Webformular• Die Email des Webmasters wird über den Deployment
Descriptor definiert.
• Fortgeschrittene: – In der Anwendung können Nachrichten für andere Anwender
hinterlassen werden.– Das Message Board ist ein eigenes Servlet