Web-Technologien im Überblick



Ähnliche Dokumente
Web-Technologien im Überblick

6.9 Java Server Pages

Online-Publishing mit HTML und CSS für Einsteigerinnen

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

Architekturen. DB-Anwendungen: Aufgaben. Aufteilung der Funktionen. ƒ Datenbankanwendungen

Datenbanksysteme SS 2007

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Existierende Systeme I Bibliotheken & Frameworks

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

Datenbank-basierte Webserver

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML

Java Server Pages (JSP)

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Internetanbindung von Datenbanken

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

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Online Banking System

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

ESB - Elektronischer Service Bericht

Sicherheit in Rich Internet Applications

Softwareentwicklung mit Enterprise JAVA Beans

Seminar SS 2000 Enterprise Application Intergration

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Einsatz von Applikationsservern. Untersucht am Beispiel des Sybase Enterprise Application Server

Faclets. Eine alternative View Technologie um JSF Applikationen OHNE JSP zu entwickeln Wird unter java.net gehostet Open Source, CDDL Lizenz

Java - Webapplikationen

Lokale Installation von DotNetNuke 4 ohne IIS

Kommunikationsnetze. 7. Das World Wide Web 7.4 Client- vs. Server-basierte Techniken für dynamische Webseiten

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

Java zur Realisierung von Internetanwendungen

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

Einführung in die Scriptsprache PHP

Übungen zur Softwaretechnik

Agenda. Einführung AJAX Was ist eigentlich AJAX?

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Alte Technik neu verpackt

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

Web Engineering.

Diplomarbeit: GOMMA: Eine Plattform zur flexiblen Verwaltung und Analyse von Ontologie Mappings in der Bio-/Medizininformatik

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Anwendungsprotokolle: HTTP, POP, SMTP

JSP und Servlet Programmierung

Verteidigung gegen SQL Injection Attacks

Architektur des agimatec-validation Frameworks

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

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

Web Sockets mit HTML5. Quelle:

Workflow, Business Process Management, 4.Teil

Herzlich willkommen im Modul Web-Engineering

Internet und WWW Übungen

SEMINAR Modifikation für die Nutzung des Community Builders

Entwicklung von Web-Anwendungen auf JAVA EE Basis

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

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

FORGE2015 HDC Session 4. Nachhaltige Infrastruktur als technologische Herausforderung. Tibor Kálmán Tim Hasler Sven Bingert

Webseiten sind keine Gemälde. Webstandards für ein besseres Web. Webstandards für ein besseres Web

OP-LOG

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS XML Programmierung - Grundlagen PHP Programmierung - Grundlagen...

Java 2, Enterprise Edition Einführung und Überblick

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Das Einsteigerseminar

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

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Einleitung. Funktion. Panzenböck Phillipp. Download Installation. Testen. Konfiguration

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

Man liest sich: POP3/IMAP

Automatisches Exploratives Testen von Webanwendungen

HTML Formulare. Benutzerschnittstelle für interaktive Webseiten

Java Script für die Nutzung unseres Online-Bestellsystems

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Institut für Dokumentologie und Editorik. XML-Datenbanken und XQuery

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Ein mobiler Electronic Program Guide

Secure Network Communications (BC-SEC-SNC)

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

WebSphere Application Server Installation

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Einführung in PHP. (mit Aufgaben)

DCCS Lotusphere Nachlese 2012 Was sind XPages? Mobile Features für XPages

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

Der lokale und verteilte Fall

Applets I. Grundlagen der g Applet-Programmierung

Einführung Internettechnologien. - Clientseitige Programmierung -

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Konfiguration des Internet Explorers 7

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

A361 Web-Server. IKT-Standard. Ausgabedatum: Version: Ersetzt: Genehmigt durch: Informatiksteuerungsorgan Bund, am

EIDAMO Webshop-Lösung - White Paper

Konfiguration des Internet Explorers 8

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

AJAX Implementierung mit Joomla!

SharePoint Demonstration

QTS. Qualitätssicherungs-Teileverfolgungs- System online. Benutzung der grafischen Oberfläche via Internetbrowser

Acceptor-Connector. Acceptor-Connector

Graphen in Apex von Thomas Hernando.

Transkript:

Forschungszentrum Informatik Universität Karlsruhe (TH) Information Process Engineering Web-Technologien im Überblick Andreas Schmidt WS 2006/2007

