37
Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars „Neue Entwicklungen in der Telematik“ Universität Leipzig Lehrstuhl für angewandte Telematik / e-Business Prof. Dr. Volker Gruhn Dr. Sami Beydeda 26. Januar 2004

Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

Embed Size (px)

Citation preview

Page 1: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

Frameworks zur Implementierung von Hypertext Anwendungen

Thorsten BergerDiplomstudiengang Informatik

5. Semester

Ein Vortrag im Rahmen des Problemseminars„Neue Entwicklungen in der Telematik“

Universität LeipzigLehrstuhl für angewandte Telematik / e-Business

Prof. Dr. Volker GruhnDr. Sami Beydeda

26. Januar 2004

Page 2: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

2Frameworks zur Implementierung von Hypertext Anwendungen

1. Einleitung, Definitionen

2. Grundlagen

3. Struts

4. Weitere Apache Frameworks

5. XForms

6. Literatur

Übersicht

Page 3: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

1. Einführung / Definition

Hypertext-Anwendung, Framework

Page 4: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

4Frameworks zur Implementierung von Hypertext Anwendungen

Hypertext-Anwendung

• Versuch einer Definition:

- verteilte Anwendung, graphische Oberfläche im WWW- Gestaltung erfolgt mit HTML, WML, XML ...- Applikationsprotokoll HTTP

• Verwendung:

- WWW: Portale, Online-Shops, Suchmaschinen etc

- Intranet: firmeninterne Kommunikation, ersetzen „Fat Clients“

- Webservices: standardisierte APIs (WSDL) für best. Dienstleistungen, z.B. Suchanfragen bei Google ohne Browser

Page 5: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

5Frameworks zur Implementierung von Hypertext Anwendungen

Framework

• Definition:

Helmut Balzert in [1]:

„Ein Rahmenwerk (framework) ist ein durch einen Software-Entwickler anpassbares oder erweiterbares System kooperierender Klassen, die einen wiederverwendbaren Entwurf für einen bestimmten Anwendungsbereich implementieren.“

• grundlegendes Design/Architektur

• hohes Abstraktionsvermögen

• Bereitstellung versch. Komponenten

Beschleunigung der Entwicklung

Page 6: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

2. Grundlagen

CGI, Server Extensions, Server Scripting, Servlet API, Modelle und Architekturen

Page 7: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

7Frameworks zur Implementierung von Hypertext Anwendungen

CGI, Server-Extensions

CGI – Interface zwischen WebServer und Anwendung

Client

Server

Anwendung

Request

Response

„fork“

Ausgabe(HTML)

Server Extensions:• WebServer-spezifische API• z.B. Netscape NSAPI, Microsoft ISAPI, Apache Module

Page 8: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

8Frameworks zur Implementierung von Hypertext Anwendungen

Server Scripting, Servlets

Server Scripting• Ausführung von in HTML eingebettetem

Script Code durch Interpreter• Netscape proprietäre „Server Side

Includes“ (SSI)• moderne Scriptsprachen JSP, PHP,

ASP, Python

Java Servlets• Spezifikation der J2EE• Weiterentwicklung der „Server Extensions“• Ausführung in Servlet Container, z.B.:

- Jakarta Tomcat

- Jetty

- Macromedia Jrun

Page 9: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

2.1. Modelle und Architekturen

Multi-Tier, Model 1, MVC

Page 10: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

10Frameworks zur Implementierung von Hypertext Anwendungen

Multi-Tier

„Multi-Tier“-Architektur (Quelle: SUN)

Page 11: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

11Frameworks zur Implementierung von Hypertext Anwendungen

MVC

MVC – Modell (Quelle: SUN)

• OO-Framework zur GUI-Entwicklung

• ursprünglich Verwendung in Smalltalk-80 am Xerox PARC

+ saubere Kapselung der Komponenten

+ Erweiterbarkeit

+ Wiederverwendbarkeit

+ Austauchbarkeit der View

- viele Transaktionen zwischen Komponenten(Unmenge an Listenern möglich)

- Ereignisbehandlung bei verbindungslosem HTTP-Protokoll schwierig zu adaptieren

Page 12: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

12Frameworks zur Implementierung von Hypertext Anwendungen

