Started by the Italian student Stefano Mazzocchi. Java Apache XML (JAX) Lektion 11: Cocoon. 4. Servlet JSP Framework Struts

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

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI

bitflux CMS ein crossmedia-fähiges opensource System ein Vortrag von Marcel Linnenfelser

Die Technologie der Mumie

Quo vadis Web- Anwendungsentwicklung? XML based Webdevelopment

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

JSP und Servlet Programmierung

Cocoon Tutorial. by Stephan Niedermeier

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

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

XSL und XSLT. Inhalt. Mathias Heilig XSL Übersicht. Formatierungsprozess. Sprachbeschreibung. Vorführung Resümee

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML

<< WSDL >> Cocoon. << Einführung in das Cocoon Framework >> Cocoon is the glue for your web application development needs. XML mit Java OpenSource

Softwareentwicklung mit Enterprise JAVA Beans

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

Henning Mersch. Tomcat. im Rahmen des RBG-Seminar SS04. Apache-Jakarta-Tomcat-Server RBG-Seminar 1/17

Cocoon 2 Das XML Publishing Framework im Überblick

FRANZIS PROFESSIONAL SERIES. Herbert Burbiel. SOA & Webservices. ~ in der Praxis. 197 Abbildungen

Web-Anwendungsentwicklung mit dem Delivery Server

Struts 2 Das Imperium schlägt zurück?

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

Zukunft der Oracle Applikationsentwicklung: ADF & XDB

Web- Applikationen. in Java-Web

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

XML und Dokumentenmanagement

Workflow, Business Process Management, 4.Teil

Vergleich der Model 2 Umsetzung von Struts und Cocoon

Entwicklung von Web-Anwendungen auf JAVA EE Basis

E-Learning in der Mund-, Kiefer- und Gesichtschirurgie: elektronisches Lehrbuch und interaktive Fallpräsentation mit XML

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

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

Willkommen. Projektidee. Informationsablage Docs Softwarelizenzen Meetingprotokolle

Transformation von RailML timetable Daten zu SVG mittels XSLT zur Darstellung von Zeit-Weg-Liniendiagrammen

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

GATE General Architecture for Text Engineering. Alexander Hein & Erik Dießler (VL Text Analytics )

Java und XML Grundlagen, Einsatz, Referenz

Stephan Niedermeier. Cocoon 2 und Tomcat. XML-Publishing mit dem Open-Source-Framework. Galileo Press

Enterprise Application Integration Erfahrungen aus der Praxis

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

Web (Site) Engineering (WebSE)

Java - Webapplikationen

Extensible Stylesheet Language Transformations XSLT

Application Frameworks

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel

Internetanbindung von Datenbanken

Liste V Enterprise JavaBeans

6.9 Java Server Pages

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

XML und SOAP Einführung und Grundlagen

Einführung in XML. Seminarunterlage. Version 3.05 vom

Scalable Vector Graphics (SVG)

elml Flexibilität und Nachhaltigkeit dank XML

Java und XML 2. Java und XML

Organisation und Systeme SOA: Erstellung von Templates für WebService Consumer und Provider in Java

Wege zur Anzeige. XSL die extensible Stylesheet Language. Wege zur Anzeige. Folie 1. Institut für Dokumentologie und Editorik

Existierende Systeme I Bibliotheken & Frameworks

Benutzerhandbuch TABLE OF CONTENTS 1. Benutzerhandbuch Bedienung

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

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

Wiederholung: Beginn

Entwurf und Prototypische Implementierung einer Data Mashup Plattform. Abschlussvortrag Projekt-INF

<Insert Picture Here> Schnelle Anwendungen mit Oracle Application Express

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Tomcat Konfiguration und Administration

) Artikel ) Webframeworks - Teil 2 Cocoon, Jetspeed, Struts und Co. AUTOR. ABSTRACT ) Entwicklung ) ) Schulung ) Orientation in Objects GmbH

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

Flexibilität und Multichannel technische Herausforderungen an Multichannel Systeme

Softwaretechnik 2 - XML -

Weblog. Projektdokumentation. Java NDK Fallstudie. Identifikation: ID Status: in Arbeit Version: 00.11

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

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

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

Federated Identity Management

Thomas Stark, Karsten Samaschke. Das J2EE-Codebook

Grails. Weiterführende Themen zu Internet- und WWW-Technologien. Matthias Springer. 06. Juni 2011

Internet und WWW Übungen

Zukunft der Oracle Applikationsentwicklung: BC4J & XML

Inhaltsverzeichnis. Zusammenfassung Wydler

JSP vs. PHP. Ein persönlicher Vergleich. EQUIcon Software GmbH Jena, Jörg Spilling Frankfurter Treffen Agenda

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

