Scriptless JSP. Motivation. Expression Language (EL) JSP Standard Tag Library (JSTL)



Ähnliche Dokumente
MVC-II Schematische Aufzeichnung Des MVC (model-2), bei dem zwei Modelle zum Zuge kommen:

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Die Core-Tags. Die Core-Tags werden über den Tag Lib Desktiptor c.tld beschrieben und bekommen den Namensraum c zugewiesen.

Modul 122 VBA Scribt.docx

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Diana Lange. Generative Gestaltung Operatoren

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Erwin Grüner

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Java Einführung Operatoren Kapitel 2 und 3

Objektorientierte Programmierung

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Der lokale und verteilte Fall

Modellierung und Programmierung 1

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

public class SternchenRechteckGefuellt {

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Studentische Lösung zum Übungsblatt Nr. 7

Datenbanksysteme SS 2007

Typumwandlungen bei Referenztypen

Einführung in die C++ Programmierung für Ingenieure

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Praktikum aus Softwareentwicklung 2, Stunde 12

Einführung in Javadoc

Einführung in die Java- Programmierung

Wie gestaltet man Online-Umfragen mit SurveyMonkey?

Dr. Monika Meiler. Inhalt

Architektur des agimatec-validation Frameworks

Scala kann auch faul sein

TortoiseGit Step by Step Step 1: git for windows herunterladen und installieren.

Java-Schulung Grundlagen

Datenbanken 1. Einführung und Zugänge für die eingesetzten Resourcen. ISWeb - Information Systems & Semantic Web University of Koblenz Landau, Germany

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Systemvoraussetzung < zurück weiter >

Ich liebe Java && Ich liebe C# Rolf Borst

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

WebPoint. Ein Framework zur Erstellung von webbasierten Verkaufsanwendungen. Maria C. Raabe Daniel Woithe Vorlage: Torsten Walter. 16.

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Zusammenfassung des Handzettels für Programmieren in C

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

JSP und Servlet Programmierung

Programmierkurs Java

Tutorium Rechnerorganisation

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

XSLT Vortrag. 2. Beispiel XML. 3. Anwendungsmöglichkeiten von XSLT 4. XHTML

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Nutzung von Log4J und Commons Logging

Große Übung Praktische Informatik 1

Einführung in die C++ Programmierung für Ingenieure

Angewandte Mathematik und Programmierung

Programmieren in Haskell Einführung

AutoCAD Dienstprogramm zur Lizenzübertragung

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

BENUTZERHANDBUCH FHD FORMATTER SOFTWARE. Rev. 105/Mac

Theoretische Grundlagen des Software Engineering

Gezielt über Folien hinweg springen

Funktion Inhalt Erläuterung

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

ASP: Active Server Pages

Entwurf von Algorithmen - Kontrollstrukturen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

New ECDL Online -Zusammenarbeit

5.4 Klassen und Objekte

IBM Software Demos Rational Software Delivery Platform - Anforderungsanalyse

Einführung in die Programmierung (EPR)

Software Engineering Klassendiagramme Assoziationen

Vorkurs C++ Programmierung

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

7. Übung zu Algorithmen und Datenstrukturen

Einführung in die Programmierung

PDF-AS Webanwendung Dokumentation

Datentypen: Enum, Array, Struct, Union

Lua Grundlagen Einführung in die Lua Programmiersprache

Programmierung in C. Grundlagen. Stefan Kallerhoff

Informatik Grundlagen, WS04, Seminar 13

C-Vorrangregeln. Version Web:

Programmierung I Einführung in Python, Beyond the Basics

U08 Entwurfsmuster (II)


Übersicht Programmablaufsteuerung

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Dokumentation für Popup (lightbox)

Design by Contract with JML

Nutzung der Onleihe Schritt für Schritt

Kontrollstrukturen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

XML-Namensräume. Marc Monecke

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Installation OMNIKEY 3121 USB

Klausur in Programmieren

Transkript:

Scriptless JSP Motivation Expression Language (EL) JSP Standard Tag Library (JSTL) Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Motivation: EL public class Car { public Engine getengine() {} } public class Engine { public int getpower() { } } Scripting Your car got power: <%= ((Car) request.getattribute("car")).getengine().getpower() %> kw <jsp:usebean id="car" class="car" scope="request" /> Your car got power: <jsp:getproperty name="car" property="engine" /> kw Standard actions Keine Unterstützung für verschachtelten Zugriff Your car got power: ${car.engine.power} Expression Language (EL) Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 2

Motivation: JSTL Scripting Your favourite cars: <table> <% String[] favs = (String[]) request.getattribute("favcars"); for (int i = 0; i < favs.length; ++i) { %> <tr><td><%= favs[i] %></td></tr> <% } %> </table> Your favourite cars: <table> <c:foreach var="car" items="${favcars}"> <tr><td>${car}</td></tr> </c:foreach> </table> JSTL Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 3

Expression Language (EL) Dot Operator Erlaubt Zugriff auf Properties von Properties ${ersterbezeichner.weiterebezeichner} Implizite Objekte pagescope requestscope sessionscope applicationscope param paramvalues header headervalues cookie initparam pagecontext Attribute aus pagescope requestscope sessionscope applicationscope Schlüssel einer Map oder Property Muss sich and die Java Namenskonventionen halten! Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 4

Expression Language (EL) [] - Operator ${Bezeichner[Bezeichner]} Keine Java Namenseinschränkungen Map Bean List Schlüssel einer Map Property Listen-Index Beispiele: Array ${cars[favoiritcars[0]] ${cars["astra"]} ${cars[astra]} Array-Index Verschachtelt Map-Zugriff Auswerten von Astra & Map-Zugriff Astra muss ein Attribut sein! Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 5

Expression Language Operatoren Arithmetisch Addition: + Subtraktion: - Multiplikation: * Division: /, div Divisionsrest: %, mod Logisch Und: &&, and Oder:, or Nicht:!, not Vergleichsoperatoren Gleichheit: ==, eq Ungleichheit:!=, ne Kleiner: <, lt Größer: >, gt Kleiner gleich: <=, le Größer gleich: >=, ge Literale true false null instanceof: reserviert Merke, JSP ist die View! empty: Zeigt an ob ein Attribut gesetzt ist, z.b.: ${not empty cars} Achtung! Keine Schlüsselwörter als Bezeichner verwenden! Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 6

Java Standard Tag Library (JSTL) Nicht Teil der JSP-Spezifikation Übernimmt einfache Aufgaben Iteration: <c:foreach> Bedingungen: <c:if> Alternativen: <c:choose>, <c:when>, <c:otherwise> Installation (Tomcat) jstl.jar und standard.jar nach WEB-INF/lib kopieren Dateien sind in der Tomcat-Distribution unter jsp-examples/web-inf/lib/ zu finden. Mehr Informationen J2EETutorial.pdf Beispiel TicTacToe von der Praktikumsseite. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 7

JSTL Beispiel <c:foreach> <%@ page iselignored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <body> Print all cars: <c:foreach var="car" items="${cars}"> ${car}<br /> </c:foreach> Print the numbers from 0 to 23 with a step of 5: <c:foreach begin="0" end="23" step="5" varstatus="counter"> ${counter.count}<br /> </c:foreach> </body> Info JSTL Tags können auch verschachtelt auftreten! Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 8

JSTL Beispiel <c:if> <%@ page iselignored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <body> <c:if test="${car eq 'Smart'}"> Be smart drive Smart! </c:if> <c:if test="${car eq 'SUV'}"> Real man drive hard! </c:if> </body> Info Man kann einfache Anführungszeichen in EL benutzen! Es gibt kein else für <c:if>! Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 9

JSTL Beispiel <c:choose>, <c:when>, <c:otherwise> <%@ page iselignored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <body> <c:choose> <c:when test="${car eq 'Smart'}"> Be smart drive Smart! </c:when> <c:when test="${car eq 'SUV'}"> Real man drive hard! </c:when> <c:otherwise> Porsche, all a lady can expect. </c:otherwise> </c:choose> </body> Info <c:choose> funktioniert ähnlich einem switch-statement; switch ~ choose, case ~ when und default ~ otherwise. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 10

JSTL Beispiel <c:url>, <c:param> <%@ page iselignored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <body> Please visit our <a href="<c:url value='exhibition.do'> <c:param name='color' value='${customer.favouritcolor}' /> </c:url>"> car exhibition</a> to see your next vehicle! <a href="<c:url value='logout.jsp' />" >Logout</a> </body> Info Ermöglicht Webanwendungen ohne Cookies! Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 11

Zusammenfassung Expression Language Ermöglicht einfachen Propertyzugriff über mehrere Ebenen Weiters Zugriff auf - Abbildungen (Maps) - Listen - Arrays Anwendung - Dot-Operator, einfach, kurz, für einfache Zugriffe - []-Operator, mächtiger, für komplexere Zugriffe wo man mit der Java- Namenskonvention an Grenzen stößt. JSTL Tags für Standardaufgaben: Iteration, Option, Alternativen, Wer mit EL und JSTL nicht auskommt Sollte sich Überlegen, ob ZU VIEL Logik in der JSP-Seite ist! Muss sich eventuell mit custom tag handlers beschäftigen - Siehe Beispiel TicTacToe von der Praktikumsseite. Buchtipp: Bryan Basham, Kathy Sierra & Bert Bates, Head First Servles & JSP, O Reilly, 2004 Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 12