SUN – Model 1, Model 2

Client

Request

JSP

Bean

Response

Container / Middle Tier EIS Tier

Client

RequestController

Servlet

Response

Container / Middle Tier EIS Tier

ViewJSP

ModelBean

Model 1

Model 2

Page 13: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

3. Struts

Übersicht, Controller, View, Model, Formulare, Validator

Page 14: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

14Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Übersicht I

• seit 1999 Framework als Teil des Apache Jakarta Projekts Open Source

• basiert auf J2EE/Servlet-Spezifikation• Model 2• bereits sehr große Verbreitung• Unterstützung durch IBM und SUN• sehr gut dokumentiert• internationalisiert• plattformunabhängig

Page 15: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

15Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Übersicht III

R esponse

R equest View

Ja vaS e rve rP a ge Ja vaS e rve rP a ge

Ja vaS e rve rP a ge

A c tio nS e rv le t

C l ien t

s tru ts -co n fig .xm l in it

Frontend-Model

F o rm B e a n F o rm B e a n

F o rm B e a n

A c tio n A c tio n

A c tio n

Controlle r

A pp lika tio n s lo g ik / B a ck -E nd -M o de l

C o nta ine r / We b Se rve r

Page 16: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

16Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Controller I

ActionServlet – struts-config.xmlActionServlet – struts-config.xml

<struts-config>

<form-beans> <form-bean name="logonForm" type="org.apache.struts.example.LogonForm"/> </form-beans>

<global-forwards type="org.apache.struts.action.ActionForward"/> <forward name="logon" path="/logon.jsp" redirect="false"/> </global-forwards>

<action-mappings> <action path="/logon"

type="org.apache.struts.example.LogonAction"name="logonForm"scope="request"input="/logon.jsp"unknown="false"validate="true"/>

</action-mappings>

</struts-config>

Page 17: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

17Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Controller II

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)

Einstiegspunkt:

- nur eine Instanz für alle Requests Thread-Sicherheit gefordert!- Applikationslogik vermeiden!

ActionsActions

Ablauf:• aktuelle User-Session validieren• Validierung gesendeter Formular-Daten (vs. ActionForm-Bean)• Ausführung Applikationslogik• Aktualisierung verschiedener Session-/Request-Beans• Rückgabe eines ActionForward

Page 18: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

18Frameworks zur Implementierung von Hypertext Anwendungen

Struts – View I

• basiert auf Javas Internationalisierungsfähigkeiten

• Locale - Klasse repräsentiert Nationalität inkl. versch. Eigenheiten

• ResourceBundle – Klasse enthält Locale-spezifische Objekte

ResourceBundles können im Deployment-Descriptor (web.xml) angegeben werden:

<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>application</param-name> <param-value>com.mycompany.mypackage.MyResources</param-value> </init-param> ...</servlet>

Internationalisierung (i18n)Internationalisierung (i18n)

Page 19: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

19Frameworks zur Implementierung von Hypertext Anwendungen

Struts – View II

• erweitern vorhandene JSP-Taglibs um sinnvolle Funktionen:- Labels in länderspezifischer Sprache- iterative und logische Funktionen- Definition und Einbetten von Beans

• einfach zu erlernen

• Custom-Tags möglich

• später wahrscheinlich durch JSTL (JCP, Bestandteil von JSP 2.0) abgelöst

<jsp:useBean id=“cart“ scope=“request“ class=“com.mycompany.MyApp.MyCart“/>

Benutzung einer Bean:

Struts Tag-SetStruts Tag-Set

Page 20: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

20Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Model I

ModelModel

Frontend-Model

•ActionForm-Beans

•Datenbasis für View (JSP)

•stellt View Ausschnitt des Backends-Models bereit

•enthält Request-Parameter

Frontend-Model

•ActionForm-Beans

•Datenbasis für View (JSP)

•stellt View Ausschnitt des Backends-Models bereit

•enthält Request-Parameter

Backend-Model

•eigentliche Geschäftslogik und -daten

•nicht genau spezifiziert

•Verwendung verschiedenartiger Beans (Systemzustands-, Applikations-Logik-Beans)

Backend-Model

•eigentliche Geschäftslogik und -daten

•nicht genau spezifiziert