Online-Publishing mit HTML und CSS für Einsteigerinnen

XML Grundlagen Sommersemester 2013

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

DB-Aspekte des E-Commerce Schwerpunkt: Techniken. Servlets und JavaServer Pages


Kompendium der Web-Programmierung

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis

Gut zu wissen... Lorenz Keller Server Technologies Competence Center Nord

XML Werkzeug XML Spy. Frank Heininger Axel Labuschke

Präsentations-Framework mit Cocoon HighEnd-Technology requires HighEnd-Competence WidasConcepts

Vergleich automatisierbarer XML-Satzsysteme

Die österreiche Bürgerkarte Technik aus Sicht der Applikation

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

Web 2.0 Software-Architekturen

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

Transkript:

Cocoon is a powerful framework for XML web publishing which brings a whole new world of abstraction and ease to consolidated web site creation and management based on the XML paradigm and related technologies. Started by the Italian student Stefano Mazzocchi 11-1 1. Grundlagen 2. Servlets 3. JSP 4 1.1. JAR Files 4 1.2. TCP/IP, Sockels 4 1.3. HTTP 4 1.4. Java Web Service Developer Pack (WSDP) 4 1.5. Ant 4 1.6. JAVA Fehlermeldungen 4 2.1. Servlet Framework 4 2.2. Tomcat Servlet Container 4 2.3. Lebenszyklus 4 2.4. Hello World Servlet 4 2.5. Implizite Objekte 4 2.6. Einfache Servlets 4 2.7. Konfiguration (web.xml) 4 2.8. Anfrage weiterleiten 4 2.9. Filter 4 2.10. Cookies 4 2.11. Session Tracking 4 3.1. Architektur 4 3.2. Syntax, Skripte, Direktiven 4 3.3. Implizite Objekte 4 3.4. Aktionen 4 3.5. JavaBeans 4 3.6. Custom Tags 4. Servlet JSP Framework Struts 5. XML 4 4.1.Architektur 4 4.2.Planung einer Webanwendung 4 4.3.Implementierung 4 5.1.Grundlagen 4 5.2.DTD & Schemata 4 5.3.Parser (SAX, DOM) 4 5.4.XPath 4 5.5.XSLT 4 5.6.XSL-FO 6. XML Framework Cocoon 4 6.1.Architektur 4 6.2.Cocoon Beispiel 4 6.3.Sitemap 4 6.4.XSP 7. JAVA Webservices 4 7.1.SOAP 4 7.2.UDDI / ebxml 4 7.3.WSDL 4 7.4.Implementierung eines Webservice 11-2 1

Was ist cocoon? XML publishing framework Verwendet XML und XSLT Separation of Concerns, d. h. Trennung von Inhalt, Logik und Darstellung Datenquellen: Filesysteme, RDBMS, LDAP, native XML Datenbanken, und Netzwerkbasierte Quellen Content Ausgabe in HTML, WML, PDF, SVG, RTF,... 11-3 Was ist cocoon? Cocoon ist als Servlet implementiert Als Teil des Apache XML Projekts integriert cocoon unter anderem 4Xerces - XML Parser Apache Cocoon 2 Framework (XML Publishing) 4Xalan - XSLT Prozessor 4FOP XSL Print Formatter Apache Avalon Framework (Component Management) 4 Batik - Scalable Vector Graphics (SVG) Toolkit Apache Xalan 4 (XSLT Processor) Apache Xerces (XML Parser) Custom Components Apache LogKit (Logging) Apache FOP (XSL:FO) Apache Batik (SVG) Other Projects 11-4 2

SoC Separation of Concerns pyramid of contracts Klare Trennung der verschiedenen Arbeitsbereiche in einem Entwicklungsteam Management: Inhalt, Abläufe, Aufbau Content: redaktioneller Teil aller Inhalte Logic: Integration der dynamischen Inhalte Style: Präsentation, look & feel, Grafik Austausch nach bestimmten Regeln möglich, die vom Management gesteuert werden 11-5 SoC Separation of Concerns Beispiel <page> <content> <para>today is <dynamic:today/> </para> </content> </page> <dynamic:today/> regelt die Logik Inhalt Beziehung 11-6 3

SoC Separation of Concerns Content: XML Files, RDBMS, LDAP, native XML Datenbanken, Netzwerkbasierte Quellen, Streams Style: XSL Files Logic: in XSL Files als XSP instructions... <xsp:logic> // Java Code, SQL,... String msg = "Hello, world!"; </xsp:logic>... XSP kann auch in Logicsheets oder in Taglibs definiert und dann in XSL Files als Komponente wiederverwendet werden 11-7 Pipeline request Request nach Muster verarbeiten XML Source generieren Generator Transformation nach XSL-Vorgaben Evtl. Weitere XML Quellen aggregieren Ausgabe in ein bestimmtes Format Transformer Aggregator stylesheet Serializer 11-8 4