Motivation Endanwender sollen auf servergestützte Anwendungen über das (öffentliche) Internet zugreifen Rahmenbedingungen verträglich mit Netzwerkkonfigurationen (Firewalls,...) ohne separate Installation => Web-Technologien als Basis Client Server Internet 2

Programm Was sind Standard-Web-Technologien? Serverseitige Technologien CGI API-basierte Ansätze Skriptbasierte Ansätze JSP als Beispiel für einen skriptbasierten Ansatz JavaServerFaces als komponentenorientierte Weiterentwicklung Clientseitige Technologien Plugins AJAX Web 2.0? 3

Was sind Standard-Web-Technologien?

Standard-WWW-Architektur Internet-basierte Client/Server-Architektur Browser (Client) zur graphischen Darstellung HTTP-Server (=Web-Server) zur Übertragung der HTML-Seiten HTTP: Protokoll zur Übertragung der Seiten HTML: Sprache zur Beschreibung der Seiten CSS: Layoutspezifikation URL: für unidirektionale Links Browser HTTP- Server HTML HTML Internet HTTP HTML link 5

HTTP: Das Protokoll des WWW HTTP - HyperText Transfer Protocol Dient der Übertragung von Hypermedia-Dokumenten zwischen einem Server und einem Client Zustandslos kleinere Aufweichungen durch HTTP 1.1 Übermittlung von Parametern als Name-Wert-Paare GET bzw. POST Inzwischen universelles Transportprotokoll WebDAV Zugriff auf Dateisystem SOAP RPC... 6

HTML: Struktur, Layout und Logik XHTML beschreibt die Inhalte und die Strukturen Links, Formulare etc. CSS beschreibt die Darstellung Schriften, Farben, Rahmen, Hintergründe, Positionen JavaScript für clientseitige Verarbeitungslogik z.b. Feldinhaltvalidierung, fortgeschrittene UI-Methoden 7

Aufgabenteilung im Standardmodell Browser Rendering UI-Events JavaScript CSS HTML HTTP Web Server Darstellungsspezifikation Controller Anwendung Daten 8

Serverseitige Technologien

Serverseitige Technologien Funktionale Anforderungen Generierung der Darstellungspezifikation (HTML) Verbeitung der Benutzerschnittstellenaktionen (HTTP-Requests) Aufruf der Anwendungslogik Nicht funktionale Anforderungen Wartbarkeit Flexibilität Skalierbarkeit 10

Übersicht server-seitige Ansätze Serverseitige HTML-Generierung Offline durch Vorberechnung von HTML-Seiten Aufruf von HTMLgenerierender Anwendung Einbettung HTML-generierender Skriptteile "XML-Weg" Generierung statischer Seiten CGI API-basiert interpretiert SSI ASP PHP kompiliert JSP 11

Übersicht server-seitige Ansätze Serverseitige HTML-Generierung Offline durch Vorberechnung von HTML-Seiten Aufruf von HTMLgenerierender Anwendung Einbettung HTML-generierender Skriptteile "XML-Weg" Generierung statischer Seiten CGI API-basiert interpretiert SSI ASP PHP kompiliert JSP 12

CGI-Skripte Betätigung Submit-Button <FORM METHOD="POST" ACTION="http://www.fzi.de/ cgi-bin/my-form"> Aufruf des Skriptes mit Parametern Initialisierung bei jedem Aufruf Aufbau der DB Verbindung bei jedem Aufruf client Anfrage Antwort HTTP- Server CGI CGI-Skript Verbindungsaufbau SQL Anfrage Datenbank Ergebnis HTTP Server Antwortet Skript übermittelt HTML und beendet sich Skript generiert HTML Skript stellt Anfrage an DB 13

Bewertung Vorteile Beliebige Programme können integriert werden Sicherheit durch eigenen Prozess Nachteile Ein Prozess pro Anfrage Keine Speicherung des Zustands Für jede DB-Anfrage Verbindung aufbauen und trennen Keine Trennung von Präsentation und Anwendungslogik CGI als Schnittstelle immer noch geeignet und genutzt z.b. auch als Aufruf für Skript-Interpreter 14