•Verwendung verschiedenartiger Beans (Systemzustands-, Applikations-Logik-Beans)

Page 21: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

21Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Formulare I

• Abstraktion über normalen HTML-Formularen

• mehrseitige Formulare („Wizard“)

• Verifizierung übermittelter Daten in ActionForm-Bean

• Fehlermechanismen bei falscher Eingabe

Formulare und ActionForm-BeansFormulare und ActionForm-Beans

Page 22: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

22Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Formulare II

<html:errors/>

<html:form name="logonForm" action="logon.do“ type="org.apache.struts.example.LogonForm">

<html:message key="prompt.username"/> <html:text property="username" size="16"/><br/>

<html:message key="prompt.password"/> <html:password property="password" size="16"/><br/>

<html:submit> <bean:message key="button.submit"/> </html:submit>

<html:reset> <bean:message key="button.reset"/> </html:reset></html:form>

Beispiel JSP

Page 23: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

23Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Formulare III

import org.apache.struts.action.ActionForm;

public class LogonForm extends ActionForm{

protected String username; protected String password;

public void setUsername(String user){ username = text; }

public String getUsername(){ return username; }

public void setPassword(String pwd){ password = pwd; }

public String getPassword(){ return password; }}

Beispiel ActionForm-Bean

Page 24: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

24Frameworks zur Implementierung von Hypertext Anwendungen

Struts – Validator/Dynaforms

• dynamische Formulare• DynFormBean: generische Getter/Setter• Deklaration in XML• Validierung mit regulären Ausdrücken

Page 25: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

25Frameworks zur Implementierung von Hypertext Anwendungen

Struts - Fazit

• sehr übersichtlich (im Kern nicht mehr als 10 Klassen)• leicht zu verstehen• flexibel, stabil• große Freiräume für Entwickler ↔ Gefahr falscher

Implementierung

Zukunft?• wichtigstes Framework im Jakarta Projekt (Konkurrent Turbine)• Integration in JSTL• Integration in JavaServer Faces

Page 26: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

5. Weitere Apache Frameworks

Turbine, Jetspeed, Cocoon

Page 27: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

27Frameworks zur Implementierung von Hypertext Anwendungen

Weitere Apache Frameworks

Turbine:• seit 1999 Teil des Jakarta Projekts• erweitertes MVC: „Model 2+1“• Entwicklungsunterstützung durch:

- Service Framework Fulcrum- Java Caching System JCS- Projektverwaltungs- und Dokumentationstool Maven- objektrelationales Tool Torque

Jetspeed:• Portal-Framework, basiert auf Turbine• Entwicklung so weit wie möglich ohne Programmierung• Seitenkonzept: Portlets

Cocoon:• Portal-Framework, komplett XML-basiert• „Pipelines“-Konzept: versch. XML-Technologien

hintereinander bereiten Ausgabe auf

Page 28: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

6. XForms

Geschichte, Ziele, Architektur, Praxis

Page 29: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

29Frameworks zur Implementierung von Hypertext Anwendungen

XForms - Geschichte

• 1993 veröffentlicht

• ausreichend für damalige Ansprüche

Herkömmliche HTML-FormulareHerkömmliche HTML-Formulare

<form name=„LoginForm" method="post“ action="http://localhost:8080/swt/manager.UebManager"> Login: <input type="text" name="login" maxlength="12" size="12"><br> Passwort: <input type="text" name=„pwd" maxlength=“12“ size=“12"><br> <input type="submit" name="submit" value=“Einloggen"></form>

Beispiel:

Probleme:

- fehlendes getrenntes Datenmodell- Eingabe-Validierung umständlich- Initialisierung- nur „flache“ Daten (Variable/Wert-Paar)

Page 30: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

30Frameworks zur Implementierung von Hypertext Anwendungen

XForms - Ziele

• transparente Unterstützung vieler unterschiedlichster Endgeräte:PC/Workstation, PDA, Set-Top-Box, Mobiltelefon ...

• mehrere Eingabemöglichkeiten: Text, Sprach-/Schrifterkennung

heutige Anforderungenheutige Anforderungen

Ziele von XFormsZiele von XForms

•Wiederverwendbarkeit

•Plattformunabhängigkeit

