FH LU JEE Vorlesung SS 2011 Ralf Gitzel [email protected] 1 Einführung + Organisatorisches Ralf Gitzel [email protected] 2 Dozent • Dr. Ralf Gitzel • Promotion an der Universität Mannheim in Wirtschaftsinformatik • Angestellt beim ABB Forschungszentrum in Ladenburg • Forschungsgebiete: Industrieller Service und Reliability 3 Bisherige Vorlesungen (Uni MA) • • • • • Java I & II Verteilte Objekte OOA&D Applied IT-Governance JEE 4 Mein Programmierhintergrund • • • • • • C C++ C# Java …. (Dementsprechend sieht mein SourceCode aus!) 5 Rückfragen bei Problemen • Fragen gerne auch in der Vorlesung • Fragen per Email: [email protected] • Download der Folien: www.ralf-gitzel.info 6 Folien Download • Folien werden i.d.R. am Sonntag vor der Vorlesung im Netz stehen • Ebenfalls als Download: – Lösungen zu den Übungen – Klausurtipps – Alte Folien (nicht relevant) 7 Installation für Übungen zu Hause • • • • Aktuelle Java Version (JRE) Eclipse IDE for Java EE Developers Apache Tomcat 6.0 Glassfish v3 8 Buchempfehlungen • Basham, Sierra & Bates: Head First Servlets & JSP • Panda, Rahman & Lane: EJB 3 in Action 9 Semesterübersicht Ralf Gitzel [email protected] 10 (Voraussichtliche) Semester Übersicht 14.3 Einführung und Übersicht 21.3 Einführung Servlets 28.3 Fortgeschrittene Servlet-Techniken 4.3 Servlet Sessions 11.3 JSP Basics 18.3 + 25.3 Entfällt (Dienstreise bzw. Ostern) 2.5. JSP Vertiefung ?? Servlet & JSP Übungsstunde 9.5. Enterprise Java Beans Einführung 16.5. Verwendung von Servlets als Web-Interface für EJBs 23.5. Grundlagen von Session Beans 30.5. Gesamtübersicht JEE + Übungstunde 6.6. Klausurvorbereitung, Fragen, Wiederholungen 11 Terminanmerkung • Ein Termin entfällt wegen einer Dienstreise • Termin wird nachgeholt: – Option 1: Doppelstunde – Option 2: Samstagstermin • Stoff kann sich terminlich ggf. verschieben 12 Vorlesungskonzept • Ca. 50 Minuten Stoff • Ca. 40 Minuten Übung am Ende der Stunde • Unterstützung durch Dozenten beim Lösen der Aufgaben (Hinweisfolien + aktive Hilfe am Rechner) • Musterlösungen im Netz • 3 Termine zur Klärung offener Probleme, Besprechung von Aufgaben etc. 13 2 Übungstunden • Idee: Wiederholung des jeweiligen Blocks • „Freie Übung“: – Fortgeschrittene können die neuen Übungen machen – Einsteiger können die Zeit nutzen, die Aufgaben aus den Vorlesungen zu vervollständigen, Fragen zu stellen etc. 14 Klausur • 3 Aufgaben, z.B.: – Theoriefragen – Programm vervollständigen – Fehler in Programm finden –… • Schwerpunkt liegt auf Teil 1 der Vorlesung 15 Grundlagen JEE Ralf Gitzel [email protected] 16 Was ist JEE? • Eine Java Erweiterung für: – Verteilte Anwendungen – Multi-Tier Architekturen • Die Erweitung basiert auf: – Containerkonzept (Application Server) – Web- und Komponententechnologien 17 JEE Architektur (vereinfacht) Request Web Container Response Servlet DB Persistence Provider EJB Container EJB 18 Beispiel Wieviel Geld habe ich auf dem Konto? Request Response Keins. Null. Wie immer! 19 Beispiel Request Response Web Container Anfrageformular Antwortseite Daten Persistence Provider EJB Container Geschäftslogik Datenstruktur 20 Gruppendiskussion • Ist der Persistence Provider sinnvoll? (Man könnte doch direkt auf die DB zugreifen…) • Ist die Trennung in 3 Elemente (Web Container, EJB Container, Persistence Provider) sinnvoll? 21 Servlets Ralf Gitzel [email protected] 22 Servlet Architektur Request Response Container (Application Server) Servlet 23 Gruppendiskussion: Was sind die Vorteile eines Containers? • • • • Kommunikation Lebenszyklusverwaltung Multithreading Sicherheit 24 Umsetzung der Vorteile Container (Application Server) Servlet Class A Servlet Class B Servlet Class C 25 Umsetzung der Vorteile Container (Application Server) Passwortabfrage etc. wird automatisch durch den Container „eingefügt“ it e h r e Sich Servlet Class A Servlet Class B Servlet Class C 26 Umsetzung der Vorteile Container (Application Server) Servlet Servlet Class A Servlet Class B Request Object Response Object ing d a e tithr l u M on i t a unik m K om Servlet Class C Datenstrukturen zur Kommunikation mit dem Client werden erzeugt. Servlet wird erzeugt und bekommt einen Thread. 27 Umsetzung der Vorteile Container (Application Server) Servlet Class A Servlet Class B Request Object Response Object Servlet Class C t i on a k i un m K om Servlet service() Methode im Servlet wird abgearbeitet. Antwort geht an den Container zurück. 28 Umsetzung der Vorteile Container (Application Server) Servlet Class A Servlet Class B Request Object Servlet Class C Response Object X X e Leb X Servlet lus k y nsz Freigabe von Ressourcen am Ende (bzw. intelligentes Management) 29 Gruppendiskussion • Ist ein Java-Servlet ein Java-Programm? • Ist der Container eine Virtuelle Maschine? • Wo ist die main()-Methode? 30 Identifikatoren für Servlets Deployment Name Servlet Tatsächlicher (Klassen-)Name Öffentlicher Name (URL) 31 Gruppendiskussion • Warum reicht nicht ein Name aus? • Denkanstoß: – Unterschiedliche Sichten auf das Servlet – Wir sind nicht alleine im Container 32 Motivation für die 3 Namen • Keine Änderung nach außen bei internen Veränderung (Pfadnamen usw.) • Sicherheit durch Verbergen • Vermeidung von Namensüberschneidungen 33 Elemente eines Servlets Java Code (Funktionalität) Deployment Descriptor (z.B. Name Mapping) 34 Geführte Übungsaufgabe: Hello World Servlet Ralf Gitzel [email protected] 35 Eclipse Übersicht Quelltext der aktuell offenen Dateien Project Explorer Fehlermeldungen etc. 36 Anlegen eines neuen Projekts Kontextmenü im Project Explorer 37 Details beim Anlegen Name (frei wählbar) Auswählen oder neu anlegen Version bitte auf 2.5 setzen! 38 Target Runtime Unterdialog: New Server Runtime Environment 39 Target Runtime Unterdialog: New Server Runtime Environment Individueller Installationspfad 40 Development in Eclipse „Dynamic Web Project“ Detailarbeit wird automatisch erledigt Wichtig: servlet-api.jar zu den Bibliotheken hinzufügen! (Liegt im lib-Verzeichnis des Tomcat) 41 Evtl. Bibliothek einbinden Rechtsklick und mit Kontextmenü Buildpath ändern 42 Evtl. Bibliothek einbinden 43 Bibliotheken einbinden Evtl. 44 Beginn der Softwareentwicklung Java Dateien Deployment Descriptor HTML Dateien 45 Servlet + HTML Erzeugen • Unter Java-Resourcen ein neues Servlet erzeugen. • Unter Web-Content eine neue HTML Seite erzeugen 46 Servlet erzeugen Java Dateien 47 Servlet erzeugen 48 Servlet ergänzen 49 HTML Seite erzeugen • Ähnlich wie Servlet, allerdings in Web Content • Name z.B. „index.html“ 50 HTML Seite ! Öffentlicher Name aus dem Deployment Descriptor (aber ohne /) Anm: In unserem Beispiel ist das der Klassenname 51 Testen index.html auswählen und den Start-Knopf drücken 52 Zusatzinformationen (1. Start) Server auswählen 53 Debug Sicht 54 URL des Servlets • Webseiten in der Web Applikation: http://localhost:8080/MyServlet/index.html • Servlet (verwendet URL-Pattern aus dem Deployment Descriptor, s. später): http://localhost:8080/MyServlet/url-pattern 55 Lernziele Ralf Gitzel [email protected] 56 Lernziele • Grundprinzipien JEE und Servlets • Ein Dynamic Web Project anlegen und testen können 57