FH LU JEE Vorlesung SS 2010 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 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 Installation für Übungen zu Hause • • • • Aktuelle Java Version (JRE) Eclipse IDE for Java EE Developers Apache Tomcat 6.0 Glassfish v3 7 Buchempfehlungen • Basham, Sierra & Bates: Head First Servlets & JSP • Panda, Rahman & Lane: EJB 3 in Action 8 Semesterübersicht Ralf Gitzel [email protected] 9 (Voraussichtliche) Semester Übersicht Einführung, Übersicht, Installation für zu Hause Servlets Einführung/Wiederholung Fortgeschrittene Servlet-Techniken JSP & Script-Freie Seiten (EL) Servlet & JSP Übungsstunde Enterprise Java Beans Einführung EJB Persistenz Fortgeschrittene EJB Techniken Integration Servlet und EJB, Deployment Frameworks JEE Security Konzepte EJB Übungsstunde und Klausurvorbereitung 10 Servlets • Wiederholung des bisher gelernten Stoffs • Aber: Auch Vertiefung des Themas • Ziel: Ein vernünftiges Interface für EJBs erstellen können • Ggf. am Ende noch ein Web Framework (je nach Zeit) 11 EJB Teil • Wichtigste Aspekte der EJB Materie • Schwerpunkt Persistenz • Security wird Servlet/EJB übergreifend behandelt 12 Vorlesungstermine • Falls notwendig am Anfang Fragen zur letzten Stunde / zur Übungsaufgabe • 1h Theorie • Ca. 30 Minuten Praxis • Übungen sind zu Hause zu beenden 13 2 Übungstunden • Ein übergreifendes Beispiel für beide Stunden • Idee: In einer Übung mehrere Aspekte abdecken statt immer nur isoloierte Teilaspekte 14 Klausur • 50% Praxis • 50% Theorie • Wer in der Vorlesung darauf achtet, welche Dinge ich betone, der wird in der Klausur einiges wiedererkennen! • Manche Folien sind nicht klausurrelevant, können aber in der Klausur einen einfacheren Weg eröffnen. 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? • 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) Servlet Servlet Class A Servlet Class B Request Object Response Object Servlet Class C Datenstrukturen zur Kommunikation mit dem Client werden erzeugt. Servlet wird erzeugt und bekommt einen Thread. 26 Umsetzung der Vorteile Container (Application Server) Servlet Class A Servlet Class B Request Object Response Object Servlet Servlet Class C service() Methode im Servlet wird abgearbeitet. Antwort geht an den Container zurück. 27 Umsetzung der Vorteile Container (Application Server) Servlet Class A Servlet Class B Request Object Response Object X X X Servlet Servlet Class C Freigabe von Ressourcen am Ende (bzw. intelligentes Management) 28 Gruppendiskussion • Ist ein Java-Servlet ein Java-Programm? • Ist der Container eine Virtuelle Maschine? • Wo ist die main()-Methode? 29 Identifikatoren für Servlets Deployment Name Servlet Tatsächlicher (Klassen-)Name Öffentlicher Name (URL) 30 Gruppendiskussion • Warum reicht nicht ein Name aus? • Denkanstoß: – Unterschiedliche Sichten auf das Servlet – Wir sind nicht alleine im Container 31 Motivation für die 3 Namen • Keine Änderung nach außen bei internen Veränderung (Pfadnamen usw.) • Sicherheit durch Verbergen • Vermeidung von Namensüberschneidungen 32 Elemente eines Servlets Java Code (Funktionalität) Deployment Descriptor (z.B. Name Mapping) 33 Hello World Servlet Ralf Gitzel [email protected] 34 Deployment on Tomcat Tomcat Home Directory webapps MyServlet WEB-INF classes Html und JSP lib web.xml Deployment Descriptor 35 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 36 Development in Eclipse Neues „Dynamic Web Project“ anlegen Detailarbeit wird automatisch erledigt Wichtig: servlet-api.jar zu den Bibliotheken hinzufügen! (Liegt im lib-Verzeichnis des Tomcat) 37 Evtl. Bibliothek einbinden Rechtsklick und mit Kontextmenü Buildpath ändern 38 Servlet + HTML Erzeugen • Unter Java-Resourcen ein neues Servlet erzeugen. • Unter Web-Content eine neue HTML Seite erzeugen 39 HTML Seite ! Öffentlicher Name aus dem Deployment Descriptor (aber ohne /) 40 Servlet ergänzen 41 Testen index.html auswählen und den Start-Knopf drücken 42 Übungsaufgabe Ralf Gitzel [email protected] 43 Aufgabenstellung • Erstelle ein Hello-World Servlet • Erstelle ein Servlet, das eine HTML Seite zurückgibt, auf der ein Webformular ist, mit dem man ein zweites Servlet aufrufen kann. 44