Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Ähnliche Dokumente
Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

JSP Übung. JEE Vorlesung Teil 7. Ralf Gitzel

Inhaltsverzeichnis. 1. Vortrag. 1. Vortrag Beispiele Quellen Seite 1 / 14

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

e-commerce Running Tomcat

FH LU JEE Vorlesung SS Ralf Gitzel

Webtechnologien. Stunde 6 ( ) - HTTP - HTML - Servlets - AJAX. Verschoben haben wir - JSP (Java Server Pages) - JSF (Java Server Faces)

FH LU JEE Vorlesung SS Ralf Gitzel

Web 2.0 Software-Architekturen

Java zur Realisierung von Internetanwendungen

Praktikum aus Softwareentwicklung 2, Stunde 11

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Session Beans & Servlet Integration. Ralf Gitzel

4. Servlets Ein kleiner Einstieg

Servlets. Marc Monecke

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI

Mini Servlets. Abschlussprojekt Internetprogrammierung. Stefan Wehr. 17. Juli 2006

Java - Webapplikationen

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

Eclipse Tomcat 5.0 und Struts auf der Win32- Plattform integrieren

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

J a v a S e r v l e t s

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Persistenz. Ralf Gitzel

Projekt Systementwicklung. Wie kommen Daten von einem Webserver? Java-Applikationsserver. Servlets, JSP. Handout S. 1. Dr.

DB-Aspekte des E-Commerce Schwerpunkt: Techniken. Servlets und JavaServer Pages

FH LU JEE Vorlesung SS Ralf Gitzel

Web- Applikationen. in Java-Web

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter

AVID-Übung 3. EJB mit JBoss und Eclipse. 17. Juni Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX

Enterprise Java Beans Einführung

Eclipse Tomcat Plugin Starthilfe

Programmieren II. Remote-Programmierung. Institut für Angewandte Informatik

Einführung. Ralf Gitzel

Java Servlets. Praktikum aus Softwareentwicklung 2. Java Praktikum SS 2010

Java Servlets. Praktikum aus Softwareentwicklung 2. Java Praktikum SS 2009

Application Server und Continuous Integration

Client/Server-Programmierung

Web-Programmierung (WPR)

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Programmieren in Java

Sitzungszustand. Vorläufige Version 309 c 2005 Peter Thiemann

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Inhaltsverzeichnis. Zusammenfassung Wydler

Internet-Datenbanken

FHZ. Servlets/JSP. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

Webanwendungen mit Java und JavaServerPages

Internet-Datenbanken. Grundlagen des WWW. Web-Anbindung von Datenbanken XML HTML HTTP. Servlets JSP JDBC

MCRServlet Table of contents

Webanwendungen mit Java

Web-Technologien und Java-Web-Anwendungen. der große Überblick

Webbasierte Informationssysteme

Fortgeschrittene Servlet- Techniken. Ralf Gitzel

Servlets und Java Server Pages

Enterprise Java Beans Einführung

JSP und Servlet Programmierung

Grundlagen Internet-Technologien INF3171

Webanwendungen mit Java

Webbasierte Informationssysteme

Perl-Praxis. CGI-Skripte. Madis Rumming, Jan Krüger.

Einführung: Verteilte Systeme - Remote Method Invocation -

Java zur Realisierung von Internetanwendungen

Javakurs für Anfänger

Web 2.0 Software-Architekturen

Enterprise Java Beans Einführung

Java Server Pages (JSP)

Vorlesung Software aus Komponenten

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Objektorientierte Programmierung Studiengang Medieninformatik

Schritt 4: Hallo Enterprise Bean

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

JSP Usereingabe. Inhalt. 1 Zielsetzung. SEW(3.Jg) Unterlagen zu Java Server-Pages Teil 2

Das WWW im Schweinsgalopp

Datenbanksysteme SS 2007

1. Erläutern Sie am Beispiel einer 3-schichtigen Client-Server-Architektur die Prinzipien einer guten Architektur. Dialogsteuerun

JSP Direktiven. Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt JSP

Anleitung zur Integration der /data.mill API in SAP Java Applikationen

Anwendung eines Enterprise Java Beans

Einstieg in die Informatik mit Java

Eclipse, Spring und OSGi 1

Multimedia im Netz Wintersemester 2012/13

