1 Servlets Stephan Baldes
2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container verwaltet wird und dynamisch Inhalte (z.B. Webseiten) generiert. SERVLET-ENGINE (Container) = Teil eines Web-Servers, der die Netzwerkdienste zum Empfangen von Anfragen und Senden von Antworten bereitstellt und die Servlets über ihren gesamten Lebenszyklus enthält und verwaltet.
3 Architektur
4 HTTP-Anfragen Beispiel Get GET /servlet/MyServlet?name=Scott& company=MageLang%20Institute HTTP/1.1 Connection: Keep-Alive User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT) Host: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg Beispiel Post POST /servlet/MyServlet HTTP/1.1 User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT) Host: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */ Content-type: application/x-www-form-urlencoded Content-length: 39 name=Scott&company=MageLang%20Institute HTTP Befehle GET HEAD POST PUT DELETE TRACE CONNECT OPTIONS
5 Servlet-Klassen
6
7 Lebenszyklus init(ServletConfig) Variablen initialisieren, Ressourcen anfordern service(ServletRequest, ServletResponse) doGet(ServletRequest, ServletResponse) doPost(ServletRequest, ServletResponse) doPut(ServletRequest, ServletResponse)... destroy() Ressourcen freigeben Eventuell Zustand speichern
8 Beispiel 1: Hallo Welt!
9 Servlet Methoden 1/3 void init(ServletConfig config) throws ServletException Initialisierung des Servlets mit Konfigurationsparameter void service(ServletRequest req, ServletResponse res) throws ServletException, IOException Führt einen einzelnen Request von einem Client aus und erzeugt die Antwort. Gibt die Anfrage weiter an doGet(ServletRequest req, ServletResponse res) doPost(ServletRequest req, ServletResponse res) etc. Für jeden Request wird die Methode in eigenem Thread ausgeführt Parameter req hält alle Informationen über Request; in Parameter res wird die Antwort geschrieben void destroy() soll Aufräumarbeiten durchführen und zerstört das Servlet
10 Servlet Methoden 2/3 String getParameter(String name) Wert des ersten Parameters mit dem gegebenen Namen null, falls nicht vorhanden String[] getParameterValues(String name) Array mit Werten (URL-decoded) für jedes Vorkommen des angegebenen Parameternamens null, falls nicht vorhanden Enumeration getParameterNames() eine Aufzählung (Enumeration) aller Parameternamen falls keine Parameter übergeben wurden ist die Enumeration leer
11 Servlet Methoden 3/3 ServletOutputStream getOutputStream() Binäre Daten PrintWriter getWriter() Text void setContentType(String type) Legt den MIME Typ fest (z.B.: text/html, image/jpeg,...)...
12 Wie erstellt man ein Servlet? Klasse schreiben und compilieren –Dazu vorher Servlet-Klassen im Klassenpfad aufnehmen Servlet in den Servlet-Container einbinden –.class-Dateien und.xml-Deskriptoren an die richtige Stelle des Servlets-Containers kopieren. Server starten –z.B. Tomcat Servlet im Browser aufrufen –z.B.
13
14 Arbeitsblatt Aufgabe 1
15 Arbeitsblatt Aufgabe 2
16 Beispiel 2: Begrüßung mit Namen Submit
17 Beispiel 2: Begrüßung mit Namen
18 Beispiel 2: Begrüßung mit Namen null: Servlet ohne diesen Parameter aufgerufen " " : Eingabeform war leer null: Servlet ohne diesen Parameter aufgerufen " " : Eingabeform war leer
19 Beispiel 2: Begrüßung mit Namen Dieser Parameter speichert die aktuelle id des Benutzers, um ihn wieder zu erkennen.
20 Arbeitsblatt Aufgabe 3
Arbeitsauftrag Zufallszahlen Erstellen Sie ein Servlet, das eine Liste von fünf Zufallszahlen im Bereich zwischen 1 und 100 ausgibt. z.B Zusatzaufgabe: Die Länge der Liste soll durch den Parameter 'anzahl' vom Benutzer verändert werden können, z.B. Zeit: 15 Minuten
Session Tracking
HTML ist 'stateless' Ausweg Cookies Werte in URL speichern Hidden Fields Servlets/JSP: session (javax.servlet.http.HttpSession) Verwendet Cookies: Hashmap mit Attribut/Werte-Paare session.setAttribute("accessCount", new Integer(0)); session.getAttribute("accessCount"); … (siehe Java-Doc für javax.servlet.http.HttpSession )