Request - Response Zyklus Request Sitemap Request Transformer Generator Transformer Serializer XML DB XSL Response (HTML) 11-9 Sitemap Die Sitemap entält Konfigurationsinformationen für die Cocoon engine Matchers für URI Patterns Selectors Unterscheidungen im Pipeline-Ablauf Generators XML Sources einlesen Transformers XML Transformationen Serializers Ausgabeformat definieren Die Sitemap wird zu einer ausführbaren Klasse kompiliert 11-10 5

Sitemap - Matcher <map:match pattern="vortrag/**"> <map:mount check-reload="yes"src="vortrag/" uriprefix="vortrag"/> In der main-sitemap können weitere Sitemaps für Unterprogramme gemountet werden Baumstruktur der Sitemaps für einfachere Wartung 11-11 Sitemap processing pipeline <map:match pattern="hello.html"> <map:generate src="hello-page.xml"/> <map:transform src="simple-page2html.xsl"/> <map:serialize type="html"/> URI pattern hello.html erkennen Aus der Source hello-page.xml xml auslesen Nach den Regeln des XSL stylesheets Transformieren Als html Ausgabe serialisieren 11-12 6

Sitemap Selector <map:match pattern="hello.html"> <map:generate src="hello-page.xml"/> <map:select> <map:when test="wap"> <map:transform src="simple-page2wml.xsl"/> </map:when> <map:when test="explorer"> <map:transform src="simple-page2html.xsl"/>... 11-13 Selector HTML Capable Device HTML Stylesheet Serialize HTML File Generator Browser Selector WML Stylesheet Serialize WML Single Entry Point: E.g. http://server/cocoon/helloworld WML Capable Device 11-14 7

Einfache Anwendung 11-15 Wie geht s? 1. Content <?xml version="1.0"?> <page> <title>hello</title> <content> <para>this is my first Cocoon2 page!</para> </content> </page> 11-16 8

Wie geht s? 2. Style <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="page"> <svg width="450" height="160"> <defs> <filter id="blur1"><fegaussianblur stddeviation="3"/></filter> <filter id="blur2"><fegaussianblur stddeviation="1"/></filter> </defs> <g title="this is a tooltip"> <rect style="fill:#0086b3;stroke:#000000;stroke-width:4;filter:url(#blur1);" x="30" y="30" rx="20" ry="20" width="400" height="80"/> <xsl:apply-templates/> </g> </svg> </xsl:template> <xsl:template match="para"> <text style="fill:#ffffff;font-size:24;font-family:trebuchetms- Bold;filter:url(#blur2);" x="65" y="80"> <xsl:apply-templates/> </text> </xsl:template> </xsl:stylesheet> 11-17 Wie geht s? 3. Logic - 4. Management <map:match pattern="hello.svg"> <map:generate src="docs/samples/hello-page.xml"/> <map:transform src="stylesheets/page/simple-page2svg.xsl"/> <map:serialize type="svg2jpeg"/> 11-18 9

weitere Hello World Beispiele <map:pipeline> <map:match pattern=""> <map:redirect-to uri="welcome"/> <map:match pattern="welcome"> <map:generate src="docs/samples/samples.xml"/> <map:transform src="stylesheets/simple-samples2html.xsl"/> <map:serialize/> <map:match pattern="hello.html"> <map:generate src="docs/samples/hello-page.xml"/> <map:transform src="stylesheets/page/simple-page2html.xsl"/> <map:serialize type="html"/> <map:match pattern="hello.wml"> <map:generate src="docs/samples/hello-page.xml"/> <map:transform src="stylesheets/page/simple-page2wml.xsl"/> <map:serialize type="wap"/> 11-19 Sitemap <?xml version="1.0"?> <map:sitemap xmlns:map= "http://apache.org/cocoon/sitemap/1.0"> <map:components/> <map:views/> <map:resources/> <map:pipelines/> <map:action-sets/> </map:sitemap> Action JAVA Program 11-20 10

SVG erzeugen <map:match pattern="hello2.svg"> <map:generate src="docs/samples/hello-page.xml"/> <map:transform src="stylesheets/page/simple-page2svg.xsl"/> <map:serialize type="svgxml" /> 11-21 Verschieden Ausgaben <?xml version="1.0"?> <molecule convention="mdlmol" id="histamine" title="histamine"> <date day="23" month="11" year="1995"> </date> <atomarray> <atom id="a1"> <string builtin="elementtype">c</string> <float builtin="x2">-0.9175</float> <float builtin="y2">-0.7733</float> </atom> <atom id="a2"> <string builtin="elementtype">c</string> <float builtin="x2">0.2185</float> <float builtin="y2">-1.2277</float> </atom> <atom id="a3"> 11-22 11