5. Lesen Sie vor der Bearbeitung einer Aufgabe den gesamten Aufgabentext sorgfältig durch!

Java 2 Enterprise Edition Ein Überblick

Internet-Technologien

Die Mock Examen sind nur lösbar, wenn man vorher sich den theoretischen Hintergrund bearbeitet hat. Eine Literaturliste ist weiter unten.

Javakurs für Anfänger

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Web-Suche. Benutzer-Schnittstelle

Transkript:

Einführung Servlets JEE Vorlesung Teil 2 Ralf Gitzel ralf_gitzel@hotmail.de 1

Übersicht Wiederholung Hello World Blick in die Details Servlet Programmierung Potentielle Fehler Lernziele Gruppenübung 2

Wiederholung der Grundlagen Ralf Gitzel ralf_gitzel@hotmail.de 3

Servlet Architektur Request Response Container (Application Server) Servlet 4

Identifikatoren für Servlets Deployment Name Servlet Tatsächlicher (Klassen-)Name Öffentlicher Name (URL) 5

Elemente eines Servlets Java Code (Funktionalität) Deployment Descriptor (z.b. Name Mapping) 6

Hello World Servlet Blick in die Details Ralf Gitzel ralf_gitzel@hotmail.de 7

Zur Erinnerung Eine HTML-Datei mit Formular um das Servlet aufzurufen Servlet, das Hallo Welt als Web-Seite zurückgibt 8

Anmerkung: Deployment on Tomcat Tomcat Home Directory webapps Context Servlet Code MyServlet WEB-INF Html und JSP classes lib web.xml Deployment Descriptor 9

HTML Seite! Öffentlicher Name aus dem Deployment Descriptor (aber ohne /) 10

Servlet ergänzen Diese Methode wird ausgeführt, wenn wir das HTML Formular abschicken 11

Deployment Descriptor Servlet Metadaten Servlet Mapping 12

Deployment Descriptor Deployment Name! Klassen-Name! Name nach außen! 13

Anmerkung: URL des Servlets Webseiten in der Web Applikation: http://localhost:8080/myservlet/index.html Servlet (verwendet URL-Pattern aus dem Deployment Descriptor): http://localhost:8080/myservlet/url-pattern 14

Servlet Programmierung Ralf Gitzel ralf_gitzel@hotmail.de 15

Servlet + HTML Erzeugen Jedes Servlet, das wir implementieren erbt von der Klasse HttpSerlvet und hat daher ganz bestimmte Methoden Eclipse erstellt uns eine Rumpfklasse, d.h. wir müssen nicht selber die Vererbung herstellen, den Deployment Descriptor Eintrag vornehmen etc. Anmerkung: HTML Seiten zum Aufruf von Servlets verwenden die ganz normalen Formular-Tags 16

Schlüsselmethoden eines Servlets init(): Initialisierung vor der ersten Benutzung service(): Empfang von Anfragen doget() und dopost(): Bearbeiten von Anfragen destroy(): Entsorgung am Ende Geerbt aus der Klasse HttpServlet! 17

Lebenszyklus eines Servlets Konstruktor + init() Servlet existiert nicht Initialisiert service() destroy() 18

init() Hier werden die Einstellungen vorgenommen, die vor der ersten Verwendung notwendig sind (Datenbankverbindungen etc.) Nicht den Konstruktor direkt verwenden! 19

destroy() Hier Ressourcen freigeben (z.b. Datenbanken) Wird beim Abschalten aufgerufen, nicht nach jeder Dienstanfrage! 20

service() Nicht überschreiben! Ruft doget() und dopost() auf In (typischerweise) einer dieser beiden Methoden steht dann der Code den wir ausführen wollen. 21

doget() vs. dopost() HTML Methode Man kann beide HTML-Methoden separat unterstützen. 22

Get vs. Post Get: Parameter erscheinen in der URL Sichtbar in der Browserzeile Post: Parameter werden auf HTTP-Ebene übertragen Unsichtbar 23

Gruppendiskussion Wann brauche ich doget()? Was ist gut daran, wenn Parameter in der URL auftauchen, was schlecht? Warum nimmt man nicht immer GET? 24