API-basierte Ansätze Entwickelt um Nachteile der CGI-Skripte zu überwinden Erweiterungen werden in den Adressraum des Servers geladen Müssen nur einmal geladen werden Werden in Threads statt Prozessen ausgeführt Bekanntesten Vertreter NSAPI (Netscape) ISAPI (Microsoft) Java Servlets (Sun) 15

API-basierte Ansätze Betätigung Submit-Button <FORM METHOD="POST" ACTION="http://www.fzi.de/ cgi-bin/my-form"> Aufruf des Programms, Parameterübergabe Initialisierung bei ersten Aufruf (einmalig) Verbindungsaufbau zur DB beim ersten Aufruf (einmalig) client Anfrage Antwort HTTP- Server Programm Verbindungsaufbau SQL Anfragen Ergebnisse Datenbank Zustand HTML-Rückgabe HTML-Generierung Beliebig viele SQL Anfragen 16

Bewertung Vorteile Höhere Leistungsfähigkeit Session-Verwaltung Zustände, z.b. DB-Verbindung Weniger Ressourcenverbrauch Nachteile Keine Trennung von Präsentation und Anwendungslogik 17

Übersicht server-seitige Ansätze Serverseitige HTML-Generierung Offline durch Vorberechnung von HTML-Seiten Aufruf von HTMLgenerierender Anwendung Einbettung HTML-generierender Skriptteile "XML-Weg" Generierung statischer Seiten CGI API-basiert interpretiert SSI ASP PHP kompiliert JSP 18

Server-Side Scripting In HTML-Seiten werden zusätzliche HTML-generierende Quellen integriert HTML HTML Datenbank Scripting Scripting Anwendungs- Logik 19

Ausführungsvarianten Anwendung erstellen <html> <?php...> Anwendung erstellen <html> <jsp:...> </html> </html> Laufzeit Interpreter Übersetzungszeit (einmalig) Compiler Ausführbares Programm Laufzeit HTML- Dokument HTML- Dokument 20

Typische Vertreter Server Side JavaScript (Netscape) PHP - PHP Hypertext Processor ASP - Active Server Pages (Microsoft IIS) JSP - Java Server Pages 21

Beispiel: JSP Java Server Pages

Java Server Pages (JSP) Bestandteil der Java 2 Plattform Enterprise Edition (J2EE) Motivation: Trennung von (HTML-)Präsentation und Inhalt Ablauf Erstellung einer JSP Aufruf der JSP durch den Benutzer Überprüfung, ob sich die JSP geändert hat oder ob sie neu ist (Gegebenenfalls Übersetzung der JSP in ein Servlet) Ausführung des Servlets Rückgabe des Ergebnisses 23

JSP Ablauf HTTP- Server Generierung des JSP Servlet aus JSP Page (HTML + Scripting) client Datenbank Anfrage Antwort JSPpage JSP- Servlet Zustand Verbindungsaufbau SQL Anfragen Ergebnisse 24

JSP-Skriptelemente (1) JSP Elementtypen Vereinbarungen / Deklarationen Deklarationen von Variablen, Methoden und inneren Klassen Syntax: <%! Vereinbarung(en) %> import über die Direktive Beispiel: Instanzvariablen: <%! int i=0; float f;%> Methode: <%! public String Zeit() {...} %> Anweisungsfragemente/Scriplet Einbettung von Java-Fragmenten Syntax: <% Anweisungsfragment(e) %> Lokale Variablendeklaration Beispiel: <% int i=1; while (i<10) {out.println(i);i++;} %> 25

JSP-Skriptelemente (2) JSP Elementtypen Ausdrücke Einfachste Art eines Skripts Syntax: <%= Ausdruck %> Umwandlung zur Laufzeit in String (tostring-methode) Beispiel: <%=Uhr.getZeit()%> entspricht <%out.print(uhr.getzeit());%> Kommentare Syntax: <%-- comment --%> 26

JSP: Beispiel <%@ page errorpage="error.html" import="java.sql.*" session="false" %> <html> <head> <link ref="stylesheet" type="text/css" href="formate.css" /> <body> <h1> Produktliste vom <%=new java.util.date().tolocalestring()%> </h1> <%-- Scriptlet zum Verbindungsaufbau und Abfrage--%> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection ("jdbc:odbc:produktdatenbank", "name", "pwd"); Statement.stmt = con.createstatement(); ResultSet rs = stmt.execquery ("SELECT name, photo_url FROM artikel"); %> 27

