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