JSP Grundlagen - of Ralf Gitzel
Transcription
JSP Grundlagen - of Ralf Gitzel
JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel [email protected] 1 Übersicht Ralf Gitzel [email protected] 2 Übersicht • • • • JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale 3 JSP Konzept Ralf Gitzel [email protected] 4 Was ist eine JSP? • JSP = Java Server Page • HTML Seite mit besonderen Befehlen, die Zugriff erlauben auf Java Objekte • Wird serverseitig verarbeitet, beim Client kommt reines HTML an 5 Was ist eine JSP wirklich? HTML Entwurf Entwicklung JSP-Datei Autom. Generierung Servlet Autom. Deployment HTML Seite nach Entwurf Container (Application Server) Servlet 6 Was ist eine JSP wirklich? • Eine JSP wird auf dem Server zu einem Servlet • Denkaufgabe für zu Hause: Wie werden die einzelnen Elemente wohl im Servlet umgesetzt? 7 Servlets vs. JSPs Servlets: • Gut um Logik zu implementieren • HTML Code ist mühsam JSPs: • HTML Code kann „natürlich“ geschrieben werden • Echte Logik ist schwer einzubauen bzw. schwer zu warten 8 Model-View-Controller Model View Controller mit JSPs Ralf Gitzel [email protected] 9 Model-View-Controller • Grundidee: Wir trennen die Programmlogik von der Darstellung • Vorteile: – Darstellung kann leicht ausgetauscht werden – Arbeitsteilung: Webdesigner muss keinen Code schreiben – Änderungen am Code können leichter vorgenommen werden 10 Umsetzung mit JSPs • HTML-Seite (oder JSP) als Eingabe • Controller: Servlet ruft Klassen mit Geschäftslogik auf • Model: Klassen mit Geschäftslogik stellen ein Modell der Wirklichkeit dar • Controller: Servlet gibt Ergebnisse an Ausgabe weiter • View: JSP zeigt die Ergebnisse an 11 Faustregeln • Nie Logik in der JSP programmieren • Nie Teile der Darstellung im Servlet oder der Geschäftslogik generieren (Übergabe eines HTML Ergebnisstrings etc.) • Anmerkung: Es gibt wenige Ausnahmen, die Klausur gehört nicht dazu! 12 (Extrem einfaches) Beispiel • • • • „Additionsservlet“ HTML-Seite liest zwei Zahlen ein Zahlen werden addiert Ergebnis wird ausgegeben 13 Model / Geschäftslogik 14 Zahlen einlesen 15 HTML-Seite Datei: MVCExample.html 16 Additionsservlet (Controller) Aufruf der Geschäftslogik (Model) Klasse: addition.AdditionsServlet 17 Additionsservlet (Controller) Weitergabe an die View Klasse: addition.AdditionsServlet 18 Ergebnisausgabe 19 JSP der Ergebnisausgabe (View) Bis auf die markierten Stellen sieht Es aus wie normales HTML! 20 JSP Expression Language Ralf Gitzel [email protected] 21 JSP Expression Language • Wurde bei JSP 2.0 hinzugefügt • Hier nur ein Abriss der für uns wichtigen Elemente! • Wir verwenden EL in Kombination mit JSTL (s. später) 22 Expression Language Grundsyntax ${Expression} Hier kommt keine Java Syntax zum Einsatz! (Erinnert eher an XSLT.) Rückgabewert wird an dieser Stelle in der HTML Seite eingefügt 23 Was ist eine Expression? 1. Name eines Attributs 2. Ein implizites EL Objekt (=vorgefertigte Werte) Datei: Ausgabe.jsp 24 Implizite Objekte in EL requestScope Map mit Request-Attributen sessionScope Map mit Session-Attributen applicationScope Map mit Application-Attributen param, paramValues Maps mit den Request-Parametern (paramValues bei mehreren Werten zu einem Namen) initParam Map mit Context Init Parametern (nicht Servlet Init Parametern) 25 Problem – komplexe Objekte Komplexe Objekte können nicht einfach über diese Form der Expression abgefragt werden! • Maps (wie z.B. die impliziten Objekte) • Listen • Beans • etc. 26 Expressions für komplexe Objekte ${x[‘y’]} Zugriff auf eine Map X=Map-Name Y=Schlüssel Zugriff auf eine Bean Zugriff auf eine List bzw. ein Array X=Objekt-Name Y=Property Name X=List-Name Y=Array/List Index (Mit oder ohne Anführungszeichen) 27 Beispiel: Zugriff auf Parameter (Map) param ‘zahl1‘ 14 ‘zahl2‘ 16 28 Beispiel: Zugriff auf Parameter (Map) param ‘zahl1‘ 14 ‘zahl2‘ 16 29 Beispiel: Zugriff auf eine Bean Zur Erinnerung: Eine JavaBean ist eine Java-Klasse deren Properties über get/set-Methoden erreichbar sind. 30 Klasse: hobby.Hobby Beispiel: Zugriff auf eine Bean hobby ‘name‘ ‘Wickeln‘ ‘kaufempfehlungen‘ ??? Datei: HobbyAusgabe.jsp Servlet: hobby.HobbyServlet HTML-Datei: HobbyWerfer.html 31 Wichtiger Hinweis zu Beans • Der Property Name ist in der Klasse großgeschrieben • Der Property Name ist in der EL kleingeschrieben 32 Beispiel: Zugriff auf eine Liste hobby ‘name‘ ‘Meditation‘ ‘kaufempfehlungen‘ Liste Datei: HobbyAusgabe.jsp Servlet: hobby.HobbyServlet 33 Zusammenfassung • Ich kann mit der EL einen Parameter x anzeigen: param[‘x‘] • Ich kann mit EL den Property y eines Attributs x anzeigen: x[‘y‘] • Ich kann mit EL den 4. Eintrag in eine zeigen, die als Property y eines Attributs x anzeigen: x[‘y‘][4] • ….. 34 EL Literale Ralf Gitzel [email protected] 35 Literale und Evaluierte Werte ${hobby[‘name‘]} ${hobby[name]} ‘name‘ ist ein Literal (=„Stringkonstante“) name ist ein Ausdruck, der ausgewertet wird 36 Hinweis: Testklasse, nicht Bestandteil der API Testbean 37 Klasse: literal.ABBox Das Servlet 2 Attribute werden gesetzt: daten, a Klasse: literal.LiteralFun Aufruf-HTML: LiteralTest.html 38 Die JSP Datei: LiteralAusgabe.jsp 39 Die JSP a = ‘b‘ 40 Lernziele Ralf Gitzel [email protected] 41 Lernziele • Beziehung JSP und Servlet • Model-View-Controller mit JSPs und Servlets • Expression Language Zugriff auf Attribute und implizite Objekte • Literal-Konzept der Expression Language 42 Gruppenaufgabe Ralf Gitzel [email protected] 43 Aufgabenstellung • Bauen Sie die Aufgabe der letzten Vorlesung so um, dass sie dem ModelView-Controller Konzept entspricht • Die Hobbies sollen noch nicht ausgegeben werden • Es soll das Personenobjekt an die JSP übergeben werden, nicht die Einzelwerte 44 Anhang: Weiteres EL Beispiel Ralf Gitzel [email protected] 45 Beispiel InstallInfo = HashMap emails = ArrayList Advise = Bean Code: jsp.MaintenanceController_EL, index3.html 46 Beispiel InstallInfo = HashMap emails = ArrayList Advise = Bean Code: EL-Results.jsp 47 Hinweis: Property Names Definiert das Property mit dem Namen „newCost“ (Man beachte die Groß- und Kleinschreibung!!) 48 Beispiel Implizite Objekte Code: EL-Results.jsp 49