JSP: Beispiel (Forts.)... <%-- Ausgabe in zwei Spalten...--%> <table> <tr> <th>name</th><th>bild</th> </tr> <%--...Zeile für Zeile--%> <% while (rs.next()){ %> <tr><td> <%= rs.getstring(1)%> </td> <td><img src="<%=rs.getstring(2)%>"> </td> </tr> <%}%> </table> <%-- Verbindung schließen--%> <% rs.close();%> </body> </html> 28

Zusammenfassend: JSP 1.0 HTML CSS Layout JSP-Seiten Darstellungsstruktur Teile der Anwendungslogik Reaktion auf Benutzeraktionen JNDI EJBs JDBC Anwendungslogik 29

Probleme mit JSP 1.0 Mischung von Präsentation und Anwendungslogik einfache Erstellung schnell unübersichtlich JSP soll eigentlich nur die Struktur der Darstellung festlegen insbesondere Steuerelemente Auslagerung der aufwendigeren Logik 30

JSP 1.1+: Benutzerdefinierte Tags Kapseln von immer wiederkehrender Funktionalität als Tag Standardbibliotheken: JavaServer Pages Standard Tag Library (JSTL) Core Tags: Standardfunktionalität choose, foreach, if,... XML Tags: Zugriff auf XML-Dokumente Internationalisierung SQLTags: Standard DB Funktionen Anwendung kann weitere Tag Libraries definieren Zusätzlich Expression Language einfacherer Zugriff auf Beans 31

JSP 1.1+: Beispiel <table> <tr> <th>name</th><th>bild</th> </tr> <my:produkte query="" iterate="produkt"> <tr> <td>${produkt.name} </td> <td><img src="${produkt.bild}" /></td> </tr> </my:produkte> </table> 32

JSP 1.1+ HTML CSS Layout JSP-Seiten Reaktion auf Benutzeraktionen Tag Libraries Darstellungsstruktur Darstellungslogik Anwendungslogik (E)JBs 33

JSP Bewertung Standardisierter Weg zur Trennung von Gestaltung (Web-Designer) => JSP-Seiten Anwendungslogik (Entwickler) => Tag Libraries, Back-End Grundlage für komponentenorienterte HTML-Generierung Höhere Wiederverwendung der HTML-generierenden Quelle Trennung von Präsentation und Anwendungslogik Allerdings: Große Unterschiede zwischen Standard-GUI- und Web-GUI- Entwicklung trotz derselben Konzepte 34

Java Server Faces

JSF: Grundidee Die Entwicklung von Web-Anwendungen soll so ähnlich wie möglich zur Entwicklung von anderen graphischen Benutzerschnittstellen sein (insbesondere Swing) wiederverwendbare und erweiterbare Benutzerschnittstellenkomponenten Model-View-Controller-Prinzip ereignisgesteuert (Listener-Pattern) Komponentenmodell prinzipiell unabhängig von der Zielplattform (also auch Generierung von Swing- Oberflächen aus abstraktem Komponentenbaum) 36

JSF: Elemente UI-Komponenten zustandsbehaftet (d.h. JSF übernimmt das Zustandsmanagement) Java-Beans stellen das Modell dar Schnittstelle zu den darzustellenden Daten Listener Reaktionen auf Ereignisse der UI-Komponenten JSP-Seiten Seitenstruktur und Anordung der UI-Komponenten Navigationsregeln definieren den Fluss zwischen unterschiedlichen Seiten 37

JSF: Ablauf faces-config.xml JSF-Laufzeit JSF-Komponenten Anwendung Browser Faces Servlet JSP-Seiten VIEW Action Listener Komponentenbaum CONTROLLER Java Beans MODEL Backend JSF-Tag-Library JSF-Tag-Library Abstrakte Abstrakte Komponenten Komponenten 38

