Softwareentwicklung mit JAVA EE



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

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

4 Arbeiten mit einfachen Actions

Einleitung. Gliederung. Struts-Framework. Model-View-Controller-Pattern

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

Struts 2 Das Imperium schlägt zurück?

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

Datenverwaltung Darstellung Interaktion. WebPoint. Ein Framework zur Erstellung von webbasierten Verkaufsanwendungen. Torsten Walter. 10.

Web-Anwendungsentwicklung mit dem Delivery Server

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

Themen. Web Service - Clients. Kommunikation zw. Web Services

JSP und Servlet Programmierung

Nathan Burgener. Design by Contract. Modul SWE

Web- Applikationen. in Java-Web

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

Struts 2 Das Imperium schlägt zurück?

Application Frameworks

STRUTS - Einführung Kurs am Rechenzentrum Universität Stuttgart

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Programmierung von Client/Server- Anwendungen

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Struts Java-Framework für Webapplikationen

Vorkurs C++ Programmierung

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

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Typumwandlungen bei Referenztypen

Softwareentwicklung mit JAVA EE

Seite Out-Of-Band-Authentifizierung (OOBA) 8.1 Einleitung

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Java zur Realisierung von Internetanwendungen

Client-Server-Beziehungen

Große Übung Praktische Informatik 1

Javakurs zu Informatik I. Henning Heitkötter

Verteidigung gegen SQL Injection Attacks

Projekt Weblog :: Integration

Architektur des agimatec-validation Frameworks

Applet Firewall und Freigabe der Objekte

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Java: Vererbung. Teil 3: super()

Django - ein Python Web-Framework

Anwendung eines Enterprise Java Beans

Prinzipien Objektorientierter Programmierung

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Algorithmen und Datenstrukturen

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Adressen der BA Leipzig

Der lokale und verteilte Fall

Java - Webapplikationen

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Applets I. Grundlagen der g Applet-Programmierung

Nutzung von Log4J und Commons Logging

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

FH LU JEE Vorlesung SS Ralf Gitzel

Datenbanksysteme SS 2007

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Musterlösungen zur Klausur Informatik 3

Auszug aus JAX-WS Folien

3 Objektorientierte Konzepte in Java

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Scala kann auch faul sein

AJAX Implementierung mit Joomla!

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

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

Shibboleth IdP-Erweiterungen an der Freien Universität Berlin

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

BIF/SWE - Übungsbeispiel

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

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

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Eine Anwendung mit InstantRails 1.7

Java Einführung Abstrakte Klassen und Interfaces

Programmierkurs Java

Einführung in die Programmierung

Lösung zu Praktikum 1 -Programmierung eines Java Card Applets-

Handbuch - HotSpot-Sheriff Verwaltung

Jakarta Lucene. Eine Java-Bibliothek zur Suchindex-Erstellung. Seminararbeit Tilman Schneider

AK Medientechnologien 05 Delegation

Factory Method (Virtual Constructor)

Konfiguration und Deployment einer hochverfügbaren ADF Anwendung

Bearbeiten elektronische Rechnungen (Invoices)

WebService in Java SE und EE

DataTables LDAP Service usage Guide

Programmieren in Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Programmierung für Wirtschaftsinformatik

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Transkript:

Softwareentwicklung mit JAVA EE Beispiel Framework: Struts

Was ist? Open Source Framework zum Bau von Web Applikationen Home Page http://jakarta.apache.org/struts Teil des Apache Jakarta Project Unterstützt die MVC-Architektur Schwerpunkt liegt auf der Controller-Komponente Weitere Komponenten Tag-Libraries Validatoren Unterstützung für Sprachunabhängigkeit Historie Mai 2000 von Craig R. McClanahan begonnen Juli 2001, Struts 1.0 freigegeben Struts-2

Grundprinzip struts-config.xml definiert web.xml Regel für *.do Action bestimmen ActionServlet Folgeseite bestimmen FormBean Action Servlet- Container Antwort JSP-Seite Struts-3

