Web 2.0 Software-Architekturen



Ähnliche Dokumente
Web 2.0 Software-Architekturen

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

Java - Webapplikationen

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

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

Java Server Pages (JSP)

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Internet und WWW Übungen

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Dynamische Webseiten mit JavaServer Pages (JSP)

Web- Applikationen. in Java-Web

Existierende Systeme I Bibliotheken & Frameworks

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

Proseminar: Website-Management-Systeme

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

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Der lokale und verteilte Fall

JSP und Servlet Programmierung

4D Server v12 64-bit Version BETA VERSION

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Java Webentwicklung (mit JSP)

Java Einführung Packages

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Online Banking System

Java zur Realisierung von Internetanwendungen

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

6.9 Java Server Pages

Programmierung von Client/Server- Anwendungen

Übung: Verwendung von Java-Threads

Themen. Apache Webserver Konfiguration. Verzeichnisse für Web-Applikationen. Server Side Includes

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6.

JSP Direktiven. Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt JSP

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Step by Step Webserver unter Windows Server von Christian Bartl

Das Content-Management-System OpenCms im Vergleich mit TYPO3 und Joomla. Seminarvortrag von Wolfgang Neuß

Tutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern.

FHZ. Servlets/JSP. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Snippets - das Erstellen von "Code- Fragmenten" - 1

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

WEBSEITEN ENTWICKELN MIT ASP.NET

BFV Widget Kurzdokumentation

3. Stored Procedures und PL/SQL

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

AcQuickPrint / AcSetPrinter Publizieren leicht gemacht / Drucker in Layouts tauschen

Architektur des agimatec-validation Frameworks

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Installation von NetBeans inkl. Glassfish Anwendungs-Server

GEONET Anleitung für Web-Autoren

Java Web Services Metadata JSR-181

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

Datenbanksysteme SS 2007

Konfiguration und Deployment einer hochverfügbaren ADF Anwendung

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Sophia Business Leitfaden zur Administration

Magento Theming Ein Einstieg Rainer Wollthan

Webseitenverwaltung. Mit HTML, CSS und ein klein wenig PHP. Steffen Schwientek

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Ihr CMS für die eigene Facebook Page - 1

Webentwicklung mit Mozilla Composer I.

Übungen zur Softwaretechnik

Graphen in Apex von Thomas Hernando.

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Einführung in die Scriptsprache PHP

Webseitenintegration. Dokumentation. v1.0

COSIDNS 2 ISPconfig3. Version 0.1 ( )

Web-Anwendungsentwicklung mit dem Delivery Server

Java Enterprise Architekturen Willkommen in der Realität

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Internet Explorer Version 6

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Anleitung zur Webservice Entwicklung unter Eclipse

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 4 PHP

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

WebService in Java SE und EE

Plugins. Stefan Salich Stand

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

Java: Vererbung. Teil 3: super()

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

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Installation der SAS Foundation Software auf Windows

Datenbank-basierte Webserver

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Transkript:

Web 2.0 Software-Architekturen JavaServerPages als dynamische View einer MVC Anwendung Prof. Dr. Nikolaus Wulff

Von Servlets zu JSP's Die Erstellung der HTML Ausgabe in einem Servlet endete in uneffektiven out.println Orgien. JSPs sollen die Servlets als Controller von dieser Aufgabe entlasten. Ziel ist die Trennung der Datenverarbeitung von der Darstellung der Daten. Beim ersten Laden eine JSP wird aus dieser ein Web-Container internes Servlet generiert, das die HTML Ausgabe ermöglicht, ohne dies explizit selber zu codieren... Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 2

Java Server Pages Ermöglichen Aufgabenverteilung (Design und Codierung) bei der Entwicklung Trennung nach dem Model-View-Controller-Pattern Plattformunabhängig Alle Bibliotheken des JDK stehen zur Verfügung Sehr gute Unterstützung von Multithreading Strukturiertes Exception-Handling Gute bis sehr gute Performance: Kompilierung der Seite erfolgt nur beim ersten Aufruf Java auf Server-Seite ist schnell! Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 3