JSF Schritt 1: Bean schreiben public class Kunde { String kdnr; String name; public void setkundennr(string nr) { kdnr = nr; } public String getkundennr() { return kdnr; } public String getpersonname() { return name; } } public void fetchdata(actionevent event) { // hier Zugriff auf die Kundendatenbank } 39

JSF Schritt 2: Konfiguration <?xml version="1.0"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config> <navigation-rule> <from-view-id>/pages/start.jsp</from-view-id> <navigation-case> <from-outcome>login</from-outcome> <to-view-id>/pages/greeting.jsp</to-view-id> </navigation-case> </navigation-rule> <managed-bean> <managed-bean-name>personbean</managed-bean-name> <managed-bean-class>de.fzi.personbean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config> 40

JSF Schritt 3: start.jsp schreiben <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:loadbundle basename="jsfks.bundle.messages" var="msg"/> <html> <body> <f:view> <h1><h:outputtext value="#{msg.inputname_header}"/></h1> <h:form id="helloform"> <h:outputtext value="#{msg.prompt}"/> <h:inputtext value="#{personbean.kundennr}" /> <h:commandbutton actionlistener=#{personbean.fetchdata}" action="login" value="#{msg.button_text}" /> </h:form> </f:view> </body> </html> 41

JSF Schritt 4: greeting.jsp schreiben <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:loadbundle basename="jsfks.bundle.messages" var="msg"/> <html> <body> <f:view> <h3> <h:outputtext value="#{msg.greeting_text}" />, <h:outputtext value="#{personbean.personname}" /> <h:outputtext value="#{msg.sign}" /> </h3> </f:view> </body> </html> 42

Der "XML-Weg"

Übersicht server-seitige Ansätze Serverseitige HTML-Generierung Offline durch Vorberechnung von HTML-Seiten Aufruf von HTMLgenerierender Anwendung Einbettung HTML-generierender Skriptteile "XML-Weg" Generierung statischer Seiten CGI API-basiert Servlet interpretiert SSI ASP PHP kompiliert JSP JavaServerFaces 44

XML-Weg: Motivation Zwischen den einzelnen Schichten: Brüchen in den Datenmodellen Datenbank: Anwendungslogik: Präsentation: relational objektorientiert semistrukturiert (XML) XML tritt an, dies zu homogenisieren XML als Datenmodell zur Speicherung Anwendungslogik als Transformation von XML Daten Präsentation als Transformation 45

XML Verarbeitungsmodell Abfrage Darstellung Visualisierung Datenquelle Extraktion XML Austausch Bearbeitung/Transformation Weiterverarbeitung 46

XHTML Auf XML basierendes HTML Ziel: Kaum Unterschiede zu HTML 4.0 + Wohlgeformtheit und Gültigkeit, so dass es mit XML-Tools bearbeitet werden kann + Modularisierung Wichtigste Änderungen Alle Tags müssen abgeschlossen sein (z.b. <hr/>) Keine Überschneidungen, nur Verschachtelung z.b. <p><em></em></p> Groß- und Kleinschreibung Attributwerte in Anführungszeichen 3 statt 1 DTD für XHTML 47

Zusammenführung: Vorschau Homepage In XHTML AJAX JSP Anwendungslogik XSLT XML Datenbank +XML Transformationsanweisung Business- Objekte PDF, Word, WML,... XSLT Transformationsanweisung XML-unabhängige Verarbeitungslogik XML-Datenbank 48

XML-Weg Browser Web-Server XSL-T Rendering von XHTML/XForms Darstellungsspezifikation Transformation nach XHTML/XForms? UI-Events Controller AJAX? XML Anwendung Transformation XSL-T Daten XML XQuery XPath 49

Client-seitige Technologien

Alternativen: Client Präsentation Anwendung Direkte Kommunikation mit Datenbank (SQL über DB-spezifisches Protokoll) 1. Plug-in- Anwendung mit direkter Datenbankkommunikation 2. Plugin- Anwendung mit Zugriff über Middleware 3. HTML- Client Kommunikation über Middleware-Protokoll (RMI, IIOP, SOAP) 4. AJAX HTTP-basiertes Protokoll Daten 51

Client-seitige Ansätze (2) 1. Plugin: Direkte Datenbankkommunikation Serverseite stellt Datenbankschnittstelle bereit wird so gut wie nicht praktiziert Gründe: Sicherheit, Performanz, Flexibilität 2. Plugin: Zugriff über Middleware Serverseite stellt per RPC Anwendungslogik bereit in der Praxis fast ausschließlich HTTP(S)-basierte Kommunikation (inzwischen teilweise SOAP) Gründe: Firewall-Konfigurationen 3. HTML-Client Serverseite ist klassischer Web-Server Client kümmert sich nur um Darstellung und die Übermittlung von UI- Ereignissen, Server bereitet HTML auf der Basis der Anwendungslogik auf 4. AJAX Serverseite ist teilweise Web-Server, teilweise Anwendungsserver Client kümmert sich um die komplette Präsentationslogik einschließlich Übersetzung von UI-Ereignissen auf Anwendungslogik Plugin-basiert nur "Standard" 52

AJAX

AJAX: Grundidee Hauptproblem bei der Erstellung von komfortablen Web- Anwendungen ist die träge Reaktion für jede Benutzeraktion muss eine Serveranfrage abgesetzt, auf deren Ergebnis gewartet und die Seite neu aufgebaut werden AJAX-Idee Benutzerschnittstelle ("Seite") wird nicht immer wieder neu geladen oder aufgebaut, sondern dynamisch modifiziert Server-Anfragen werden asynchron im Hintergrund abgewickelt, so dass der Benutzer nicht warten muss 54

Was ist AJAX? AJAX (asynchronous Java Script and XML) ist ein Verwendungsmuster von Web-Technologien, die durch asynchrone Serverkommunikation geprägt ist. Bausteine XHTML und CSS DHTML, d.h. dynamische Modifikation des Dokumentenbaumes mittels DOM (document object model) Zugriffsmethoden, Ereignismodell XML (und XSLT) asynchrone Datenübertragung mittels XMLHttpRequest JavaScript 55

AJAX-Prinzip (1) XMLHttpRequest + JavaScript Code 56

Ablauf ohne AJAX Client Server 57

Ablauf mit AJAX Client AJAX-Engine im Browser Server 58

Beispiele 59

nicht standardisiert! Grundprinzip function createxmlhttprequest() { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} try { return new XMLHttpRequest(); } catch(e) {} alert("xmlhttprequest not supported"); return null; } function loadfragmentintoelement(fragment_url, element_id) { xmlhttp = createxmlhttprequest(); var element = document.getelementbyid(element_id); element.innerhtml = '<p><em>loading...</em></p>'; xmlhttp.open("get", fragment_url); xmlhttp.onreadystatechange = function() { if (xmlhttp.readystate == 4 && xmlhttp.status == 200) element.innerhtml = xmlhttp.responsetext; } xmlhttp.send(null); } Callback 60