Sitemap Legi I <?xml version="1.0"?> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <!-- =========================== Components ================================ --> <map:components> <map:generators default="file"/> <map:transformers default="xslt"/> <map:readers default="resource"/> <map:serializers default="html"/> <map:selectors default="browser"/> <map:matchers default="wildcard"/> <map:serializer name="fo2ps" src="org.apache.cocoon.serialization.fopserializer" mime-type="application/postscript"/> <map:serializer name="fo2pdf" src="org.apache.cocoon.serialization.fopserializer" mime-type="application/pdf"/> <map:serializer name="wap" mime-type="text/vnd.wap.wml" src="org.apache.cocoon.serialization.xmlserializer"> <doctype-public>-//wapforum//dtd WML 1.1//EN</doctype-public> <doctype-system>http://www.wapforum.org/dtd/wml_1.1.xml</doctype-system> <encoding>ascii</encoding> <omit-xml-declaration>yes</omit-xml-declaration> </map:serializer> </map:components> <!-- =========================== Pipelines ================================= --> 11-23 Sitemap Legi II <map:match pattern="*.*.html"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_html.xsl"/> <map:serialize type="html"/> <map:match pattern="*.*.pdf"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_pdf.xsl"/> <map:serialize type="fo2pdf"/> <map:match pattern="*.*.ps"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_pdf.xsl"/> <map:serialize type="fo2ps"/> <map:match pattern="*.*.wml"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_wml.xsl"/> <map:serialize type="wap"/> Institut für Informatik 11-24 12

Beispiele http://www.urlaubstage.de http://www.bethe1.com/cocoon/asp1/2/index.htm http://www.sparkasse-gelsenkirchen.de/sunshine/vgs/index.xhtml 11-25 extensible Server Pages (XSPs) Analog zu JSP nur Trennung von Code Logic Presentation 11-26 13

extensible Server Pages II 11-27 XSP Bsp. I <?xml version="1.0" encoding="iso-8859-1"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp"> <xsp:logic> static private int counter = 0; private synchronized int count() { return counter++; } </xsp:logic> <page> <p>i have been requested <xsp:expr>count()</xsp:expr> times.</p> </page> </xsp:page> 11-28 14

XSP Bsp. II <?xml version="1.0" encoding="iso-8859-1"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:xsp-request="http://apache.org/xsp/request/2.0" xmlns:log="http://apache.org/xsp/log/2.0" xmlns:capture="http://apache.org/cocoon/capture/1.0"> <page> <log:logger name="xsp-sample" filename="xsp-sample.log"/> <log:debug>jax: start jax page</log:debug> <title>a Simple XSP Page</title> <content> <capture:fragment-variable name="page_part"> <para>these 2 paragraphs were generated at the start of the XSP, and captured for insertion at the end.</para> <para>brought to you by Cocoon2 at <xsp:expr>new Date()</xsp:expr>.</para> </capture:fragment-variable> <para>i was requested as the URI: <b><xsp-request:get-uri as="xml"/></b></para> 11-29 XSP Bsp. II <para>the following list was dynamically generated:</para> <ul> <xsp:logic> <![CDATA[ for (int i=0; i<3; i++) { ]]> <li> Punkt: <xsp:expr>i</xsp:expr> </li> <![CDATA[ } ]]> </xsp:logic> </ul> <xsp-request:get-parameter-values name="name"/> <xsp-request:get-parameter-names/> <para> Header "user-agent" as String: <xsp-request:get-header name="user-agent"/> </para> <xsp:expr>page_part</xsp:expr> </content> <log:debug>processing the end of the JAX page</log:debug> </page> </xsp:page> 11-30 15

Model 1 in the servlet world HTTP request JSP page template HTTP response Java bean Data source 11-31 Model 1 in Cocoon HTTP request Page template Pipeline HTTP response Data source Cocoon 11-32 16

Model 2 in the servlet world (Struts) HTTP request Controller servlet instantiates HTTP response JSP page template Java bean Data source 11-33 Benefits of Model 2 Logic and controlling the flow of pages are separated from presentation Uses the well-understood Model-View- Controller pattern Easier to scale as the application (read number of pages) grows 11-34 17

Control flow: MVC+ for Cocoon? HTTP request HTTP response 1 Controller 2 flow script 4 5 6 Pipeline Business logic Context 3 Data source 11-35 Quellen Cocoon Homepage: http://xml.apache.org/cocoon/index.html Apache XML Project: http://xml.apache.org Cocoon howtos: http://www.cocooncenter.org Cocoon tips: http://www.galatea.com/flashguides/cocoon-tips-2.xml 11-36 18