Gruppendiskussion - Antworten doget(): Wenn ich die URL auf das Servlet als Link verwende. (Bei POST sind die Parameter nicht in der URL und damit verloren.) Wenn ich ein Bookmark setzen möchte dopost() Mehr Daten Daten nicht in der URL Trick: In die doget()-methode einen Aufruf von dopost() packen und dort die Logik implementieren. 25

dopost()/doget() Parameter protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { } 26

dopost()/doget() Parameter HttpServletRequest: Die Anfragedaten vom Webbrowser des Clients HttpServletResponse: Unsere Antwort auf die Anfrage. Muss in der dopost()/doget() Methode gefüllt werden Request Object Response Object Servlet 27

HttpServletRequest Request Object Response Object Servlet getparameter(string s): Gibt den Parameter mit dem Namen s zurück getparametervalues(string s): Gibt alle Parameterwerte zurück, die unter diesem Namen geschickt wurden (z.b. bei Checkbox-Listen) 28

HTML Seite 29

im Browser 30

. im Servlet RequestTester.java 31

und Servletantwort im Browser 32

Weitere interessante Methoden im HttpServletRequest getheader(string): liest einen Wert aus dem HTTP Header aus, z.b. Browsertyp getcookies() getsession(): mehr dazu später getinputstream(): Wenn ich die Parameter von Hand aus dem HTTP Protokoll heraussuchen möchte 33

HttpServletResponse Request Object Response Object Servlet setcontenttype(string): Beschreibt den MIME-Type der Antwort, z.b. text/html getoutputstream(): Ein OutputStream zur Übertragung von Daten als Bytes getwriter(): Ein PrintWriter zur Übertragung von Daten als Text 34

Potentielle Fehler Ralf Gitzel ralf_gitzel@hotmail.de 35

Werkzeugkastenprinzip von service() Container (Application Server) Servlet Servlet Servlet Servlet Class A Servlet Class B Servlet Class C Thread 1 Thread 2 36

Werkzeugkastenprinzip von service() Container (Application Server) Servlet Servlet Servlet Servlet Class A Servlet Class B Servlet Class C Thread 1 Thread 2 37

Werkzeugkasten Die Arbeiter ( Thread ) verwenden die Werkzeuge ( Servlet Objekte ) um Anfragen zu bearbeiten Die Werkzeuge sollen im gleichen Zustand zurückgegeben werden in dem sie ausgeliehen wurden D.h.: Im Servletobjekt keine Zustandsinformationen speichern! (??) 38

Zustandlosigkeit Wenn Sie in einem Servlet einen Wert in ein Attribut speichern, dann kann dieses beim nächsten Aufruf einen anderen Wert haben Sie haben keine Garantie, bei jedem Aufruf das gleiche Servletobjekt zugewiesen zu bekommen Sie haben keine Garantie, dass zwischen zwei Aufrufen niemand anderes das gleiche Servletobjekt zugewiesen bekommen hat 39

Gruppendiskussion Wie ist dieses Konzept zu bewerten? Wo liegen wahrscheinlich die Vorteile? Welche Nachteile ergeben sich daraus? Für Neugierige: Speichern Sie Zustandsinformationen und greifen Sie von mehreren Rechnern mehrfach auf das Servlet zu. 40

Lernziele Ralf Gitzel ralf_gitzel@hotmail.de 41

Lernziele Servlet Lebenszyklus Kommunikationsschnittstelle des Servlets (Request/Response) Möglicher Fehler aufgrund des Thread- Servlet-Zusammenspiels 42

Übung Ralf Gitzel ralf_gitzel@hotmail.de 43

Aufgabenstellung Verwenden Sie den Download Uebung-13-02.zip Importieren Sie das Projekt (s. Anleitung auf dem Server) Die HTML-Seite mit dem Formular soll nach Bedarf vervollständigt/angepasst werden Ein passendes Servlet, dass die Eingabewerte als HTML-Seite darstellt, soll geschrieben werden Servletname und URL sollen sich unterscheiden! (Deployment Descriptor! Daher Servlet Version 2.5!) 44

Eingabe 45

Ausgabe Servletname soll RueckgabeServlet sein, die URL lautet actionprocessing! 46

Abschließender Hinweis Verwenden Sie die Vorlesungsunterlagen von heute Zögern Sie nicht, mich zu fragen, wenn Sie etwas nicht verstehen 47