Typische AJAX-Komponenten/-Funktionen Autocomplete in Texteingabefeldern LiveSearch: Suchergebnisse werden bei der Eingabe angezeigt Drag-and-Drop, z.b. in Baumansichten Anzeige serverseitiger Änderungen ohne Refresh 61

AJAX: Fazit AJAX erlaubt die Erstellung von Web-Anwendungen, die sich (fast) wie Desktop-Anwendungen anfühlen unterstützt von praktisch allen aktuellen Browsern (IE, Firefox, Opera) Saubere Trennung von Anwendung und UI möglich allerdings: JavaScript-basierte Entwicklung führt bei komplexen Projekten zu schlecht wartbarem Code zahlreiche Frameworks zur leichteren Erstellung von AJAX- Anwendungen -> generative Ansätze z.b. auf der Basis von JavaServerFaces o.ä. 62

Web 2.0 Ist nicht primär ein technologisches Phänomen (insbesondere nicht gleich AJAX), sondern eine neue Wahrnehmung des Webs Nutzer und die von ihnen generierten Inhalte stehen im Vordergrund Betonung der sozialen Interaktion darin liegt oft auch der primäre Mehrwert bei der Verlagerung von klassischen Desktop-Anwendungen ins Web leichtgewichtige Integration: Verwendung der Dienste und/oder Inhalte in anderen Kontexten möglich 63

64

Literatur Web-Technologien allgemein C. Strobel: Web-Technologien in E-Commerce-Systemen, Oldenbourg 2003 JSP V. Turau, K. Saleck und C. Lenz: Web-basierte Anwendungen entwickeln mit JSP 2, dpunkt Verlag, 2003 JSF G. Beneken, F. Deißenbröck: Inside Java Server Faces, Java-Spektrum 04/2004, http://www.sigs.de/publications/js/2004/04/beneken_js_04_04.pdf XML W. Kazakos, A. Schmidt, P. Tomczyk: Datenbanken und XML, Springer 2002 AJAX Jesse James Garrett: AJAX A New Approach to Web Applications http://www.adaptivepath.com/publications/essays/archives/000385.php 65