TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird...

31
TURBINE

Transcript of TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird...

Page 1: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

TURBINE

Page 2: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt

Page 3: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Architektur – MVC Model View Controller

Page 4: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Architektur HTML und Java vermischen JSP (Java Server Pages) Tools Torque Velocity

Page 5: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

KonzeptePAGE

LAYOUTNAVIGATION

NAVIGATION

SCREEN

ACTIONS+

LOADERS

Page 6: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Vom Request zur Response...

Page 7: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Warum Velocity? Java-based template engine Integration in Turbine Ermöglicht die Trennung zwischen:

- Geschäftslogik- Darstellung

Im Gegensatz dazu: JSP Mit Velocity einfacher zu arbeiten!!

Page 8: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Noch einmal MVC

Page 9: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (1) Screen

Java Code in WEB-INF/classes compilieren .vm – Template mit selben Namen erzeugen

Unter templates/screens/… speichern TurbineResources.properties editieren

unter WEB-INF/confmodule.packages=org.apache.turbine.modules, org.mycompany.newapp.modules „classpath“ für Turbine

Page 10: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (2) Ausführung

Request z.B. http://localhost:8080/newapp/.../Index.vm

Index class wird ausgeführt (Klasse muss von VelocityScreen erben)

Velocity Template Engine wird aufgerufen und Index.vm ausgeführt

Page 11: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (2) Seitengenerierung

.java

.vm

bauen Context

HTML

Torque

DB

erben von VelocityScreen/Navigation

Page 12: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (2) Beispielpublic class Index extends SecureScreen{ public void doBuildTemplate(RunData data, Context context) { context.put("entries", getEntries()); }

private List getEntries() { try { Criteria criteria = new Criteria(); return RdfPeer.doSelect(criteria); } catch (Exception e) { return null; } }}

Page 13: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (2) Beispiel...#set ( $headings = ["Title", "Dept", "Author", "Url","Body"," "] )

#if ($entries)<table> <tr> <td> <table cellspacing="1" cellpadding="1"> <tr> #foreach ($heading in $headings) #headerCell ($heading) #end </tr> #foreach ($entry in $entries) <tr> #entryCell ($entry.Title) #entryCell ($entry.Dept) #entryCell ($entry.Author) #entryCell ($entry.Url) #entryCell ($entry.Body) <td><a href="$link.setPage("Form.vm").addPathInfo("rdfid", $entry.RdfId)">Edit</a></td> ...

Page 14: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (3) Layout und Navigation

Java Klassen erben von VelocitySiteLayout und VelocitySiteNavigation

.vm Files werden im templates/layout bzw. /navigation Verzeichnis gespeichert

Page 15: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (3) Request

Insert.vmrequest: screen.vm

Default.vm (Layout)

DefaultTop.vm

Menu.vm

DefaultBottom.vm

Page 16: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (4) Actions

Aufruf einer Action Java-File wird ausgeführt, z.B http://.../Index.vm/action/SQL

Erst dann wird die Screen-Class und das .vm-Template ausgeführt

Page 17: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Eine Seite mit Velocity bauen (4) Beispielpublic class SQL extends SecureAction{ public void doInsert(RunData data, Context context) throws Exception { Rdf entry = new Rdf(); data.getParameters().setProperties(entry); entry.save(); }

public void doUpdate(RunData data, Context context) throws Exception { Rdf entry = new Rdf(); data.getParameters().setProperties(entry); entry.setModified(true); entry.setNew(false); entry.save(); }

Page 19: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Services in Turbine Servicearchitektur „Fulcrum“ Unterstützen MVC-Komponenten Zahlreiche Services für Web-Anwendungen Services sind Einzelanwendungen Selbstaufrufend Ressourcensparend Service kann auch ohne Turbine ausgeführt

werden

Page 20: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Übersicht über Services (1) Assembler Broker Service Cache Service Castor Service FreeMarker Service Intake Service JSP Service Localization Service Logging Service

Page 21: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Übersicht über Services (2) MimeType Service Pool Service Resources Service RunData Service Scheduler Service Security Service Template Service Upload Service

Page 22: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Übersicht über Services (3) Velocity Service XSLT Service UI-Manager Service

http://jakarta.apache.org/turbine/turbine-2.3/services/index.html

Page 23: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

UI Manager (1) Service für die Benutzerschnittstelle

Ähnlich den CSS-Files

Wird in Template-Files eingebunden

Eigene Skin-Files

Page 24: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

UI Manager (2) pathoftdk/webapps/newapp/resources/

ui/skins/default/skin.props

z.B.: bgcolor = #FFFFFF

Template-File öffnen

<img src=„$ui.image($ui.imagename)“>

Page 25: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Torque – ein Überblick

1. Datenbankunabhängige XML-Beschreibung des Datenschemas

2. Generierung von Klassen

Datenbankabfragen ohne explizites SQL möglich

Unterstützung vieler Datenbankanbieter

Page 26: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Sicherheit und Benutzerkonzept (1)

Ausgeklügeltes Benutzerkonzept mit Rechten: individuelle Aktionen Rollen: Vereinigung von verschiedenen

Rechten Gruppen: weitere Aufteilung in horizontaler

Richtung

Page 27: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Ablauf des Benutzerkonzeptes (1)

Bedingungen: Auszuführende Methoden mit Namensmuster do<Name der Action>

Erben von SecureAction, SecureScreen, usw.

Page 28: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Ablauf des Benutzerkonzeptes (2)

Sollen Actions in Turbine vor unbefugter Ausführung geschützt werden, so müssen sie von der Klasse SecureAction erben, in der die Sicherheitsabfragen gekapselt sind.

Page 29: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Ein kurzer Blick in die Datenbank TURBINE_USER TURBINE_PERMISSION TURBINE_ROLE TURBINE_GROUP TURBINE_ROLE_PERMISSION TURBINE_USER_GROUP_ROLE

Page 30: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

Beispiel zur Handhabung//User von RunDataUser user = data.getUser();

// AccessControlList Object von RunDataAccessControlList acl = data.getACL();

// hat sich der User eingeloggt und hat er die benötigten Rechte?if( user.hasLoggedIn() && acl.hasPermission("viewinvoice", "Accounting") ){ data.setMessage("You have permission to view the invoices."); setTemplate(data, "Invoice.vm");}else{ data.setMessage("You do not have Permission to view the Invoices"); setTemplate(data, "UnauthorizedRequest.vm");}

Page 31: TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.

EndeVielen Dank für Eure

Aufmerksamkeit!