Benutzermodellierung in WebAnwendungen Vorlesung im Rahmen des Studienprojekts MUMS Sommersemester 2003 Mark Giereth Institut für Intelligente Systeme Universität Stuttgart Inhalt Teil I: Konzepte der Benutzermodellierung Teil II: Benutzermodellierung in Web-Anwendungen Grundlagen und Problematik Web-Anwendungen auf Basis von Java Servlets Verwaltung von Sitzungsdaten Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 2 Herkömmliche Dialogsysteme Benutzer muss wissen: Welche Informationen zur Lösung seines Problems relevant bzw. irrelevant sind Herkömmliche Dialogsystem bieten nur ein "Durchblättern" des Informationsangebots oder eine gezielte Suche an Weitere Unterstützung für Such- und Selektionsprozess fehlt Welche der relevanten Informationen sind im System verfügbar und wie werden sie gefunden Benutzer baut sich ein Modell des Systems auf (Benutzersicht) System muss diese Modellbildung erleichtern Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 3 Benutzerorientierte Dialogsysteme System bildet während der Interaktion Annahmen über: die Ziele des Benutzers (im Rahmen des Anwendungsbereichs) die Pläne, mit denen der Benutzer seine Ziele erreichen will das Wissen des Benutzers im Rahmen des Anwendungsbeichs Solche Annahmen über den jeweiligen Benutzer werden als Benutzermodell bezeichnet Mit Hilfe dieser Informationen versucht das System den Benutzer bei seinen Zielen zu unterstützen Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 4 Beispiel eines benutzerorientierten Dialogsystems Das System kann Annahmen über fehlendes oder bereits vorhandenes Vorwissen des Benutzers verwenden und Ziele des Benutzers mitberücksichtigen, um Antworten verständlicher zu machen und redundante Anworten zu vermeiden. Beispiel: Benutzer: Wann fährt der nächste Zug nach M.? System: 15:15 Uhr, Bahnsteig 7. Interpretation: Benutzer hat das Ziel mit dem nächsten Zug nach M. zu fahren. Er kennt die Abfahrtszeit des Zuges nicht. Voraussetzung für die Ausfühbarbeit des Plans ist Abfahrtszeit und Bahnsteig. Es ist unwahrscheinlich, dass Benutzer zwar die Zeit nicht kennt, wohl aber den Bahnsteig. Folglich wird auch die Information über den Bahnsteig kommuniziert. Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 5 Anwendungen Dialogsysteme (vgl. Kobsa) Lern- und Tutorsysteme (vgl. Weber) Aktive Hilfesysteme Personalisierte Informationsdienste (vgl. Sharma) Web-Anwendungen z.B. Online-Shops etc. Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 6 Entwurfsentscheidungen Welche Arten von Informationen über den Benutzer sollen berücksichtigt werden? Wie können diese Informationen repräsentiert werden? Auf welche Weise können Informationen gesammelt und in das Benutzermodell eingetragen werden? Wie können solche Informationen verwendet werden? Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 7 Arten von Informationen Ziele Ziele AnwendungsAnwendungswissen wissen Systemwissen Systemwissen Präferenzen,Einstellungen Einstellungen Präferenzen, Dialogverhalten Dialogverhalten DeskriptiveInformationen Informationen Deskriptive Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 8 Beispiel: Bildung von Annahmen Beispiel: Annahmen an welchen Themen ein Benutzer interessiet ist: Heuristiken: Kauft ein Produkt zu dem Thema Benutzer setzt ein Lesezeichen auf eine Seite, die ein bestimmtes Thema besitzt Benutzer besucht die Seite immer wieder Benutzer speichert den Inhalt der Seite lokal ab Benutzer verweilt eine längere Zeit auf der Seite Benutzer schaut sich ähnliche Seiten an etc. Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 9 Verwendung von Annahmen Präsentation Dialogablauf, Interaktionsmedien Reihenfolge (das wichtigste zuerst) Highlighting bestimmter Themen etc. Auswahl der relevanten Objekte aus großem Objektpool Content-Based Filtering: Objekte werden durch Schlüsselwörter beschrieben, Ranking der Schlüsselwörter von abgerufenen Objekten, Einordnung von neuen Objekten bezüglich Ranking Social Filtering: versucht Benutzer in Gruppen einzuordnen, z.B. durch entsprechende Fragen, die Benutzer beantwortet. Oft eingesetzt in Online-Shops (z.B. Amazon) mit dem Ziel einer Abbildung von Gruppen auf Produkte Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 10 Dimensionen Implizites vs. explizites Benutzermodell Standardbenutzermodell vs. individuelles Benutzermodell Modellaufbau durch Benutzer (adaptierbar) vs. Modellaufbau durch das System (adaptiv) Statisches vs. dynamisches Benutzermodell Für Benutzer transparentes Modell vs. für Benutzer intransparentes Modell Persistentes Modell vs. sitzungsbezogenes Modell Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 11 Standard- vs. individuelles Benutzermodell Je unspezifischer der Anwendungsbereich und inhomogener der Benutzerkreis, desto mehr wird es notwendig das Benutzermodell des Systems zu individuallisieren Individuelles Modell Benutzerkreis inhomogen homogen Anwendungsbereich spezifisch Standardmodell unspezifisch Kombination, z.B. gruppenbasiertes Modell Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 12 Probleme Akzeptanzprobleme Beobachtung durch das Programm Intransparenz welche Daten über Benutzer gepseichert werden Datenschutzproblem Zeitproblem bei adaptierbarben Systemen Verwendung wird als störend empfunden Benutzer kann sich bevormundet fühlen Zu scharfe Grenzen zwischen Stereotypen können dazu führen, dass Benutzer sich im "Käfig seines Geschmacks" fühlt … Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 13 Literatur C. Stary: "Interaktive Systeme", Vieweg, 1994 A. Kobsa: "Benutzermodellierung in Dialogsystemen", Springer-Verlag, 1985 G. Weber, M. Specht: "User Modeling and Adaptive Navigation Support in WWW-Based Tutoring Systems", Proceedings of the 6th International Conference, UM97 A. Sharma: "A Generic Architecture for User Modeling Systems and Adaptive web services", URL: http://www.csd.abdn.ac.uk/ebiweb/papers/sharma.pdf Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 14 Inhalt Teil I: Konzepte der Benutzermodellierung Teil II: Benutzermodellierung in Web-Anwendungen Grundlagen und Problematik Web-Anwendungen auf Basis von Java Servlets Verwaltung von Sitzungsdaten Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 15 Web-Anwendungen Web-Anwendungen sind Anwendungen, die auf WebTechnologien (HTTP, HTML, XML, JavaScript, Cookies, URL, Applets, …) aufsetzen Beispiele für Web-Anwendungen sind Online-Shops, -Auktionen oder -Informationsdienste Die Vor- und Nachteile von Web-Anwendungen korrelieren eng mit den Vor- und Nachteilen der eingesetzten WebTechnologien: + weltweite Verfügbarkeit + sehr gutes Deployment - eingeschränkte Benutzeroberfläche - apriori anonyme Benutzer Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 16 WWW und HTTP Das World Wide Web ist von seiner Architektur her nach dem Client-Server Prinzip aufgebaut. Die Kommunikation zwischen Client und Server wird durch das Hypertext Transfer Protocol (HTTP) festgelegt. HTTP ist ein zustandsloses, verbindungsorientiertes Protokoll der Anwendungsschicht HTTP unterscheidet zwischen Request und Response Data General Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 17 HTTP-Request-Response-Szenario 1. Der Benutzer gibt die URI http://www.uni-stuttgart.de/index.html ein 2. Der Browser fragt den DNS-Server nach der IP-Adresse für den DNSNamen www.uni-stuttgart.de 3. DNS-Server antwortet mit einer IP Adresse, z.B. 129.69.2.151 4. Der Browser baut eine TCP-Verbinung zu 129.69.2.151 auf 5. Der Browser sendet HTTP-Request: GET /index.html HTTP/1.0 (+Header-Info) 6. Der Web-Server auf dem Rechner 129.69.2.151 bearbeitet den Request. Er liest z.B. die Datei index.html aus dem Filesystem und sendet diese über die TCP-Verbindung zurück 7. Die TCP-Verbindung wird geschlossen 8. Der Browser stellt den Inhalt dar Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 18 HTTP-Request-Response-Szenario (2) Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 19 HTTP-Response Ein einfacher GET Request: GET /index.html HTTP/1.0 Eine einfache Response HTTP/1.0 200 OK Date: Wed, 02 Aug 2000 08:15:07 GMT Status: 200 Content-Type: text/html Content-Language: en <html> <head><title>Hello World</title></head> <body><h1>Hello World</h1></body> </html> Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 20 Uniform Resource Identifier Ein URI (RFC 2396) besteht aus folgenden Teilen: protocol host:port request path query string http://localhost:8080/index.htm http://selfhtml.teamone.de/index.htm http://www.google.de/search?q=MUMS&ie=UTF-8&hl=de Weitere: ftp://ftp.is.co.za/rfc/rfc1808.txt gopher://spinaltap.micro.umn.edu/00/Weather mailto:[email protected] Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 21 Inhalt Teil I: Konzepte der Benutzermodellierung Teil II: Benutzermodellierung in Web-Anwendungen Grundlagen und Problematik Web-Anwendungen auf Basis von Java Servlets Verwaltung von Sitzungsdaten Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 22 Eigenschaften von Java Servlets Portabilität ausführbar auf allen Systemen, für die es eine Java Virtual Machine und einen Web-Server mit einer Servlet-Engine gibt Zugriff auf alle Java-Bibliotheken, u.a. JDBC für Datenbankzugriffe CORBA und RMI für verteilte Objekte Netzwerkunterstützung Verwendung von XML-Technologien (XSLT, SOAP, etc.) Effizienz Ausführung als Threads (Leichtgewicht-Prozesse) innerhalb einer JVM und nicht als eigenständige Betriebssystem-Prozesse Höhere objektorientierte Programmiersprache bessere Wartbarkeit und Wiederverwendbarkeit von Code im Vergleich zu Scriptsprachen Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 23 Servlet Architektur Servlets sind Java-Klassen, die das Servlet-Interface implementieren und innerhalb einer Servlet-Engine laufen Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 24 Servlet und HttpServlet Jedesmal wenn beim Web-Server eine Anfrage für ein Servlet eintrifft, veranlaßt dieser die Servlet-Engine dazu, die service() Methode des Servlets aufzurufen. Ein HttpServlet ist ein auf HTTP angepasstes Servlet, das eine Schnittstelle bereitstellt, um HTTP-Requests zu lesen und HTTP-Responses zu schreiben Übergeben werden: ein HTTPServletResponse Objekt - kapselt HTTP-Response ein HTTPServletRequest Objekt - kapselt HTTP-Request HttpServlets besitzen darüberhinaus spezifische doXXX() Methoden, wobei XXX die spezifischen HTTPMethoden wiederspiegelt. Z.B. doGet() für HTTP-GET, etc. Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 25 Servlet API <<interface>> Servlet service() init() GenericServlet doGet() doPost() … HttpServlet doGet() doPost() … <<interface>> ServletConfig getInitParameter() <<interface>> HttpServletRequest getCookies() getSession() getParamter() <<interface>> HttpSession getAttribute() setAttribute() … Cookie setValue() getValue() getName() <<interface>> HttpServletResponse addCookie() encodeURL() setStatus() getOutputStream() Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 26 HTTP request and response interfaces HttpServletRequest HttpSession getSession() returns the current session associated with this request String getHeader(String) returns the value of the specified request header as a String Cookie[] getCookies() returns all Cookie objects the client sent with this request String getParamter(String) parameters are contained in the query string or posted form data … HttpServletResponse addCookie(Cookie) adds the specified cookie to the response addHeader(String,String) adds a response header with the given name and value String encodeURL(String) encodes the specified URL by including the session ID in it setStatus(int) sets the status code for this response … Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 27 Servlet registration and paths The request path is composed of the following elements: Context path: A concatenation of / with the Web application root (here: /MUMS) Servlet path: The path section that corresponds to the component Path info: not part of the context path or the servlet path. Pattern Servlet /ozon/* OzonGenServlet /*.jsp HelpJspServlet URI Servlet path Path info /MUMS/ozon/index.html /ozon /index.html /MUMS/help/feedback.jsp /help/feedback.jsp null Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 28 Beispiel Servlet public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); ServletOutputStream out = response.getOutputStream(); // schreiben von HTML in den Ausgabestrom out.println("<html><body>hallo!</body></html>"); out.close(); // Ausgabestrom schliessen } } Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 29 Die Tomcat Servlet-Engine Tomcat (aktuelle Version 4.1.18) ist die Referenzimplementierung der Java Servlet-Spezifikation 2.3 von der Apache Group Tomcat-Verzeichnissbaum: Für jede Web-Applikation wird ein neues Verzeichnis unter $TOMCAT_HOME\webapps angelegt. Beispiel $TOMCAT_HOME\webapps\myApp Unterhalb von myApp sollten die Verzeichnise: WEB-INF, WEB-INF\classes und WEB-INF\lib angelegt werden, welche die Java-Klassen (.class), die Java-Bibliotheken (.jar) sowie die Einstellungen für die jeweilige Web-Anwendung in der web.xml Konfigurationsdatei enthalten Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 30 HTML Formulare Beispiel <FORM action="http://localhost:8080/AddressServlet" method="POST"> <input type="text" name="Name"> <!– Definition der weiteren Felder --> </FORM> Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 31 Formulardaten auslesen und verarbeiten Formulardaten werden als Parameter dem HttpServletRequest-Objekt mitgegeben. Man erhält den Wert eines Formular-Felds über die getParameter(String)-Methode. Beispiel: String nameStr = request.getParameter("Name"); Der Parametername ist dabei der Name des jeweiligen Formularelements Das Ergebnis kann null sein, wenn es kein Formularelement mit dem angegebenen Namen gibt oder der Wert des Formularelements nicht gesetzt ist Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 32 Inhalt Teil I: Konzepte der Benutzermodellierung Teil II: Benutzermodellierung in Web-Anwendungen Grundlagen und Problematik Web-Anwendungen auf Basis von Java Servlets Verwaltung von Sitzungsdaten Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 33 HttpSession Provides a way to identify a user across more than one page request and to store information about that user A session usually corresponds to one user, who may visit a site many times. The server can maintain a session in many ways such as using cookies or rewriting URLs This interface allows servlets to: View and manipulate information about a session, such as the session identifier, creation time, and last accessed time Bind objects to sessions, allowing user information to persist across multiple user connections Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 34 HttpSession (2) Object getAttribute(String name) Returns the object bound with the specified name in this session, or null if no object is bound under the name. Enumeration getAttributeNames() Returns an Enumeration of String objects containing the names of all the objects bound to this session long getCreationTime() Returns the time when this session was created String getId() Returns a string containing the unique identifier assigned to this session long getLastAccessedTime() Returns the last time the client sent a request associated with this session void invalidate() Invalidates this session then unbinds any objects bound to it. void setAttribute(String name, Object value) Binds an object to this session, using the name specified. Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 35 Session Events HttpSessionBindingListener: When an application stores an object in or removes an object from a session, the session checks whether the object implements this interface. If it does, the servlet notifies the object that it has been bound to or unbound from the session . The object is notified by an HttpSessionBindingEvent object HttpSessionListener: Implementations of this interface are notified of changes to the list of active sessions in a web application. To recieve notification events, the implementation class must be configured in the deployment descriptor for the web application Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 36 Beispiel Code ... HttpSession session = request.getSession(true); Object warenkorb = session.getAttribute("Warenkorb"); if (warenkorb != null) { // do something with it } else { warenkorb = new Hashtable(); } ... // user got a product ((Hashtable)warenkorb).put( product.getName(), product.getValue()); ... Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 37 Sessions Sessions Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 38 Links Servlet-Seiten von SUN: http://java.sun.com/products/servlet/ http://java.sun.com/products/servlet/download.html Benutzermodellierung in Web-Anwendungen, Mark Giereth, 25. Juni 2003 39