1 servlets 20.10.2014 stephan baldes. 2 was ist ein servlet? s e r v l e t = eine auf...
Post on 06-Apr-2016
216 Views
Preview:
TRANSCRIPT
1
Servlets
20.10.2014Stephan 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 unddynamisch Inhalte (z.B. Webseiten) generiert.
SERVLET-ENGINE (Container)=
Teil eines Web-Servers, der die Netzwerkdienste zumEmpfangen von Anfragen und Senden von Antworten
bereitstellt und die Servlets über ihren gesamtenLebenszyklus enthält und verwaltet.
3
Architektur
4
HTTP-Anfragen• Beispiel GetGET /servlet/MyServlet?name=Scott& company=MageLang%20Institute HTTP/1.1Connection: Keep-AliveUser-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT)Host: www.magelang.comAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg
• Beispiel PostPOST /servlet/MyServlet HTTP/1.1User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT)Host: www.magelang.comAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */Content-type: application/x-www-form-urlencodedContent-length: 39name=Scott&company=MageLang%20Institute
HTTP Befehle• GET• HEAD• POST• PUT• DELETE• TRACE• CONNECT• OPTIONS
5
Servlet-Klassen
6
Servlet-Klassen
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. http://localhost:8080/myServlets/myFirstServlet
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 leernull: 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
ArbeitsauftragZufallszahlen
Erstellen Sie ein Servlet, das eine Liste von fünf Zufallszahlen im Bereich zwischen 1 und 100 ausgibt.
z.B.• 32• 53• 67• 44• 3
Zusatzaufgabe: Die Länge der Liste soll durch den Parameter 'anzahl' vom Benutzer verändert werden können, z.B. http://localhost:8080/zufall?anzahl=15
Zeit: 15 Minuten
Session Tracking
Session TrackingHTML ist 'stateless'Ausweg
CookiesWerte in URL speichernHidden Fields
Servlets/JSP:session (javax.servlet.http.HttpSession)
Verwendet Cookies: Hashmap mit Attribut/Werte-Paaresession.setAttribute("accessCount", new Integer(0));
session.getAttribute("accessCount");… (siehe Java-Doc für javax.servlet.http.HttpSession)
top related