•Universalität

Page 31: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

31Frameworks zur Implementierung von Hypertext Anwendungen

XForms - Übersicht

• kein eigenständiger Dokument-Typ• eingebettet in andere Markup-Sprachen (bspw. XHTML

2.0)• Darstellung in HTML, WML, VoiceXML ....• komplexe (hierarchische) Datenstrukturen möglich• starke Typisierung• Formular kann sich über mehrere Seiten erstrecken• nicht auf einen Request/Response-Zyklus beschränkt;

→ Autorisierungskette realisierbar

Page 32: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

32Frameworks zur Implementierung von Hypertext Anwendungen

XForms - Architektur

• Model:XML Schema, hierarchisch, Modellierung von (dynamischen) Abhängigkeiten möglich,

• User-Interface:visuelle Darstellung, verschiedene Oberflächen für unterschiedliche Endgeräte;

• Instance-Data:konkrete, vom Client übermittelte, FormulardatenAdressierung der Elemente mit XPath,Übertragung mit XForms Submit Protocol

Page 33: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

33Frameworks zur Implementierung von Hypertext Anwendungen

XForms – Praxis I

Beispiel-FormularBeispiel-Formular

<xforms:model> <xforms:instance> <subscription> <name/> <matrikel/> <abschluss/> </subscription> </xforms:instance> <xforms:submission action="http://localhost:8080/swt/ manager.UebManager?action=SubscribeStudent“ method="post" id="submit"/></xforms:model>

Model:

<input ref="name"> <label>Name</label></input><input ref="matrikel"> <label>Matrikel-Nr.</label></input><select1 ref="abschluss"> <label>Abschluss</label> <item> <label>Diplom</label> <value>diplom</value> </item> <item> <label>Master</label> <value>master</value> </item></select1><submit submission="submit"> <label>Einschreiben</label></submit>

Interface

<subscription> <name>Franz Matschenkow</name> <matrikel>1234567</matrikel> <abschluss>diplom</abschluss></subscription>

Instance Data:

Page 34: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

34Frameworks zur Implementierung von Hypertext Anwendungen

XForms – Praxis II

...<subscription xmlns="de.myUniversity.myChair"> <name/> <matrikel/> <abschluss>diplom</abschluss></subscription>...

Namespaces und Standardwerte:

<xsd:schema ...>... <xsd:simpleType name="matrikel"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{7,8}"/> </xsd:restriction> </xsd:simpleType>...</xsd:schema>

Typisierung:

Page 35: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

35Frameworks zur Implementierung von Hypertext Anwendungen

XForms - Fazit

• Nachfolger der HTML-Formulare

• flexibel, mächtig

• Lern- und Zeitaufwand?

• Tool-Unterstützung notwendig

• Browser-Unterstützung notwendig• derzeit nur serverseitige Implementierungen verwendbar:

Chiba (http://chiba.sourceforge.net)

Page 36: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

36Frameworks zur Implementierung von Hypertext Anwendungen

Literatur

[1] H. Balzert „Lehrbuch der Software-Technologie“, 2002

[2] A. Holub „Building user interfaces for object-oriented systems“,http://www.holub.com, 1999

[3] E. Armstrong, J. Ball, S. Bodoff et al. „The J2EE 1.4 Tutorial“http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html, 2003

[4] „The Struts User’s Guide“, http://jakarta.apache.org/struts/userGuide

[5] Micah Dubinko, "XForms Essentials", O'Reilly 2003

[6] M. Dubinko, L. Klotz, R. Merrik, T. Raman „W3C Candidate Recommendation“,http://www.w3.org/TR/2002/CR-xforms-20021112/

Struts:http://jakarta.apache.org/struts

XForms:http://www.w3.org/MarkUp/Forms

Turbine:http://jakarta.apache.org/turbine

Jetspeed:http://jakarta.apache.org/jetspeed

Cocoon:http://cocoon.apache.org

Homepages:

Page 37: Frameworks zur Implementierung von Hypertext Anwendungen Thorsten Berger Diplomstudiengang Informatik 5. Semester Ein Vortrag im Rahmen des Problemseminars

37Frameworks zur Implementierung von Hypertext Anwendungen

Fazit

Fragen?Fragen?