Andere Technologien Viele Techniken unterstützen keine Trennung der Datenverarbeitung und Darstellung (z.b. Perl, PHP). CGI-Skripte starten bei jedem Aufruf einen Prozess auf dem Server, dies führt zur schlechten Performance. Häufig aufwendiges Session-Management (z.b. Perl) Servlets erlauben kein normales Design einer Webseite. Active Server Pages sind konzeptionell sehr ähnlich: Ist meist auf Microsoft-Plattformen beschränkt Basiert auf.net (meist Visual Basic oder C#). Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 4

Architektur-Überblick Browser Browser Application-Server Web-Container EJB-Container JavaScript AJAX HTTP JSP Servlet RMI IIOP EJB DB JNDI JDBC JAF JMS JTA JNDI JDBC JAF JMS JTA Präsentation Darstellung von HTML, XML ggf. Scripting Präsentation Session Verwaltung HTML Generierung Geschäftslogik Use Cases Business Objects Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 5

Hello World! Eine einfache Java Server Page: <HTML> <BODY> <% out.println( Hello JSP World! ); %> </BODY> </HTML> <%... %> beschreibt ein Java Scriplet: Java Code direkt eingebettet in eine HTML Seite. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 6

Prinzip der Java Server Pages HTML-Design mit Tool nach Wahl (z.b. Dreamweaver) Einfügen des Java-Codes mit geeignetem Editor, Dateiendung *.jsp Bereitstellen der Datei im entsprechenden Verzeichnis auf dem Webserver Beim ersten Aufruf durch einen Client kompiliert der Webserver die JSP in ein Servlet Bei einem erneuten Abruf der Seite prüft der Webserver, ob sich die Seite geändert hat. Falls nein, wird das zuvor kompilierte Servlet ausgeführt. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 7

Beispiel Es soll eine einfache HTML-Seite erstellt werden, welche analog zum HelloWorld-Servlet die aktuelle Uhrzeit anzeigt. Schreiben einer normale HTML-Seite, die lediglich die Endung *.jsp hat. Das einzige Dynamische ist ein Skriplet <%=new Date() %> welches bei jedem Aufruf die aktuelle Zeit in den Ausgabestrom der Seite schreibt. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 8

Dynamische HelloWorld JSP <%@ page language="java" import="java.util.*" %> <HTML><HEAD> <TITLE>HelloWorld JSP</TITLE> </HEAD><BODY> <H1>HelloWorld</H1> Dieser erste Teil ist statischer Text. <br/> Hier kommt eine dynamisch erzeugte Ausgabe<br/> Hier und jetzt ist es: <%=new Date() %> </BODY></HTML> HTML und Java gemischt auf einer Seite. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 9

Laufzeitumgebung Java SDK muss installiert sein (Compiler!) Servlet-Engine des Webservers muss JSPs verarbeiten können Beispiele: WebLogic Application Server IBM WebSphere Apache Webserver mit Tomcat Eclipse Jetty Plugin Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 10

Gliederung einer JSP JSP-Direktiven Voreinstellungen für Seite, Includes usw. JSP-Deklarationen Block für Definition statischer Variablen JSP-Scriptlets Blöcke, die Java-Code mit der Seitenlogik enthalten JSP-Expression Ausdruck, der ausgewertet in den Text eingefügt wird JavaScript-Bereich für clientseitigen Code HTML-Code Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 11

Beispiel JSP <%@ page language="java" import="java.util.*" %> <%! String strtext = "<b>text einer deklarierten Variablen,</b>"; %> <% strtext += " <b><i> dynamisch erweitert!</i></b>"; %> <html> <head> <title>helloworld JSP</title> </head><body> <h1>helloworld</h1> Dieser erste Teil ist statischer Text. <br/> Hier kommt eine dynamisch erzeugte Ausgabe<br/> Hier und jetzt ist es: <%=new Date() %><br/> Und hier die Variable strtext: <%=strtext%> </body></html> Beachte: <%! Member Variable oder Funktion, <% lokales Scriplet. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 12

Syntax Direktiven 1 Page-Direktive <%@ page attribut="value" %> Definiert Einstellungen, die für die gesamte Seite gültig sind. Mögliche Attribute sind (Auswahl): import, extends, errorpage, session Beispiel: <%@ page language="java" import="java.util.*, bookstore.*" %> Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 13

Syntax Direktiven 2 Include-Direktive <%@ include file="url" %> Angegebene Datei wird statisch während der Kompilierung eingebunden. Es kann sich um eine HTML-Seite oder JSP handeln. Beispiel: <%@ include file="mypage.html" %> Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 14

Syntax Actions Jsp:include-Action <jsp:include page="url" /> Angebene Datei wird bei bei jedem neuen Request der Seite eingebunden. Inhalt kann statisch oder dynamisch sein. Jsp:usebean-Action <jsp:usebean attribut="value" /> Mögliche Attribute sind (Auswahl): id, scope, class Jsp:forward-Action <jsp:forward page="url" /> Weiterleitung auf statische Seite, Servlet oder andere JSP. Prozessierung der aktuellen Seite wird abgebrochen. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 15

Syntax Deklarationen Kennzeichnung mit <%!... %> Im Deklarations-Block werden Variablen definiert. Die Initialisierung erfolgt bei der Initialisierung der Seite. Vorsicht: Da es sich um Instanz-Variablen handelt, können die Werte Session-übergreifend sichtbar sein! Beispiel: <%! String dummy = "hallo"; int version = 1; %> Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 16

Implizite Objekte Implizite Objekte werden automatisch erzeugt und können ohne Deklaration verwendet werden. request => HttpServletRequest response => HttpServletResponse session => HttpSession out => PrintWriter Außerdem: page, pagecontext, config, exception, application Die ersten vier Objekte entsprechen denen aus der Servlet API. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 17

Beispiele Implizite Objekte <% session.putvalue("meinparameter", "Wert"); %> <% String param = (String)session.getValue("MeinParameter"); %> <% String param2 = request.getparameter("editdatum"); %> <% out.println("dieser Text wird ausgegeben!"); %> Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 18

Jsp:usebean Jsp:usebean <jsp:usebean <attribut>=<value> /> Mögliche Attribute: Scope: entweder page, request, session oder application Id: Name, unter dem auf die Bean zugegriffen wird Class: Vollständiger Name der JavaBean-Klasse Beispiel: <jsp:usebean id="storebean" scope="session" class= onlinestore.storebean" /> Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 19

Error-Handling Es gibt zwei Arten von JSP-Fehlern: Translation Time Errors: Fehler beim Kompilieren Request Time Errors: Fehler zur Laufzeit Compile-Errors sind im Logfile des Servers. Laufzeit-Fehler werfen eine Exception und können im JSP-Code abgefangen werden. Nicht abgefangene Exceptions werden an eine optional angegebene Fehler-Seite weitergegeben: <%@ page language="java" errorpage="/error.jsp" %> Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 20

JSP Vererbungshierarchie Servlet (from servlet) <<Abstract>> GenericServlet (from serv let) ServletConfig (from serv let) <<Int erface>> JspPage jspinit() js pdestroy() <<Abstract>> HttpServlet (from http) ServletContext (from serv let) <<Int erface>> HttpJspPage _jspservice() <<Container>> HttpJspBase (from org.apache.j asper.runtime) abhängig von der JSPEngine. Hier Apache Tomcat MyJavaServerPage <<generated>> MyJspServlet pagecontext 1 PageContext Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 21

PageContext ServletRequest (from serv let) 1 ServletResponse (from serv let) 1 HttpSession (from http) +session 0..1 PageContext name : String -attribut Object 0..1 (from lang) Writer (from io) +out JspWri ter 1 1 1 ServletConfig (from serv let) ServletContext (from serv let) Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 22

PageContext ServletRequest (from serv let) 1 ServletResponse (from serv let) 1 HttpSession (from http) +session 0..1 PageContext name : String -attribut Object 0..1 (from lang) Writer (from io) +out JspWri ter 1 1 1 ServletConfig (from serv let) ServletContext (from serv let) Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 23

JSP Template Muster JSPs lassen sich dynamisch für ein einheitliches Layout verschachteln: <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding=" <html> <jsp:include page="<%=request.getattribute("header").tostring() %>" /> <body> <div id="content"> <jsp:include page="<%=request.getattribute("content").tostring() %>" /> </div> <div id="footer"> <jsp:include page="<%=request.getattribute("footer").tostring() %>" /> </div> </body> </html> Header, Content und Footer sind kontextsensitiv vom Servlet Controller entsprechend der Anfrage im request Scope hinterlegt worden. Prof. Dr. Nikolaus Wulff Web 2.0 Software-Architekturen 24