Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1
Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets, JSPs und Java Beans Idee der Tag Bibliotheken Java Server Faces und JSF-managed Beans (CDI-Beans) Entwicklungs- und Laufzeitumgebung Weiterführende Informationen SoSe2015 Prof. Dr. Andreas Schmietendorf 2
Entwicklung der Enterprise Edition SoSe2015 Prof. Dr. Andreas Schmietendorf 3
JEE - Entwicklung Java 2 EE (Servlets, JSPs und EJBs) Java EE5 - JSF Version 1.2 - Ablösung der EntityBeans JPA-Standard Java EE6 - Einführung von Profilen (Teil-Stacks) speziell Web Profile - Contexts and Dependency Injection (CDI) u.a. JSF-EJB Java EE7 - Java API für JSON - Concurrency Utilities usw. Java EE8 (u.a. Cloud-Standards) SoSe2015 Prof. Dr. Andreas Schmietendorf 4
JEE - Entwicklung Applikationsserver JSPs JSF Servlets Web Client POJO Beans Tag-Libs Server Daten HTML bzw. XHTML(JavaScript) CDI Contexts and Dependency Injection EJB Server Daten Session Beans Message Driven Beans Entity Beans JPA Standard Client Daten Mainframe zos SoSe2015 Prof. Dr. Andreas Schmietendorf 5
Servlets, JSPs und JavaBeans SoSe2015 Prof. Dr. Andreas Schmietendorf 6
Servlet-Beispiel SoSe2015 Prof. Dr. Andreas Schmietendorf 7
JSPs Repräsentation für Entwickler werden in Servlets übersetzt. Generieren HTML-Code der an den Browser gesendet wird. Können mit JavaBeans verbunden werden <jsp:usebean/>, deren Gültigkeit über Scopes gesteuert werden. - request neue Bean, - page Nutzung für gleiche JSP, - session Nutzung für alle JSPs während einer Sitzung, - application globale Daten für alle Sitzungen und Seiten Vorteil: Trennung zwischen Darstellung und Logik SoSe2015 Prof. Dr. Andreas Schmietendorf 8
JSP-Beispiel SoSe2015 Prof. Dr. Andreas Schmietendorf 9
JSP/Bean-Beispiel genutzte JavaBean SoSe2015 Prof. Dr. Andreas Schmietendorf 10
Model View Controller (JSP) Quelle: http://www.javaworld.com/article/2076557/java-web-development/ understanding-javaserver-pages-model-2-architecture.html, Abruf: April 2015 SoSe2015 Prof. Dr. Andreas Schmietendorf 11
Idee der Tag-Bibliotheken SoSe2015 Prof. Dr. Andreas Schmietendorf 12
Verwendung eigener Tags Vorraussetzungen für eigen definierte Tags: - Implementierung der Funktionalität Tag-Handler - Package: javax.servlet.jsp.tagext.* - Zusammenfassen in Tag-Bibliotheken Steuerung des Lebenszyklus eines Tag - dostarttag() Aufruf bei einem öffnenden Tag (Initialisierung) - doafterbody() Aufruf unmittelbar vor dem schließenden Tag - doendtag() Aufruf nach dem schließenden Tag (Freigabe) SoSe2015 Prof. Dr. Andreas Schmietendorf 13
Beispiel eines Tag-Handlers import javax.servlet.jsp.jspwriter; import javax.servlet.jsp.tagext.tagsupport; public class SimpleTag extends TagSupport(){ public int dostarttag(){ } try { JspWriter out = pagecontext.getout(); out.print (new Date()); } catch (IOException ioex){ ioex.printstacktrace(); } return (SKIP_BODY); } Einbindung in HTML-Seiten über JSP-Direktive: <%@ taglib uri= /j2ee-tags prefix= j2ee %> Tag im HTML-Body: <j2ee:date /> SoSe2015 Prof. Dr. Andreas Schmietendorf 14
Java Server Faces SoSe2015 Prof. Dr. Andreas Schmietendorf 15
Übersicht zu JSF XHTML-Facelets als Grundlage von JSF. UI-Komponentenmodell inkl. Ereignisverarbeitung. Einsatz vielfältiger Tag-Libraries View als Komponentenbaum. Controller-Funktionalität durch JSF Managed Beans. - Gültigkeit werden über Scopes gesteuert: @NoneScoped, @RequestScoped, @SessionScoped, @ApplicationScoped, Expression Language für Zugriff auf JavaBeans SoSe2015 Prof. Dr. Andreas Schmietendorf 16
Lebenszyklus einer JSF Restore View (Sicht, View-Objekte und Komponentenbaum) Apply Request Values (Anforderungsparameter anwenden) Conversion and Validation (Konvertierung und Validierung) Update Model Values (Modell aktualisieren) Invoke Application (Anwendung aufrufen) Render Response (Antwort erzeugen und zurücksenden) Quelle: http://docs.oracle.com/javaee/7/tutorial/jsf-intro006.htm Abruf: April 2015 SoSe2015 Prof. Dr. Andreas Schmietendorf 17
JSF/Bean-Beispiel Expression Language für den Zugriff auf Eigenschaften der TimeManagedBean Quelle: Schießer, M.; Schmollinger, M.: Workshop Java EE 7: Ein praktischer Einstieg in die Java Enterprise Edition mit dem Web Profile, 2015 SoSe2015 Prof. Dr. Andreas Schmietendorf 18
Model View Controller (JSF) Die Umsetzung und Zuordnung erfolgt nicht immer einheitlich und stringent. Bei JSF gilt in der Regel: Das Model wird durch POJOs, Java Beans oder Managed Beans realisiert, die View durch Facelets- XHTML-Dokumente und als Controller fungiert das FacesServlet ("Front- Controller-Pattern"). Quelle: http://www.torsten-horn.de/techdocs/jsf.htm Abruf: April 2015 SoSe2015 Prof. Dr. Andreas Schmietendorf 19
Entwicklungs- und Laufzeitumgebungen SoSe2015 Prof. Dr. Andreas Schmietendorf 20
Entwicklungsumgebung IDE (Java SE 8 JDK) - Eclipse - NetBeans JSF API und Implementierung - javax.faces-api-2.1.jar - javax.faces-2.1.24.jar https://javaserverfaces.java.net/download.html Maven (Konfigurationsmanagementwerkzeug) - Standardisierung der Projektstruktur (Archetype) - Bibliotheken können direkt aus dem Internet bezogen werden - Erzeugung (Build) und Deployment von Java EE Anwendungen SoSe2015 Prof. Dr. Andreas Schmietendorf 21
Applikationsserver Kommerzielle Angebote - IBM WebSphere - Oracle WebLogic Open Source Produkte - Glassfish (Java EE Referenzimplementierung) - JBoss (ab Version 8 Name WildFly) - ApacheTomcat (nur Web-Container) Cloud Angebot z.b. OpenShift (bietet WildFly) SoSe2015 Prof. Dr. Andreas Schmietendorf 22
Applikationsserver Tomcat-Webserver prüfen: http://localhost:8080 SoSe2015 Prof. Dr. Andreas Schmietendorf 23
Weiterführende Quellen SoSe2015 Prof. Dr. Andreas Schmietendorf 24
Buchempfehlungen Schießer, M.; Schmollinger, M.: Workshop Java EE 7: Ein praktischer Einstieg in die Java Enterprise Edition mit dem Web Profile, 2015, ISBN: 978-3864900471 Kurz, M.; Marinschek, M.: JavaServer Faces 2.2: Grundlagen und erweiterte Konzepte, November 2013, ISBN: 978-3864900099 SoSe2015 Prof. Dr. Andreas Schmietendorf 25
Online-Tutorials http://stefanfrings.de/jsf_tutorial/index.html http://www.jsf-forum.de/forum/pages/tutorials/helloworld_5.jsf http://www.torsten-horn.de/techdocs/jsf.htm http://docs.oracle.com/javaee/7/tutorial/jsf-intro006.htm http://www.javaworld.com/article/2076557/java-web- development/understanding-javaserver-pages-model-2- architecture.html SoSe2015 Prof. Dr. Andreas Schmietendorf 26