Die Controller-Komponente Hauptkomponente ist ein Servlet der Klasse ActionServlet Definition durch eine Menge von ActionMappings URI Angabe mit Pfad Zugehörige Action-Klasse Geschäftslogik wird implementiert in Action-Klasse Unterklasse von org.apache.struts.action.action Übergabe von Formulardaten durch Instanzen von Form-Bean-Klassen Unterklassen von org.apache.struts.action.actionformbeans Struts-4

Implementierung des Controllers Ablauf Schreiben einer ActionForm Klasse zur Übergabe der Daten aus der View (optional) Schreiben einer Action Klasse für jeden logischen Request (Unterklasse von org.apache.struts.action.action) Konfigurieren eines ActionMapping-Eintrages (in XML) für jeden logischen Request. Die XML Konfigurationsdatei wird üblicherweise struts-config.xml genannt. Struts-5

Konfiguration des Controllers Definition der URLs, die auf Action-Klassen weitergeleitet werden sollen URL Klasse Weiterleitungen <struts-config> <action-mappings> <action path="/auswahl" type="action.auswahlaction"> <forward name="success" path="/auswahl.jsp"/> <forward name="error" path="/fehlerbehandlung.jsp"/> </action>... </action-mappings> </struts-config> Struts-6

Die Action-Klassen Nimmt den Aufruf entgegen und leitet weiter an Web-Seiten oder andere Actions import org.apache.struts.action.*; public class AuswahlAction extends Action { public ActionForward execute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {... return mapping.findforward("success"); Struts-7

Definition sprachabhängiger Textresourcen Problem: Sprachabhängige Texte in HTML <td> Benutzername : </td> Lösung: Struts Textresourcen mit bean Taglib Alternative: JSTL fmt <td> <bean:message key="anmeldung.user"/> : </td> Deklaration in struts-config.xml <struts-config> <action-mappings>...</action-mappings> <message-resources parameter="db.applicationresources"/> </struts-config> Struts-8

Sprachabhängige Texte 2 Default-Werte in db.applicationresources.properties Explizite Sprachdefinitionen - Beispiele db.applicationresources_de_de.properties anmeldung.user = Benutzername anmeldung.pw = Passwort db.applicationresources_en_gb.properties Auswahl der Sprache anmeldung.user = User Name anmeldung.pw = Password Übernahme der Steuerung durch Browsereinstellungen in JSP <html:html locale="true"> Alternativ: explizites Setzen des Session-Attributes org.apache.struts.action.locale Struts-9

Die FormBean Optionale JavaBean zur Unterstützung bei der Verarbeitung von formularartigen Seiten kann Werte während Session speichern validate und reset werden unterstützt Beispiel: import org.apache.struts.action.*; public class MyForm extends ActionForm { private String f1; // erfordert entspr. Get-/set-Methoden //... public ActionErrors validate (ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (f1 == null f1.length() == 0) { errors.add("f1", new ActionError("errors.f1.required")); //... return errors; <html:form> <html:text property="f1" /> <html:errors property="f1" />... </html:form> Struts-10

Nutzung FormBeam Deklaration in struts-config.xml <form-beans> <form-bean name="myformbean" type="form.myform"/>... </form-beans> Zuordnung zu Action <struts-config> <action-mappings> <action path="/auswahl" type="action.auswahlaction" name="myformbean" > <forward name="success" path="/auswahl.jsp"/> <forward name="error" path="/fehlerbehandlung.jsp"/> </action> </action-mappings> <message-resources parameter="db.applicationresources"/> </struts-config> Struts-11

alternative Form-Validierung Steht zur Verfügung, wenn von ValidatorForm abgeleitet wird import org.apache.struts.action.*; public class MyForm extends ValidatorForm { private String f1; // erfordert entspr. Get-/set-Methoden //... Definition der Regeln in validator-rules.xml zahlreiche vordefinierte Regeln Erweiterungen sind möglich Kann auch Code für Client-seitige Validierung enthalten Zuordnung der Forms/Felder zu Regeln: validation.xml Struts-12

Beispiel: validation.xml Validator-Plugin in struts-config.xml definieren <struts-config>... <plug-in classname="org.apache.struts.validator.validatorplugin"> <set-property property="pathnames" value="/web-inf/validator-rules.xml,/web-inf/validation.xml"/> </plug-in> </struts-config> Definition der Regeln in validation.xml <field property="pw" depends="required,minlength"> <msg name="required" key="errors.fehlt"/> <arg0 key="anmeldung.pw"/> <arg1 name="minlength" key="${var:minlength" /> <var><var-name>minlength</var-name> <var-value>3</var-value></var> </field> Struts-13

validator-rules.xml enthält zahlreiche nützliche vordefinierte Prüfungen required validwhen (Vergleich zweier Felder) mask (Prüfen gegen regulären Ausdruck) minlength, maxlength integer, short, byte, long, float,... date (Pattern kann mitgegeben werden) intrange, floatrange, doublerange creditcard email url Struts-14

Struts Tag Libraries besonders relevant: html-tags vereinfacht Erzeugung von HTML-Seiten ermöglicht Verwendung von FormBeans Beispiel: select mit optionscollection <html:form action="ausgabe.do"> <bean:message key="auswahl.katwahl"/> <html:select property="categoryid"> <html:optionscollection property="kategorien" value="categoryid" label="name"/> </html:select> <html:submit><bean:message key="auswahl.abschicken"/></html:submit> </html:form> Struts-15

Logging

Das Commons Logging Interface Vereinheitlicht verschiedene Logging APIs Verwendung If Log4J is there, use it. If JDK 1.4 is there, use it. Otherwise, use SimpleLog. import org.apache.commons.logging.log; import org.apache.commons.logging.logfactory;... public class Foo { private static Log log = LogFactory.getLog(Foo.class); //... public void setbar(bar bar) { if (log.istraceenabled()) { log.trace("setting bar to " + bar); this.bar = bar; Struts-17

Das Commons Logging Interface 2 Funktionen für das Logging log.fatal(object m); log.fatal(object m, Throwable t); log.error(object m); log.error(object m, Throwable t); log.warn(object m); log.warn(object m, Throwable t); log.info(object m); log.info(object m, Throwable t); log.debug(object m); log.debug(object m, Throwable t); log.trace(object m); log.trace(object m, Throwable t); Zusatzfunktionen log.isfatalenabled(); log.iserrorenabled(); log.iswarnenabled(); log.isinfoenabled(); log.isdebugenabled(); log.istraceenabled(); Struts-18

Java Standard Logging: Levels In absteigender Dringlichkeit SEVERE (höchster Wert) WARNING INFO CONFIG FINE FINER FINEST (niedrigster Wert) Struts-19

Java Standard Logging: Konfiguration Konfiguration Ein Default-File im jdk unter <jre>/lib/logging.properties Festlegen eines eigenen Konfig-Files über die System-Property java.util.logging.config.file Aufruf: java -Djava.util.logging.config.file=... Angabe einer Klasse als Konfigurations-Input Siehe auch: http://java.sun.com/javase/6/docs/technotes/guides/logging/ Struts-20

Einsatz Logging Was loggen? Ein-/Austritt aus Funktionen Beim Eintritt: übergebene Parameter Beim Austritt: Infos über das Ergebnis Beispiel: DB-Funktion public static Collection<PersAbtDTO> findbyabtname(connection cn, String name) { if (log.isinfoenabled()) log.info ("findbyabtname name="+ name);... try {... catch (SQLException e) { log.error("findbyabtname DB-Fehler:", e); if (log.isdebugenabled()) log.debug ("findbyabtname found:"+((erg == null)? 0 : erg.size())); return erg; Struts-21