Home
Dokument_48. - Publication Server of HTWG Konstanz
Contents
1. _jspDestroy lt html gt lt html gt HTML Seite Serviet JSPSeite Abbildung 2 2 Anfrage einer JSP Seite Grunds tzlich kann jegliche Art von Information z B XML oder WML Dokumente erzeugt werden Da bei Web Applikationen der Client i d R ein Browser ist spreche ich hier von HTML Dokumenten vgl Tura01 6 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe Der grosse Nachteil von Servlets besteht in der Art der Generierung von Dokumenten So muss beispielsweise jede einzelne Zeile eines HTML Dokuments per printin Befehl aus dem Java Quellcode heraus generiert werden Das macht es f r Web Designer extrem schwer die Benutzeroberfl che zu entwickeln In Java Server Pages k nnen HTML Tags und Java Code gemischt werden JSPs sind HTML Seiten in die Java Code eingebettet ist So k nnen Web Designer und Java Entwickler leichter am gleichen Dokument arbeiten JSP Quellcode kann in jedem beliebigen HTML Editor bearbeitet werden weil er nur aus Tags besteht Java Server Pages sind also ideal dazu geeignet textuelle Inhalte zu erzeugen und werden haupts chlich dazu benutzt die Benutzerschnittstelle zu pr sentieren und Benutzereingaben zu berpr fen Sie bilden die Schnittstelle zwischen Client und dem Rest der Web Applikation Servlets sind entweder Gesch ftsdaten oder Web bezogen Allgemein formuliert ist ein Servlet immer dann Web bezogen wenn ein Client es direkt
2. Minuten dfl format mins 72 System out printin Requests Sekunde dfl format rps 73 74 75 public void run Diese Methode wird f r jeden Thread einmal ausgef hrt 76 77 try 78 79 Request auf die uebergebene URL 80 for int i 0 i lt REQUESTS_PER_THREAD i 81 82 Seite in einen Buffer einlesen 83 InputStream in url openStream 84 ByteArrayOutputStream out new ByteArrayOutputStream 85 byte buffer new byte 4096 86 int len 87 while len in read buffer 1 88 89 out write buffer 0 len 90 91 in close 92 93 94 catch Exception e 95 96 e printStackTrace 97 98 99 Listing 5 1 Java Client fiir die Messung der Performance Die hier verglichenen Varianten laufen beide auf dem gleichen Server und benutzen beide die gleiche Datenbankanbindung Da der WebSphere Server von mehreren Applikationen gleichzeitig benutzt wird und zudem die Datenbankinstanz nicht exklusiv genutzt werden 70 Einsatz des J2EE Frameworks Jakarta Struts Erkenntnisse kann k nnen Schwankungen in den Messungen durch Einfl sse von aussen auftreten Auch die Geschwindigkeit der Netzwerkverbindung des Clients zum WebSphere Server bzw zwischen WebSphere Server und Datenbank spielt eine Rolle Um diese Einfl sse m glichst gering zu halten und trotzdem aussagef hige Ergebnisse zu ermitteln wurden die Messungen an verschiedenen Tageszeiten
3. lt taglib location gt WEB INF struts template tld lt taglib location gt lt taglib gt Definiert werden m ssen nur diejenigen Tag Libraries die in den JSPs benutzt werden 3 7 Struts Klassen und Sequenzdiagramm UML Dieses Kapitel beschreibt das Zusammenspiel der Klassen des Frameworks Zum Entwickeln einer einfachen Struts Applikation ist das Wissen dar ber nicht unbedingt erforderlich Allerdings vervollst ndigen die Diagramme das nach der Lekt re der ersten Kapitel entstandene Bild ber Struts Der Leser erh lt einen Eindruck ber die interne Arbeitsweise des Frameworks Folgende Abbildung zeigt das UML Klassendiagramm der Struts Klassen im Package org apache struts action weiss dargestellt In der Abbildung blau dargestellt sind diejenigen Klassen die der User selbst erstellen muss User Klassen d Struts Controller 1 senletActionServlet ActionSerdet ActionForm servietActionSerlet mappings ActionMappings orwards ActionF onwards formBeans ActionFormBeans validate ActionErrors saveErrors void processActionForm ActionForm perform ActionForward processPopulate void rerdltes eerenteee processValidate boolean pp pping defined in struts config xml ActionError key String Q UserActionForm values Object Application global forwards definition of ActionForm beans property String ActionFormBeans ActionFo
4. Das Struts Framework beinhaltet benutzungsdefinierte Tags die automatisch Formularfelder aus einem ActionForm Bean heraus bef llen k nnen Das einzige was die meisten Java Server Pages ber den Rest des Frameworks wissen m ssen sind die richtigen Feldnamen und das Ziel an welches das Formular geschickt werden soll Nachrichten z B die Nachrichten die von einem Action Objekt gesetzt werden k nnen ausgegeben werden indem ein einziges benutzungsdefiniertes Tag verwendet wird Weitere applikationsabh ngige Tags k nnen definiert werden um Details der Implementierung f r die Entwickler der Views unsichtbar zu machen Die Tags im Struts Framework wurden so entworfen dass sie die F higkeiten der Java Plattform bez glich der Internationalisierung nutzen Alle Feldbezeichnungen und Nachrichten k nnen aus einer Nachrichten Ressource bezogen werden wobei Java automatisch die richtige Ressource f r Land und Sprache des Clients verwendet Um Nachrichten f r eine andere Sprache zur Verf gung zu stellen ist einfach eine weitere Ressourcen Datei zu erstellen Neben der Internationalisierung gibt es weitere Vorz ge dieses Verfahrens wie z B konsistente Namensgebung unter den Formularen sowie die F higkeit alle Bezeichnungen und Nachrichten von einem zentralen Ort aus zu kontrollieren In einfachen Anwendungen kann ein Action Objekt die Gesch ftslogik implementieren die mit einem Request verbunden ist In den meisten F llen sollte jed
5. StartStatusLoadAction StatusLoadAction DetailLoadAction KennzahlLoad3Action StartKennzahlLoad1Action KennzahlLoad1Action StartKennzahlLoad2Action KennzahlLoad2Action StartStatusExtractAction StatusExtractAction DetailExtractAction KennzahlExtract2Action Beschreibung Vorbereiten der Daten die statusLoad jsp darstellt Vorbereiten der Daten die statusLoad jsp darstellt Vorbereiten der Daten die detailLoad jsp darstellt Vorbereiten der Daten die kennzahlLoad3 jsp darstellt Vorbereiten der Daten die kennzahlLoadl jsp darstellt Vorbereiten der Daten die kennzahlLoadl jsp darstellt Vorbereiten der Daten die kennzahlLoad2 jsp darstellt Vorbereiten der Daten die kennzahlLoad2 jsp darstellt Vorbereiten der Daten die statusExtract jsp darstellt Vorbereiten der Daten die statusExtract jsp darstellt Vorbereiten der Daten die detailExtract jsp darstellt Vorbereiten der Daten die kennzahlExtract2 jsp darstellt StartKennzahlkExtract1 Action Vorbereiten der Daten die kennzahlExtractl jsp darstellt KennzahlExtract1Action Datenbank Klassen Vorbereiten der Daten die kennzahlExtract1 jsp darstellt Klasse Beschreibung DBSelectSys Liest die Daten fiir die Pull Down Auswahlliste fiir Liefersysteme bzw Datamarts DBStatusLoad Liest die Daten fiir statusLoad jsp aus der DB DBDetailLoad Liest die Daten f r detailLoad jsp aus der DB DBKennzahlLoad3 Liest die Daten f r kennzahlLoad3 jsp aus der DB DBKennzahlLoadl L
6. r die technischen Aspekte f r Struts gefunden werden Dies setzt voraus dass das Informatik Management der ZKB den Einsatz der Technologie bewilligt Diese Bewilligung steht noch aus Da im Rahmen dieser Diplomarbeit nur positive Erfahrungen mit Struts gemacht wurden und Struts problemlos mit der ZKB SAR vereinbar ist kann davon ausgegangen werden dass diese Voraussetzungen bald geschaffen werden Somit k nnte der Einsatz von Struts f r die Entwicklung gr sserer Web Applikationen bald zum Standard in der ZKB werden Siehe Definition der ZKB SAR f r komplexe Web Applikationen in Kapitel 4 2 Einsatz des J2EE Frameworks Jakarta Struts 75 Fazit 6 Fazit Struts ist ein MVC Framework das dem Entwickler viel Arbeit bei der Entwicklung einer Model 2 Applikation abnimmt durch klare Strukturen trotzdem nicht zu komplex und somit schnell erlernbar ist Die J2EE Spezifikation sowie auch das vergleichbare Net Framework von Microsoft beinhalten beide kein MVC Framework Entwickler sind somit auf Produkte von Drittanbietern angewiesen Der Einsatz von Frameworks ist immer mit einem anf nglichen Lernaufwand verbunden Er lohnt sich aber in den meisten F llen da sich die Entwicklungszeit meist schnell verk rzt Es sollte das Ziel sein die Applikation von Anfang an auf einer soliden und gut wartbaren Architektur zu entwickeln Dadurch wird die Wartbarkeit der Software verbessert und eine effiziente Rollentrennung zwischen Web Designer und
7. 14 2 5 LAUFZEITUMGEBUNGEN eesssassnessssossnssnnsnnsnnsnnensssnssnnsonsnnssnsnnnnsssnnsnssnnsnnssnsnnsnnssnssnssnssnnssnsnnssnssnssnssnssnnsnnsnnen 15 2 3 1 Jakarta Tomcat eet ac e ee Hanni IS Se ae EEE 15 2 5 2 IBM WebSphere Application Server 16 2 9 3 Andere Applik tionsserver 22 0 ee 82a haben ensnsnspenbanbnbee rs 17 KRITT RT CR 18 3 1 ARCHITEKTUR eege svsscb cusdsesseenss coseseodsoasocsssbsededsesseesshoscesestenassdepesdodedsessvensecoeoes 18 3 2 PROGRAMMABLA UR isscscscnssntessessssessasensssensessnccssensesansssdncevsessuasesectesessonsadsosacsccnasendasescnssuesesentssasesdedessecssonat s 19 3 3 BERBLICK UBER DAS FRAMEWORK ssssssssssssssossssscsesssessesesscsesscossecscsesscesscessscsesscessscsssesssscscsssscsesscesseeees 21 3 4 MODEL KOMPONENTEN ssisssscssscssecsnssecssessoosnssdantsesenscosccesanssnscesendesescednessbeasesnnssniessseesdescdsecsesenscoseessbassoecase 23 SG TEE EE 23 3 4 2 Beans f r den System zustand eee eee esnie insiren eneee Er eree ESEESE e a e EEE ie e EESE 24 3 43 Beans fur die Geschaftslo gik ne eeen iE E sen E E EE RE SI SSEN 25 3 5 VIEW KOMPONENTEN sisccccscsasescissascesssostescseveces Eed So ESSO eese Res ENEE 25 3 5 1 Struts KEE 26 3 3 2 Intern tionalisierung tik ee a aa a a E a a a e ENEE 28 3 5 3 Formulare und Formular Validierung 0 2 cece cee eeeeeeeeeceescesecesecesecsaecsaecsaecaeecseseseseeeeeseeeeeenseenaes 29 3 6 CONTROLLER KOMPONENTEN essseessoossessnsesss
8. Applikation mit allen Verzeichnissen und Dateien die zum Entwickeln einer Struts Anwendung ben tigt werden Das ist ein idealer Startpunkt f r das erste Struts Projekt Mit WinZip l sst sich die war Datei Download von Tomcat und Installationsanleitung auf Tomc oder im Anhang B 3 Stru3 S Stru oder Anhang B 1 die Bin rversion reicht zum Entwickeln dieses Beispiels aus Einsatz des J2EE Frameworks Jakarta Struts 41 Jakarta Struts in das webapps Verzeichnis der Tomcat Installation entpacken Den Namen des Verzeichnisses kann man selbstverst ndlich beliebig ndern Ich habe anstatt struts blank struts beispiel gew hlt Nach dem Neustart von Tomcat kann man die Applikation mit dem Browser starten indem man folgendes eingibt hrip localhost 8080 struts beispiel Wenn alles geklappt hat sollte Hello World im Browser angezeigt werden Ein zweiter Weg zum Installieren von Web Applikationen ist das einfache Kopieren einer war Datei in das webapps Verzeichnis der Tomcat Installation Tomcat entpackt bei einem Neustart automatisch die war Datei in einen gleichnamigen Ordner Die Dateien struts documentation war und struts example war im webapps Verzeichnis des Struts Archiv enthalten die komplette Struts Dokumentation bzw eine weitere Beispielanwendung Es lohnt sich diese zu installieren Die einfache Installation zeigt dass Struts keine Modifikation am Servlet Container vornimmt sondern als eigenst ndige normale Serv
9. Auch Struts bietet einen einfachen JDBC Connection Pool und die M glichkeit Datenquellen f r eine Anwendung in der Konfigurationsdatei zu definieren Da die WebSphere Mechanismen m chtiger und komfortabler sind habe ich mich gegen die Datenbankanbindung mit Struts entschieden 4 1 3 Implementierung der Model 1 Variante Die JSP Version von ADB Info besteht insgesamt aus 11 JSP Dateien die s mtliche Funktionalit t beinhalten Folgende Abbildung zeigt die Struktur der Applikation Die Ladeseite zeigt Informationen ber Liefersysteme die Extraktionsseite Informationen ber Datamarts an index jsp Ladeseite Link Extraktionsseite status_load jsp kennzahl_loadi jsp kennzahl_load2 jsp ansprechpartner jsp status_extrakt jsp kennzahl_extrakt1 jso Form detail_load jso E d Form Legende kennzahl_load3 jsp Benutzereingaben in der JSP Seite m glich kennzahl_extrakt2 jsp Datenbankzugriffe in der JSPSeite Gi Abbildung 4 2 Struktur der JSP Version von ADB Info HitSoftware entwickelt Produkte f r die performante Anbindung von Datenbanken an die Middleware in diesem Fall der Applikation Server WebSphere Hits 60 Einsatz des J2EE Frameworks Jakarta Struts Entwicklung mit Struts Die JSP Version ist eine direkte bersetzung der urspr nglichen ASP Dateien in JSP Dateien Die JSPs enthalten HTML Tags zur Darstellung der View sowie die Steuerungslogik und den Code f r die Datenbankzugriffe Diese Variante ent
10. Guide J Online avaDocs W WebMacro T Tutorial X XML XSLT Abbildung 3 9 Vergleich bekannter MVC Frameworks vgl Wafe und Expr2 Einsatz des J2EE Frameworks Jakarta Struts 51 Jakarta Struts Alle hier vorgestellten Frameworks sind wie Struts Open Source Software und somit kostenlos erh ltlich Beim Betrachten der Tabelle erkennt man dass sich die Frameworks oft lediglich durch die angebotenen Zusatzfunktionen unterscheiden Diese sind in der zweiten H lfte der Tabelle dargestellt Dass nur zwei der Frameworks im Bereich Sicherheit Funktionalit t implementieren bedeutet nicht dass die anderen Frameworks unsicher sind Bei allen Frameworks ist es m glich Sicherheitsmechanismen des Servlet Containers bzw des Applikations Servers einzusetzen Der Einsatz der sogenannten container managed security ist bei Web Applikationen durchaus blich Auch Services wie O R Mapping Connection Pooling Logging oder Cache Management werden von vielen Applikations Servern angeboten Unter den hier vorgestellten Frameworks ist Struts am einfachsten erlernbar Struts bietet lediglich die Kernfunktionalit t eines MVC Frameworks und keine weiteren Funktionen Somit ist Struts schneller erlernbar und besser erweiterbar bzw anpassbar Es scheint als ware dies bei vielen Entwicklern ein Argument schliesslich ist Struts viel weiter verbreitet als beispielsweise Turbine und Expresso die wesentlich mehr Funktionalitat bieten 3 9 1 Turbin
11. LIXA 2002 V Turau M Schmidt K Saleck Java Server Pages und J2EE Unternehmensweite Web basierte Anwendungen dpunkt 2001 S Wille GoTo Java Server Pages Addison Wesley 2001 Internetquellen Apac Barr Barr2 Bea Comp Cons Enhy Expr Expr2 Hits IBM IBM2 J2EE J2SE Apache Software Foundation http www apache org Barracuda Framework http barracuda enhydra org Barracuda Surveying the Landscape http barracuda enhydra org cvs_source Barracuda docs landscape html Bea Application Server http www bea com Web Application Server im Labortest http www computerwoche de Struts Console http www jamesholmes com struts console Enhydra Application Server http www enhydra org Expresso Framework http www jcorporate com MVC Application Framework Matrix Review http www jcorporate com html products expresso matrix_compare html HiT Software http www hitsw com IBM WebSphere Application Server http www ibm com IBM Redbooks http www redbooks ibm com Sun J2EE Overview http java sun com j2ee overview html Sun Java 2 Standard Edition http java sun com j2se Einsatz des J2EE Frameworks Jakarta Struts 81 Quellenverzeichnis JBos JSF Macr Orio Resi Scio Stru Stru2 Stru3 Stru4 Tomc Turb Veloc Wafe Webw 82 JBoss Application Server http www jboss org JSR 127 Java Serv
12. Speichern von Daten optional e UserDelegate Aufruf von Gesch ftslogik Klassen Oft wird das J2EE Entwurfsmuster Business Delegate eingesetzt optional e forwardedPage ist keine Klasse sondern eine JSP zum Darstellen der View Das UML Sequenzdiagramm auf der folgenden Seite zeigt die Abl ufe von einem Request an den Struts Controller bis zur fertigen JSP Antwortseite vel Stru4 Einsatz des J2EE Frameworks Jakarta Struts 39 Jakarta Struts ActionSerddet UserAction UserActionForm UserDelegate HelperBean forwardedPage jsp ActionServlet UserAction UserActionForm UserDelegate Client 1 submit 1 processActionFormd ActionF orm populatd UserActionForm 1 2 validateQ Actiongrors 1 3 create Action 13H getPropeny String 1 3 2 businessMethod1 dm 1 3 3 populate E 1 3 4 setProperty String toid 1 3 5 forward 2 getData l 3 getProperties l l Browser Struts Controller IN Struts encapsulates Model Struts ActionForm Business logic value object bean View holds the data required by the screens Author Jean Michel Garnier August 2002 http rollerjm free fr Abbildung 3 4 Struts UML Sequenzdiagramm Am Anfang steht ein Request i d R Abschicken eines Formulars im Browser an den Struts Controller ActionServiet 1 Der Struts Controller legt zuerst die Formulardaten in der Use
13. Zeilen 49 bis 63 Die Definition der Struts Tag Librarys Wie man in der Datei oben erkennt wird bei einem Browser Aufruf von irgendwas do das Struts Controller Servlet aufgerufen Diese Aufrufe werden i d R in einem Formular Tag gemacht Woher Struts weiss was es nach dem Aufruf tun muss wird weiter unten beschrieben 3 8 4 Schritt 4 Erstellen von struts config xml Die Datei struts config xml ist die Konfigurationsdatei des Struts Controllers Hier werden die jsp Dateien also die Views den Action und ActionForm Klassen zugeordnet Diese beiden Klassen haben folgende Aufgabe ActionForm Klasse Nach dem Initiieren einer Struts Aktion z B Bet tigen eines Submit Button in einem Formular mit dem Parameter action irgendwas do sichert der Struts Controller als erstes die in das Formular eingegebenen Werte in einer Java Bean die von der Struts ActionForm Klasse abgeleitet wird Dieses ActionForm Bean dient gewissermassen als Puffer zwischen Browser und Datenbank und kann zudem die Benutzereingaben validieren Der Entwickler muss diese Klasse selbst erstellen Action Klasse Nach dem Sichern der Formulardaten wird vom Struts Controller eine weitere Bean aufgerufen n mlich die Action Bean Diese Klasse wird von der Struts Action Klasse abgeleitet und muss ebenfalls vom Entwickler erstellt werden Sie definiert die Funktionalitat der Anwendung Innerhalb dieser Bean kann auf die Formulardaten ActionForm Klassen zugegriffen werden Hier
14. aber noch bevor die perform Methode der Action Klasse aufgerufen wird Die Methode liefert entweder null bzw eine Instanz der Klasse ActionErrors mit der L nge 0 zur ck wenn keine Fehler gefunden wurden oder der R ckgabewert ist eine Instanz der 30 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts Klasse ActionErrors die ActionError Objekte enth lt wenn Fehler gefunden wurden Die ActionError Objekte enthalten die Schl ssel mit deren Hilfe die Fehlermeldungen aus der internationalisierten Nachrichten Ressource gelesen werden Die Validierung in der ActionForm Klasse ist optional Die Standardimplementierung der validate Methode gibt null zur ck Neben einer Validierung in der Formular Bean kann zudem innerhalb der Action Klasse validiert werden Es ist blich eine einfache Validierung mit der validate Methode durchzuf hren und dar ber hinaus eine Validierung gegen ber der Gesch ftslogik innerhalb des Action Objektes zu implementieren 3 6 Controller Komponenten Der Controller ist der zentrale Teil innerhalb des Frameworks und zusammen mit den Struts Tag Libraries Hauptbestandteil des Frameworks Der Struts Controller hat die Aufgabe Requests vom Client entgegenzunehmen zu entscheiden welche Funktion der Gesch ftslogik auszuf hren ist und dann an eine passende View Komponente zu delegieren welche f r das Erzeugen der n chsten Sicht der GUI zust ndig ist In Struts ist die prim re Komponente des Con
15. anfragen kann Einsatzgebiet Web bezogener Servlets kann wie bei JSPs die dynamische Erzeugung von Inhalten oder die Schaffung eines zentralen Zugangs sein Gesch ftsdatenbezogene Servlets implementieren Gesch ftsprozesse und die Gesch ftslogik Darstellung Gesch ftslogik Gesch ftsdaten Java Beans bezogen Servlet W eb bezogen Abbildung 2 3 Das Zusammenspiel der Komponenten An dieser Stelle sollten auch Java Beans erw hnt werden Mit Java Beans hat der Entwickler die M glichkeit Darstellungs und Verarbeitungslogik voneinander zu trennen Java Beans sind Softwarekomponenten die als Java Klassen realisiert sind Sie repr sentieren die Gesch ftsdaten und k nnen zus tzlich die Verarbeitungslogik beinhalten Beans definieren eine Menge von Properties Ein Property repr sentiert eine Objekt Eigenschaft Es l sst sich ber Accessor Methoden Getter Setter abfragen und ndern Die drei Komponenten JSP Servlets und Java Beans erm glichen die Erstellung von umfangreichen Web Applikationen vgl Will01 Im Gegensatz zu JSPs k nnen Servlets auch bin re Informationen erzeugen Selbst das Erzeugen eines eigenentwickelten MIME Typs ist vorstellbar falls der Client in der Lage ist ihn zu verarbeiten Einsatz des J2EE Frameworks Jakarta Struts 7 Einf hrung und Grundbegriffe auf Grundlage der J2EE Plattform Mit Enterprise Java Beans k nnen diese M glichkeiten noch erweitert werden Auf EJBs wird im Ra
16. aus um letztendlich eine fertig formatierte HTML Seite zu generieren W hrend Der Einsatz von Open Source Software ist in der ZKB unter Einhaltung von Rahmenbedingungen erlaubt Siehe dazu 5 3 52 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts im Screen Modul die anzuzeigenden Informationen aufbereitet werden stellt das Navigation Modul austauschbare Navigationselemente bereit In beiden Modulen besteht grunds tzlich die M glichkeit externe Komponenten wie z B EJBs anzusprechen Im Layout Modul werden Screen und Navigation miteinander verkn pft und das endg ltige Erscheinungsbild der HTML Seite bestimmt F r die Umsetzung der View also von Layout Screen und Navigation empfehlen die Turbine Entwickler den Einsatz von Template Engines speziell aber von Velocity Templates sind vollst ndige HTML Seiten die mit einfachen Makros und Variablen angereichert werden um zur Laufzeit dynamische Inhalte zu generieren Zu jedem Template wird eine Java Klasse ben tigt um die View mit konkreten Daten zu versorgen Page Layout Navigation Screen Assemblers Navigation Abbildung 3 10 Die Komponenten des Turbine Frameworks Auch bei Turbine bernimmt ein zentrales Servlet die Ablaufsteuerung Abh ngig vom Namen des angeforderten Templates wird eine quivalente Java Klasse gesucht Wird eine solche gefunden kommt diese zum Einsatz anderenfalls wird auf Default Klassen
17. des Clients festgestellt So k nnen unterschiedliche Clients entsprechend ihren Darstellungsf higkeiten wie z B Scripting und Formatierung mit Informationen versorgt werden Im n chsten Schritt wird aus dem Request ein Event generiert und entsprechend weiterverarbeitet Ein weiteres Package bietet ein automatisches Mapping und die Validierung von HTML Formularen wodurch die Arbeit erheblich vereinfacht wird Die Elemente eines Formulars werden auf Java Objekte abgebildet bei Validierungsfehlern werden entsprechende Exceptions geworfen Nun kann die eigentliche XMLC basierte Generierung eines HTTP Response beginnen vgl Turb Barr2 und Expr2 54 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts Event Model Form Mapping Client Capabilities Validation HTTP Request Client HTTP Response Component Model 6 Respond 5 XMLC Localization Abbildung 3 11 Die Barracuda Architektur Die Barracuda Architektur ist Komponenten basiert und durch ein serverseitiges Event Modell verbunden Dadurch wird das bliche Request Processing flexibler gestaltet Barracuda sieht zwei Arten von Events vor Die Request Events und die Response Events Die korrespondierenden Listener der Request Events k nnen unter MVC Gesichtspunkten als Controller aufgefasst werden die Listener der Response Events bernehmen die Aufgaben der View 3 9 3 Expresso Jcorporate Expresso i
18. die Version 4 0 eingesetzt Daher machte es Sinn bei der Entwicklung mit dem WebSphere Entwicklungswerkzeug WSAD WebSphere Studio Application Developer zu arbeiten Es wurde die Version 4 0 3 eingesetzt Die von der Applikation angesprochene Datenbank liegt auf dem IBM Mainframe der ZKB Es wird IBM DB2 for z OS in der Version 7 1 eingesetzt Der Einsatz von Struts beeinflusst diese Wahl nicht vgl ADBI ADBI2 und ADBI3 Einsatz des J2EE Frameworks Jakarta Struts 59 Entwicklung mit Struts 4 1 2 Datenzugriff Der Zugriff auf die Daten erfolgt mit JDBC Allerdings wird in den Datenbank Klassen keine eigene JDBC Connection implementiert sondern es werden die HitSQL JDBC Treiber eingesetzt und im WebSphere Server eine Connection Pooling f hige Datenquelle definiert Diese Datenquelle bietet bessere Performance und schont zudem die Ressourcen der Datenbank weil nicht f r jeden Request eine neue Verbindunge hergestellt werden muss Die Datenquelle wird von der Applikation aus mittels JNDI aufgerufen Dadurch m ssen die Datenbank Klassen keine Rechneradressen Ports Logins und hnliches enthalten Es wird lediglich ein logischer JNDI Name in der Form java comp env jdbc SampleDB benutzt um die Datenquelle zu erhalten und danach mit ihr zu arbeiten Somit k nnten jederzeit ein anderer Treiber eine andere Datenbank oder andere Benutzerdaten eingesetzt werden ohne dass irgendwelche Klassen der Applikation ver ndert werden m ssten
19. eingesetzten Software durch Standardsoftware extern zu beziehen und so wenig wie m glich selbst zu entwickeln Aufgaben der Informatik in der ZKB sind u a Aufbau Unterhalt und Weiterentwicklung der Rechenzentren Netzwerke und Arbeitspl tze sowie der produktiven Banksysteme Dazu geh ren beispielsweise die Online Bank Kundeninformationssysteme Stammdatenverwaltung Vertriebssysteme Kundenbeziehungs management Kartenverwaltungssysteme und Geldausgabe und Einzahlautomaten Eine wichtige Rolle spielt dabei die Systemarchitektur die mit f nf erfahrenen Informatikern und Ingenieuren Richtlinien und Grunds tze f r den Einsatz von Soft und Hardware erarbeitet und deren Einhaltung berwacht Die SAR erarbeitet den technischen Bauplan der Informatiksysteme Sie beschreibt das Zusammenwirken der bestehenden und neuen Technologien und erstellt Grunds tze betreffend der Bauweise und dem Einsatz von bestehenden und neuen Technologien und Systemen sowie der Integration von Systemen Ziele der SAR sind die Einschr nkung der L sungsvielfalt beherrschbare Komplexit t k rzere Entwicklungszeiten time to market niedrigere Kosten durch Wiederverwendung bestehender Infrastrukturen die Vereinheitlichung der Infrastruktur Basis f r den effizienten Betrieb die Verbesserung des Kosten Nutzen Verh ltnisses und die Unterst tzung der Business Strategie In diesem Zusammenhang werden von der SAR auch neue Technologien die f r die Bank relevant sei
20. konnte ich im Rahmen dieser Diplomarbeit selbst machen nachdem ich an beiden Varianten nachtr glich Ver nderungen vornehmen musste 5 2 Die Zukunft von Struts ber die Zukunft eines Open Source Frameworks lassen sich nur schwer Aussagen machen Die Tatsache dass Struts in der Entwicklergemeinde sehr popul r ist und von namhaften Herstellern bekannter Applikations Server unterst tzt wird spricht f r den Fortbestand von Struts Im Apache bzw Jakarta Umfeld werden schon seit langem zuverl ssige Technologien entwickelt Das bekannteste und lteste Beispiel ist der Apache Webserver der im Internet sehr stark verbreitet ist Ich gehe davon aus dass auch Struts noch f r lange Zeit weiterentwickelt wird und somit eine sichere Zukunft hat Dass der Chefentwickler von Struts Sun Mitarbeiter ist und an diversen Spezifikationen im J2EE Umfeld mitarbeitet beeinflusst Struts sicher positiv So wird Struts Sun s neue JSF Technologie schon mit dem n chsten Release unterst tzen obwohl JSF noch in der Beta Phase ist Da die Entwickler von Apache Projekten ausnahmslos auf freiwilliger Basis an den Projekten mitwirken kann man den Fortbestand allerdings nie mit 100 iger Sicherheit garantieren Aber das ist selbst bei kommerziellen Projekten grosser Softwarefirmen nicht immer der Fall 5 3 Struts in der ZKB Es wurde f r die HTML Onlinebank der ZKB bereits ein Framework mit hnlicher Funktionalit t wie Struts entwickelt Dieses Framework setzt
21. kurz vorstellen weil sie die Weiterentwicklung von Struts beeinflussen wird Java Server Faces beschreibt Sun als Framework von GUI Komponenten f r die Erzeugung von Web Frontends Unter anderem soll es in der Lage sein Elemente einer HTML Seite mit bestimmten Java Klassen auf dem Server zu assoziieren Treten bestimmte Benutzerereignisse auf beispielsweise das Anklicken einer Checkbox oder das Herausbewegen des Cursors aus einem Textfeld sollen die zugeordneten Methoden auf dem JSP Server aktiviert werden Auf diese Weise k nnten beispielsweise Benutzereingaben validiert werden Laut Hersteller k nnen Tools die diese Spezifikation umsetzen Entwickler von den Eigenheiten bestimmter Browser abschirmen und die Verbindung zwischen Client und Server mittels visueller Programmierung erlauben Derzeit durchl uft Java Server Faces noch den Java Community Process und ist als Java Specification Request USR 127 registriert Java Server Faces werden in zuk nftigen Struts Versionen Teile des Frameworks erg nzen bzw ersetzen Der Chefentwickler des Struts Frameworks Craig R McClanahan ist zugleich Mitarbeiter bei Sun Microsystems und Leiter der Expert Group welche die Spezifikation der Java Server Faces Technologie entwickelt Laut dem Entwicklerteam ist JSF keine direkte Konkurrenz zu Struts Die Struts Entwickler werden JSF sowie auch die relativ neuen JSP Standard Tag Library JSTL von Sun in Struts integrieren und Teile der Struts Tag Libraries
22. lt html html locale true gt am Anfang einer JSP weist Struts an die Internationalisierung zu aktivieren Dazu ermittelt Struts ber den Browser die eingestellte Sprache des Benutzers Der Name der Properties Dateien kann in der Konfigurationsdatei web xml definiert werden Im folgenden Beispiel ist der Name ApplicationResources Die Endung ist properties 01 lt servlet gt 02 03 lt servlet name gt action lt servlet name gt 04 lt servlet class gt org apache struts action ActionServlet lt servlet class gt 05 06 lt init param gt 07 lt param name gt application lt param name gt 08 lt param value gt ApplicationResources lt param value gt 09 lt init param gt 10 11 lt servlet gt Listing 3 1 web xml Definition der Property Datei einer Applikation Der Name der Datei mit den Nachrichten in der Standardsprache w re dann ApplicationResources properties Ein Eintrag in diese Textdatei wiirde beispielsweise lauten prompt saghallo Hallo Um eine weitere Sprache zu unterstiitzen muss eine weitere Datei mit dem Namen ApplicationResources_xx properties angelegt werden xx steht dabei fiir den ISO Sprachcode einer Sprache ApplicationResources_fr properties ware beispielsweise der Name f r eine franz sische Property Datei Ein Eintrag in diese Textdatei m sste dann lauten prompt saghallo Bonjour Die Ausgabe dieser Nachrichten in einer JSP View w rde mit dem Tag lt bean message key prompt saghallo gt imp
23. mB class myBean scope session gt bekannt gemacht werden Der Datentransfer von der JSP Seite in die Bean und umgekehrt ist danach ber die Aktionen lt jsp setProperty name mB property name gt bzw lt jsp getProperty name mB property name gt m glich Die JSP Seite kann nun mit lt jsp include gt oder lt jsp forward gt die Verantwortung an ein Servlet weitergeben welches die Bean als Grundlage fiir weitere Aktionen nutzen kann Die Bean kann somit als eine Art Transportcontainer genutzt werden Das Servlet muss nun nur noch mit HttpServletRequest getAttribute mB HttpSession getAttribute mB oder ServletContext getAttribute mB eine Referenz auf die Bean erhalten und kann dann mit referenzAufBean getName auf die Daten zugreifen Servlet ber Bean an JSP Das Servlet kann wenn es zuvor eine Referenz auf eine Bean erhalten hat mit referenzAufBean setx Daten in der Bean speichern Die Bean muss nun mit HttpServletRequest setAttribute mB referenzAufBean HttpSession setAttribute mB referenzAufBean oder ServletContext setAttribute mB referenzAufBean in den entsprechenden Container eingef gt werden Das Servlet kann dann die Verantwortung mit RequestDispatcher forward oder RequestDispatcher include an eine JSP weiterleiten Diese muss die Bean mit lt jsp useBean id mB class myBean scope session gt bekannt machen
24. ne 4 KE E 15 ME E 4 Kommunikation von Komponenten 11 Konfigurationsdiemst eceeeeeeseeeeeeeees 4 Lautfzeumgchung 15 Tree 3 Modell eloni eres oies 8 Model eege 8 Einsatz des J2EE Frameworks Jakarta Struts Stichwortverzeichnis KE E EE 8 Namensdienst ec se sense 4 Perl a REAR eat ACHES RR ANA CO RENT 14 EE 14 Richtlinien bei der ZKB 63 RM es fais ee 5 Klemmer egantsesek eeng ergi 3 TEE 11 SEVEN 6 Serviet Comtaimer a nee 15 Sicherheitsllens Aa 4 Struts Action Klassen 31 ActionForm Bean ne 23 Controller Komponenten 31 Deployment Descriptor 34 Entwicklungsaufwand 73 Formulare 29 Internationalisierung 28 Kkonfeurapon een 33 Model Komponenten en 23 Performance 69 Leet EE 66 Sessionhandling ee 65 Sicherheits nassen 65 Struts Kei een 67 Fag LIDAS a ee 26 View Komponenten 25 Wartbarkeit EE 74 SECHER nianna 74 Transaktionsdienst c ccccceesseeeeeeeseeees 4 RTE 52 Wech Komponenten 6 WED WOEK an ee 56 83 Ehrenw rtliche Erkl rung Ehrenw rtliche Erkl rung Hiermit erkl re ich Markus Herrmann geboren am 06 03 1976 in Heidelberg ehrenw rtlich 1 dass ich meine Diplomarbeit mit dem Titel Einsatz des J2EE Frameworks Jakarta Struts bei der Ziircher Kantonalbank in Ziirich Schweiz unter Anleitung von Professor Dr Eduard Klein und Dipl Ing Bernd
25. und kann dann die Daten mit lt jsp getProperty name mB property name gt auslesen Einsatz des J2EE Frameworks Jakarta Struts 13 Einf hrung und Grundbegriffe 2 4 JSP im Vergleich mit anderen Technologien 2 4 1 Vergleich mit CGI CGI Common Gateway Interface ist eine der ltesten Internettechnologien zur Generierung von dynamischen Webseiten Bei CGI startet der Webserver f r jeden Request ein Programm welches die Ausgabe ber die Standardausgabe an den Webserver liefert Das bringt die gleichen Nachteile wie bei Servlets mit sich Jede einzelne Zeile eines HTML Dokuments muss per printin Befehl aus dem CGI Quellcode heraus generiert werden Grunds tzlich k nnte jede Programmiersprache f r die Implementierung von CGIs verwendet werden Am weitesten verbreitet bei der Implementierung von CGI sind die Sprachen Perl und C C Weil CGI f r jeden Request einen neuen Prozess erzeugt ist es deutlich langsamer als JSP Aus diesem Grund eignet sich Java nicht gut f r CGI es m sste bei jedem Request eine eigene JVM gestartet werden Beim Programmieren mit CGI muss der Entwickler die Umsetzung von Requests Cookies Sessions und Templates selbst bernehmen 2 4 2 Vergleich mit ASP JSP und ASP sind zwei sehr hnliche Technologien Beide betten den Programmcode in HTML ein haben teilweise eine hnliche Syntax und benutzen die impliziten Objekte session request response und application Die hnlichkeiten kommen daher d
26. wenn die Applikation eine mit ist umfangreiche komplexe die wiederverwendbar Business Logik aufweist Business Logik soll mehrere unterschiedliche Clients Browser Ultra Thin HTML Thin Java Mobile bedient werden miissen hohe Anforderungen sein an die Skalierbarkeit gestellt werden und ein langer Lebenszyklus der Applikation erwartet wird 64 Der Einsatz von Struts erfiillt diesen Grundsatz Struts l uft auf WebSphere Der Einsatz von Struts beeinflusst diesen Grundsatz nicht G Kein Einsatz von Struts f r einfache Model 1 Applikationen Einsatz von Struts f r die Entwicklung von Model 2 Applikationen Struts unterst tzt den Einsatz von EJBs Es k nnen aber auch nur Java Beans eingesetzt werden Einsatz des J2EE Frameworks Jakarta Struts Entwicklung mit Struts Das Muster JSP Servlets ohne EJBs ist anzuwenden wenn die Applikation eine einfache Business Logik aufweist nur einen Client zum Beispiel ein Browser Ultra Thin Interface unterst tzt niedrige Anforderungen an die Skalierbarkeit stellt und nur ein vergleichsweise kurzer Lebenszyklus der Applikation erwartet wird Die Internet Applikationen der ZKB werden Struts beeinflusst den erzeugten HTML nicht mit Browser Abh ngigkeiten versehen Code nicht und orientieren sich an den neutralen Standards der W3C Komission F r Ultra Thin Client Applikationen wird als Keine Probleme be
27. werden sitzungsorientierte Anwendungen und eine gepufferte Ausgabe unterstiitzt e JSP Java Server Pages sind eine serverseitige Skriptsprache zur Erstellung von Web Anwendungen auf der Basis von Servlets Neben benutzerdefinierten Tag Bibliotheken ist die enge Intergration von Java Beans ein wichtiges Merkmal Auf die JSP Technologie wird sp ter noch genauer eingegangen JSPs spielen beim Einsatz von Jakarta Struts eine zentrale Rolle vgl Tura01 4 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe e EJB Enterprise Java Beans sind Softwarekomponenten die den Zugriff auf transaktionsbasierte Dienste erlauben Die Kommunikation mit CORBA Objekten wird unterst tzt e RMI IIOP Remote Method Invocation erm glicht die Kommunikation zwischen Java Objekten in verschiedenen virtuellen Maschinen RMI HOP ist eine Implementierung des RMI Protokolls auf Basis des Corba Internet Inter ORB Protocol IIOP und erm glicht die Integration von CORBA Objekten in J2EE Anwendungen e JMS Java Message Service ist eine API zum Zugriff auf Message Queuing Systeme wie IBM MQ Series e JCA J2EE Connector Architecture erm glicht die Integration von non Java Anwendungen e JavaMail Die Mail API definiert Schnittstellen mit denen E Mails abgerufen oder verschickt werden k nnen e JAXP Die Java API for XML Parsing definiert den Umgang mit XML Parsern Dadurch wird die J2EE Platform unabh ngig von bestimmten Parsern Con
28. zu administrierende Komponenten zu entwickeln Einsatz des J2EE Frameworks Jakarta Struts 3 Einf hrung und Grundbegriffe welche plattform bergreifend eingesetzt und an existierende Informationssysteme angekoppelt werden k nnen Die Laufzeitumgebung f r eine J2EE Anwendung wird durch sogenannte Container umgesetzt Diese befinden sich auch in der mittleren Schicht Die J2EE Plattform definiert Dienste welche durch J2EE Container angeboten werden und allen Komponenten zur Verf gung stehen e Namensdienst e Transaktionsdienst e Sicherheitsdienst e Konfigurationsdienst Des weiteren miissen die Hersteller der J2EE Container folgende Implementierungen der J2EE APIs zur Verfiigung stellen e JDBC Extension Diese API ist eine Erweiterung der Standard JDBC API und vereinbart Klassen und Interfaces f r Connection Pools verteilte Transaktionen und nderbare Ergebnismengen von SQL Anfragen e JTA Die Java Transaction API definiert eine Schnittstelle zur Interaktion mit einem Transaktionsmanager Dieser regelt den Zugriff von Anwendungen auf gemeinsam genutzte Ressourcen wie Datenbanken oder Message Systeme e JNDI Das Java Naming und Directory Interface erm glicht den Zugriff auf Namens und Verzeichnisdienste durch Java Programme Hierzu z hlen neben dem J2EE Namensdienst auch Verzeichnisdienste wie LDAP e Servlet Die Servlet API stellt Klassen und Interfaces zur Erstellung serverseitiger Web Anwendungen zur Verfiigung Es
29. Datei Uploads benutzt wird 4096 e config Kontextrelativer Pfad auf die XML Ressourcen welche die Konfigurations informationen enthalten WEB INF struts config xml e content Standard Content Typ und Zeichenkodierung f r alle Responses Kann berschrieben werden durch ein Forwarded To Servlet oder eine JSP Seite text html e debug Debug Level Definiert welche Informationen protokolliert werden 0 e detail Debug Level f r den Digester 0 e factory Java Klassenname der MessageResourcesFactory die dazu verwendet wird das MessageResources Objekt der Anwendung zu erzeugen e formBean Java Klassenname der zu verwendenden ActionForm Bean Implementation org apache struts action ActionFormBean e forward Java Klassenname der zu verwendenden ActionForward Implementation org apache struts action ActionForward e locale Wenn der Wert true ist und eine Session existiert wird ein java util Locale Objekt in der Session gespeichert e mapping Java Klassenname der zu verwendenden ActionMapping Implementation org apache struts action ActionMapping e maxFileSize die maximale Gr e in Bytes einer Datei die beim Datei Upload akzeptiert wird K M oder G werden als Kilobytes Megabytes oder Gigabytes intepretiert 250M e multipartClass Der voll qualifizierte Name der zu verwendenden MultiplartRequestHandler Implementation die Datei Uploads verarbeitet org apache struts upload DiskMultipartRequestHandler e nocac
30. Fachhochschule Konstanz Fachbereich Informatik Einsatz des J2EE Frameworks Jakarta Struts Diplomarbeit Markus Herrmann Z rich 31 Januar 2003 Diplomarbeit zur Erlangung des akademischen Grades Diplom Informatiker FH an der Fachhochschule Konstanz Hochschule f r Technik Wirtschaft und Gestaltung Fachbereich Informatik Wirtschaftsinformatik Thema Einsatz des J2EE Frameworks Jakarta Struts Diplomand Markus Herrmann R schibachstr 24 CH 8037 Z rich Firma Z rcher Kantonalbank Z rcher Kantonalbank Neue Hard 9 CH 8010 Z rich Betreuer Professor Dr Eduard Klein Fachhochschule Konstanz Dipl Ing Bernd Reichert Z rcher Kantonalbank Abgabetermin 31 Januar 2003 Zusammenfassung Thema Einsatz des J2EE Frameworks Jakarta Struts Diplomand Markus Herrmann R schibachstr 24 CH 8037 Z rich Firma Z rcher Kantonalbank Neue Hard 9 CH 8010 Z rich Betreuer Prof Dr Eduard Klein Fachhochschule Konstanz Dipl Ing Bernd Reichert Z rcher Kantonalbank Abgabetermin 31 Januar 2003 Schlagworte Jakarta Struts MVC J2EE Framework Java Server Page Servlet Tag Library Web Applikation IBM WebSphere Application Server Tomcat Die Arbeit befasst sich mit dem J2EE Framework Jakarta Struts Hauptziel ist es den Einsatz von Struts in der ZKB zu pr fen Es soll festgestellt werden ob Struts in Zukunft f r die Entwicklung gr sserer Web Applikationen in der ZKB eingesetzt werden
31. Jakarta Struts Jakarta Struts 3 4 3 Beans f r die Gesch ftslogik Die funktionale Logik einer Applikation sollte durch Methodenaufrufe auf Java Beans implementiert werden Die Gesch ftslogik kann entweder in den Beans f r den Systemzustand oder in separaten Gesch ftslogik Beans enthalten sein Im letzten Fall m ssten die System State Beans den Gesch ftslogik Beans als Parameter beim Methodenaufruf mitgegeben werden F r die maximale Wiederverwendbarkeit des Codes sollten die Beans f r die Gesch ftslogik so entworfen und implementiert werden dass sie nicht wissen dass sie in der Umgebung einer Web Anwendung ausgef hrt werden Es sollten also keine Import Anweisungen f r Java Web Klassen z B javax servlet Klassen implementiert werden um Informationen mit Hilfe des Request Objekts zu bertragen Anstatt dessen sollte die Action Klasse alle ben tigten Informationen aus dem HTTP Request extrahieren und den Gesch ftslogik Beans als Methodenparameter oder mit Hilfe von Getter Setter Methoden bergeben Dadurch k nnen die Gesch ftslogik Beans auch in anderen Applikationen wiederverwendet werden Abh ngig von der Komplexit t der Applikation k nnen die Beans f r die Gesch ftslogik gew hnliche Java Beans sein die mit den System State Beans interagieren oder es k nnen Java Beans sein die eine Datenbank ansprechen In gr sseren Applikationen kommen h ufig Enterprise Java Beans EJB zum Einsatz 3 5 View Komponenten D
32. Java Programmierer erm glicht Ob das hier vorgestellte Framework Struts nun tats chlich am geeignetsten ist kommt sicher auf den Einzelfall an Oftmals ist sicher der Grad der notwendigen Flexibilit t entscheidend Hier bietet Struts aufgrund seiner Einfachheit relativ viel Raum f r individuelle Anpassungen Auf der anderen Seite wurden beispielsweise Turbine und Expresso mit zahlreichen Zusatz Funktionen ausgestattet was in manchen F llen von Vorteil sein kann Zu bedenken ist dass der Einarbeitungsaufwand um so betr chtlicher wird je umfangreicher das Framework ist Es ist abzuw gen ob man die mitgelieferten Funktionen eines Frameworks verwenden m chte oder lieber auf die Persitenz Logging und Security Mechanismen des Applikations Servers zur ckgreift Weiterhin spielen auch die bisherigen Erfahrungen und Vorkenntnisse der Projektmitarbeiter eine Rolle Der angesprochene Lernaufwand minimiert sich bei dem Einsatz eines bekannten Frameworks Die Entscheidung f r ein Framework h ngt ausserdem von der Art der Gestaltung der Views ab Hat man bei Expresso noch die Wahl zwischen JSP Templates und XSLT so kann Struts nur mit JSP Turbine nur mit Templates und Barracuda nur mit XMLC eingesetzt werden Inwieweit dies einen Einfluss auf die Auswahl des Frameworks hat liegt an den Projektzielen Den Web Designer entlastet ein MVC Framework in allen F llen da seine Unabh ngigkeit erkl rtes Ziel eines jeden Frameworks ist Wie bereit
33. K nnen Wenn man die beiden im Rahmen der Diplomarbeit entstandenen Varianten der Beispielapplikation ADB Info vergleicht wirkt die Struts Variante auf den ersten Blick extrem komplex Es scheint nachteilig dass aus 11 JSPs der Model 1 Variante eine Struts Applikation wird die aus 37 Java Klassen und ebenfalls 11 JSPs besteht Die Aufteilung der Funktionalit t in Java Klassen nach dem MVC Prinzip bringt allerdings schnell Vorteile mit sich Alleine die M glichkeit der getrennten Entwicklung von Benutzeroberfl chen und Gesch fts und Steuerungslogik beim Einsatz von Struts bedeutet bei Projekten mit mehreren Entwicklern schnell eine Zeitersparnis durch k rzere Entwicklungszeit HTML Programmierer k nnen parallel zu den Java Programmierern arbeiten und m ssen keine Java Kenntnisse erwerben da bei der Entwicklung der Views nur noch mit Tags gearbeitet werden kann Allerdings entstehen durch den Einsatz eines Frameworks wegen der gr sseren Komplexit t auch neue Fehlerquellen Bei kleineren Applikationen lohnt sich der Mehraufwand f r das Einarbeiten in Struts nicht Hier ist eine JSP Variante viel schneller entwickelt und auch relativ bersichtlich Der Einsatz von Struts macht erst ab einer gewissen Gr sse der Applikation Sinn Ist ein Entwickler erst mal mit Struts vertraut ben tigt die Entwicklung einer Struts Applikation kaum mehr Zeit als die Entwicklung einer Model 1 Applikation Sp testens nachdem im ersten Projekt Erfahrungen g
34. Open Source jakarta struts 1 0 2 sre zip Struts Quellcode 1 0 2 Open Source jakarta tomcat 4 0 3 zip Jakarta Tomcat Server 4 0 3 Open Source struts console 3 1 zip Struts Console 3 1 Freeware Camino_2_0 exe Scioworks Camino 2 0 Trial Version j2sdk 1_3_1 win exe Sun s J2SE 1 3 1 j2sdk 1_3_1 doc zip Sun s J2SE 1 3 1 Documentation j2sdkee 1_3_1 win exe Sun s J2EE 1 3 1 j2sdkee 1_3_1 doc win exe Sun s J2EE 1 3 1 Documentation Einsatz des J2EE Frameworks Jakarta Struts 79 Quellenverzeichnis Quellenverzeichnis Literaturverzeichnis ADBI1 ADBI2 ADBI3 Busc02 Gamm01 Kamm02 SARO2 Tura01 Will01 M Roger ADB Info Anforderungsspezifikation Version 2 0 Z rcher Kantonalbank LILP Januar 2001 M Roger ADB Info Detailspezifikation Version 2 1 Z rcher Kantonalbank LILP August 2001 D Dagne ADB Info Dokumentation zur Webapplikation Version 2 0 Z rcher Kantonalbank LILP Dezember 2002 A Buschbacher Diplomarbeit Datenzugriffsmechanismen f r Java WebSphere basierte Anwendungen Fachhochschule Konstanz Z rcher Kantonalbank 2002 E Gamma R Helm R Johnson J Vlissides Entwurfsmuster Elemente wiederverwertbarer objektorientierter Software Deutsche Ubersetzung von D Riehle Addison Wesley 2001 C Kamm C Klein Komplexe Web Anwendungen mit Struts in Objekt Spektrum 3 2002 SAR Die Systemarchitektur der ZKB Z rcher Kantonalbank
35. Reichert selbst ndig und ohne fremde Hilfe angefertigt habe und keine anderen als in der Abhandlung angef hrten Hilfen benutzt habe 2 dass ich die bernahme w rtlicher Zitate aus der Literatur sowie die Verwendung der Gedanken anderer Autoren an den entsprechenden Stellen innerhalb der Arbeit gekennzeichnet habe Ich bin mir bewusst dass eine falsche Erkl rung rechtliche Folgen haben wird Z rich 31 Januar 2003 Einsatz des J2EE Frameworks Jakarta Struts 85
36. ServletResponse sendRedirect Falls der Client keine Cookies unterst tzt wird automatisch URL Rewriting eingesetzt um die Session ID der URL als Parameter zu bergeben greaterEqual f Tag F hrt den Body des Tags aus wenn die angegebene Variable gr sser oder gleich einem bestimmten Wert ist greaterThan f Tag F hrt den Body des Tags aus wenn die angegebene Variable gr sser einem bestimmten Wert ist Einsatz des J2EE Frameworks Jakarta Struts 27 Jakarta Struts iterate Schleife Wiederholt den Body des Tags f r jedes Element einer bergebenen Collection lessEqual f Tag F hrt den Body des Tags aus wenn die angegebene Variable kleiner oder gleich einem bestimmten Wert ist lessThan f Tag F hrt den Body des Tags aus wenn die angegebene Variable kleiner einem bestimmten Wert ist match If Tag F hrt den Body des Tags aus wenn ein bestimmter Wert ein Substring der angegebenen Variable ist notEqual f Tag F hrt den Body des Tags aus wenn die angegebene Variable ungleich einem bestimmten Wert ist notMatch f Tag F hrt den Body des Tags aus wenn ein bestimmter Wert kein Substring der angegebenen Variable ist notPresent f Tag F hrt den Body des Tags aus wenn ein bestimmter Wert im Request nicht vorhanden ist present f Tag F hrt den Body des Tags aus wenn ein bestimmter Wert im Request vorhanden ist redirect Erzeugt einen HTTP Redirect entspricht HttpServletResponse sendRedirect Falls der Clie
37. _2_2 dtd Das usserste XML Element muss lt web app gt lauten Innerhalb dieses Bereichs gibt es folgende Elemente e lt servlet gt Definition des Struts Controllers e lt servlet mapping gt Konfiguration des Action Servlet Mappings e lt taglib gt Definition der Struts Tag Libraries Definition des Struts Controllers lt servlet gt lt servlet gt Dieser Bereich definiert das Action Servlet welches die Requests entgegennimmt und enthalt folgende Elemente lt servlet name gt action lt servlet name gt action ist der Name des Servlets lt servlet class gt org apache struts action ActionServlet lt servlet class gt 34 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts org apache struts action ActionServlet ist der qualifizierende Java Klassenname des Struts Controllers lt load on startup gt 2 lt load on startup gt lt load on startup gt gibt an dass das Controller Servlet bereits beim Start des Containers geladen werden soll lt init param gt lt param name gt config lt param name gt lt param value gt WEB INF struts config xml lt param value gt lt init param gt Das Controller Servlet kann mit diversen Initialisierungsparametern konfiguriert werden in eckigen Klammern ist der Standardwert angegeben e application Java Klassenname der Anwendungsressource NONE e bufferSize Die Gr e des Eingabebuffers der bei
38. ars in den Zeilen 19 bis 31 die Form Tags von Struts benutzt werden Auch innerhalb des Form Tag werden die auszugebenden Texte aus der Message Ressource gelesen Sobald das Formular durch Bet tigen des Absenden Button an den Server geschickt wird schreibt der Struts Controller die Properties name und anrede in die ActionForm Klasse und validiert diese In den Zeilen 33 bis 42 wird die Begr ssung mit Name und Anrede generiert Da die Ausgabe nur erfolgen soll nachdem korrekte Daten in das Formular eingegeben wurden werden hier einige Struts Logic Tags benutzt Diese entsprechen einer If Anweisung in Java lt logic present name name scope request gt schaut ob die Property name in der zur JSP geh renden ActionForm Klasse vorhanden ist Ist dies der Fall wird der Body des Tags ausgef hrt also die Begr ssung ausgegeben Mit lt logic equal name submitForm property anrede value f gt wird berpr ft ob die Property anrede gleich f ist Wenn das der Fall ist wird Frau ausgegeben ansonsten Herr Obwohl diese eine JSP Seite sehr viel Funktionalit t beinhaltet wird keinerlei Java Code ben tigt S mtliche Funktionen sind durch Benutzen der Struts Tags implementiert Es f llt auf dass keine einzige Ausgabe auf der Seite direkt im JSP Code steht Alles wird aus der Message Ressource von Struts gelesen 3 8 6 Schritt 6 Entwickeln der ActionForm Klasse Diese Klasse wird von der Struts Klasse ActionForm abgeleitet und speiche
39. ass ASP als Vorbild f r die ersten Versionen von JSP diente Das ASP zu Grunde liegende Komponentenmodell COM bzw NET ist plattformspezifisch Deshalb sind die damit erzeugten Komponenten nicht portabel Im Gegensatz dazu verwendet JSP Java Beans bzw Enterprise Java Beans die sich durch besonders gute Portabilit t auszeichnen ASP Seiten werden mit der Skriptsprache VBScript geschrieben JSP hingegen basiert auf Java einer ausgewachsenen Programmiersprache der unz hlige APIs zur Verf gung stehen Ein weiterer wichtiger Vorteil von JSP ist die Geschwindigkeit Da JSP Seiten kompiliert werden laufen sie wesentlich schneller als ASP Seiten die bei jedem Request erneut vom Webserver geparst werden m ssen 2 4 3 Vergleich mit PHP PHP ist ein Open Source Projekt welches schon seit vielen Jahren weiterentwickelt wird Die Sprache lehnt sich an C und Perl an In den neusten Versionen ist sogar eine gepufferte Ausgabe und eine Sitzungsverwaltung implementiert Sitzungsdaten werden allerdings nicht im Hauptspeicher sondern in Dateien oder einer Datenbank verwaltet PHP Skripte sehen im Vergleich zu JSP kryptisch aus eine Trennung von Pr sentations und Programmlogik ist kaum m glich Es sind keine einheitlichen DB Schnittstellen vorhanden So sind einmal geschriebene PHP Skripte an eine bestimmte Datenbank gebunden und schlecht portierbar PHP bietet keine M glichkeit der Ausgliederung in Komponenten und ist somit schwer skalierbar und erwei
40. ass die Applikation nicht durch das Bet tigen des Back Button im Browser in einen undefinierten Zustand kommt Darum muss sich i d R der Entwickler selbst k mmern Auch Struts bietet keine Funktionalit t um dieses Problem zu umgehen Umfangreiche Informationen ber Sicherheit im J2EE Umfeld findet man u a in Tura01 Einsatz des J2EE Frameworks Jakarta Struts 65 Entwicklung mit Struts Gerade im Bankenbereich ist es oft wichtig zu wissen ob eine in den Gesch ftslogik Beans gestartete Transaktion erfolgreich abgeschlossen werden konnte Struts bietet keine Mechanismen an die diese Aufgabe bernehmen Transaktionssicherheit muss der Entwickler selbst implementieren Allerdings bieten auch hier die Applikations Server Mechanismen an die den Entwickler entlasten IBM WebSphere beispielsweise bietet zu allen hier angesprochenen Aspekten L sungen Die Beispielapplikation ADB Info stellt geringe Anforderungen an die Sicherheit und setzt URL Rewriting ein um die Session auch bei deaktivierten Cookies zu erhalten Ein Anmelden vor dem Benutzen der Applikation ist nicht notwendig 4 4 Portabilitat WSAD Tomcat WebSphere Server AIX Da Struts zu 100 J2EE kompatibel ist l uft es auf allen J2EE zertifizierten Applikations Servern Seit dem Release des WebSphere Servers Version 4 0 unterst tzt IBM Struts offiziell Es gibt keinerlei Probleme beim Entwickeln einer Struts Applikation mit dem Entwicklungswerkzeug WSAD IBM widmet Str
41. atisch wieder in das Formular ein Ausserdem wird der Benutzer mit einer Meldung begr sst Die Umwandlung des Namens in Grossbuchstaben geschieht in der Action Bean Struts Beispiel Name Herman Anrede Frau Herr Absenden Hallo Herr HERRMANN Abbildung 3 8 Die erste Struts MVC Anwendung funktioniert 50 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts Interessant ist dass Struts auch eingegebene Zeichen wie lt oder korrekt behandeln w rde Diese Zeichen k nnen in Web Anwendungen Probleme verursachen wenn sie nicht korrekt behandelt werden Es gibt selbstverst ndlich noch viel mehr M glichkeiten bei der Entwicklung mit Struts Dieses Beispiel ist eine sehr einfache Struts Anwendung 3 9 Vergleichbare Frameworks Neben Struts gibt es noch eine Reihe von weiteren MVC Frameworks die hnliche Ziele verfolgen Oft unterscheiden sie sich durch einen erweiterten Funktionsumfang von Struts Dadurch sollen dem Entwickler mehr Werkzeuge in die Hand gegeben und die Entwicklungszeit verk rzt werden Dies verl ngert auf der anderen Seite aber auch die n tige Einarbeitungszeit Dieses Kapitel gibt einen berblick ber einige Frameworks Wenn eine Entscheidung f r oder gegen Struts getroffen werden soll ist es wichtig die Alternativen zu kennen EB Integration m glich Cache Manager Content Management D Online Demo B Beispielcode F Frequently Asked Questions G User s
42. bbildung 2 5 Die beiden Varianten des Model 1 9 Abbildung 2 6 Ablauf einer Anfrage beim Model 2 erste Vanante eee eeeeeeeeceeeeeeeee 10 Abbildung 2 7 Ablauf einer Anfrage beim Model 2 zweite Vanante cee eeseeeeeeeeee 11 Abbildung 2 8 Die Kommunikation der Komponenten 12 Abbildung 3 1 Architektur des Struts Frameworks 2200222400ssssesssnsenssnnennnnnnnnnensnnn nenn 19 Abbildung 3 2 Pr srammablauf in Struts a 2 dee 20 Abbildung 3 3 UML Klassendiagramm der Struts Klassen im Package Org apache Struts ACHON nahe RAZER SEHE IN 38 Abbildung 3 4 Struts UML Sequenzdiagramm ceescecessceessececeeceeceeeeeceeeeeeseeeeneeeenaeeees 40 Abbildung 3 5 Die Beispiel Applikation 0 00 ceeeeeeeesneecsseceseeeseeeeseecsaeceaeesseeesaeecsaecnseensees 41 Abbildung 3 6 Die Struts Verzeichnisstruktur 02200ss0snoneenennsonnnoennnnnennnnsonnnnonnnonee 42 Abbildung 3 7 Fehlermeldungen EE 50 Abbildung 3 8 Die erste Struts MVC Anwendung funktioniert ursersenesnsensnnersneesnne nee 50 Abbildung 3 9 Vergleich bekannter MNVC Prameworkz 2er snnennnennnnesnnen nennen 51 Abbildung 3 10 Die Komponenten des Turbine Frameworks AA 53 Abbildung 3 11 Die Barracuda Architektur 55 Abbildung 4 1 ADB Info im J2EE Schichtenmodel AAA 59 Abbildung 4 2 Struktur der JSP Version von AIDPR Into 60 Abbildung 4 3 Screenshot Struts Console Konfigurieren einer Struts Action n se 67 Abbildung 4 4 Screenshot Sciowor
43. ben und hat somit Zugriff auf alle relevanten Daten 01 package beispiel 03 import javax servlet http 04 import org apache struts action Struts 05 06 public final class SubmitAction extends Action 07 08 Auszufuehrende Aktion definieren 09 public ActionForward perform ActionMapping mapping 10 ActionForm form 11 HttpServletRequest request 12 HttpServletResponse response 13 14 SubmitForm f SubmitForm form Form Bean holen 15 String name f getName Name holen 16 und veraendert im request abspeichern 17 request setAttribute name name toUpperCase 18 19 zum success Ziel weiterleiten 20 return mapping findForward success 21 22 Listing 3 7 Submit Action java In diesem Beispiel wird lediglich das Property name aus dem ActionForm Bean gelesen in Grossbuchstaben umgewandelt und im Request abgespeichert Danach wird zum success Ziel weitergeleitet Die Konfigurationsdatei struts config xml definiert als success Ziel das View index jsp Da Struts nur eine Instanz der Action Klasse erstellt und alle Sessions die gleiche Instanz benutzen sollten keine Klassenvariablen sondern nur lokale Variablen benutzt werden Die kompilierte Datei SubmitAction class muss in das Verzeichnis WEB INF classes kopiert werden 3 8 8 Schritt 8 Testen der Applikation Zuerst sollte Tomcat neu gestartet werden Dies sollte immer geschehen nachdem eine Java Klasse ei
44. bjekt Dieses verwendet die Methoden des Model Objektes um den internen Zustand zu ndern Anschliessend wird das View Objekt benachrichtigt Das Model wird in einfachen Applikationen mittels Java Beans umgesetzt Bei komplexen Applikationen k nnen auch Enterprise Java Beans verwendet werden 2 3 2 Model 1 Architektur Die Model 1 Architektur gibt es in zwei verschiedenen Varianten Bei der ersten Variante werden die Beschaffung der Daten die Anwendung der Gesch ftslogik und die Darstellung des erzeugten Inhalts von nur einer JSP Seite vorgenommen Vorteil dieses Ansatzes ist die einfache Implementierung Dieser Ansatz eignet sich f r kleine und berschaubare Applikationen Der Nachteil ist die starke Vermischung von HTML und Java Code und der insgesamt un bersichtliche JSP Quellcode Diese Variante ist ausserdem schlecht erweiterbar und skalierbar JSP RE Gesch ftslogik 1 gm s er O Abbildung 2 5 Die beiden Varianten des Model 1 Die erste Variante kann durch Benutzen von Java Beans erweitert werden Das Prinzip der 2 Schichten Architektur bleibt bestehen allerdings kann ein Grossteil der Gesch ftslogik sowie der Datenzugriffslogik und damit des Java Codes in Beans ausgelagert werden Vorteil dieses Ansatzes ist die Trennung von HTML und Java Code Jetzt k nnen Java Entwickler und Web Designer an verschiedenen Komponenten arbeiten Durch die Auslagerung des Java Codes wird die Wiederverwertbarkeit der Komponente
45. d Zustandsinformationen wie auch entsprechende Kennzahlen abrufbar Ausgehend von einer idealtypischen Data Warehouse Architektur unterscheidet auch die ADB die Ladeseite von der Extraktionsseite Das Laden der ADB umfasst die Beschaffung der Daten aus den operativen Systemen ADB Info stellt Status und Kennzahlen die beim Laden der Daten von Interesse sein k nnen auf Abruf zur Verf gung Das Extrahieren der Daten umfasst das Zurverf gungstellen der im Ladeprozess gewonnenen und strukturiert abgelegten Daten ADB Info stellt auch hier Informationen ber den Verlauf der Extraktionsprozesse und die anfallenden Kennzahlen zur Verf gung Genauere Angaben zu den w hrend des Ladeprozesses verarbeiteten Datenmengen geben die Kennzahlen Es steht einerseits ein Bericht bez glich der Anzahl geladener und zur ckgewiesener Datens tze zur Verf gung und andererseits ein Bericht der nur die Anzahl der zur ckgewiesenen Datens tze ausweist Die Kennzahlen der Extraktion geben Auskunft ber die w hrend des Extraktionsprozesses neuen ge nderten und gel schten Datens tze Es ist zu beachten dass eine Verarbeitung der Daten nur an Werktagen stattfindet Da die Verarbeitung der Daten nachts geschieht wird beim Start von ADB Info vom ermittelten aktuellen Datum automatisch ein Tag abgezogen bzw an einem Wochenendtag oder Montag zum letzten Freitag gewechselt ADB Info lief bereits seit ca einem Jahr als ASP Applikation produktiv auf einem Mic
46. danken Der ideale Leser dieser Diplomarbeit sollte ein gutes Verst ndnis von der Arbeitsweise des Internets und von Client Server Architekturen haben Java JSP HTML sowie XML Kenntnisse werden vorausgesetzt Einsatz des J2EE Frameworks Jakarta Struts V Abk rzungsverzeichnis Abk rzungsverzeichnis ADB API ASP EIS EJB ERP GUI US J2EE JAR JDBC JMS JNDI JSF JSP JVM MVC RDBMS SEU WAR WAS WML WSAD XML ZKB Abfrageorientierte Datenbasis ZKB Data Warehouse Application Programming Interface Active Server Pages Enterprise Information Systems Enterprise Java Bean Enterprise Resource Planning Graphical User Interface Internet Information Server Java 2 Enterprise Edition Java Archiv Java Database Connectivity Java Message Service Java Naming and Directory Interface Java Server Faces Java Server Pages Java Virtual Machine Model View Controller Relational Database Management System Software Entwicklungsumgebung in der ZKB Java Archiv f r Web Applikationen IBM WebSphere Application Server Wireless Markup Language IBM WebSphere Application Developer Studio Extensible Markup Language Z rcher Kantonalbank Einsatz des J2EE Frameworks Jakarta Struts Vil Darstellungsverzeichnis Darstellungsverzeichnis Abbildungen Abbildung 2 1 Die JZEE Plattform u aa 3 Abbildung 2 2 Anfrage einer JSP Seite eegene Ben 6 Abbildung 2 3 Das Zusammenspiel der Komponenten 7 Abbildung RE E E 8 A
47. das mit dieser Aktion verwendet werden soll e scope Der G ltigkeitsbereich in dem das ActionForm Bean existiert Einsatz des J2EE Frameworks Jakarta Struts 33 Jakarta Struts e input Das JSP von dem aus der Request abgesendet wurde und an das im Fehlerfall zur ckgeleitet wird Die lt action gt Elemente k nnen zudem lokale Forwards enthalten die nur innerhalb einer Aktion g ltig sind Dazu muss innerhalb des lt action gt Bereichs ein lt forward gt Element eingef gt werden welches die gleichen Attribute hat wie die lt forward gt Elemente innerhalb des lt global forwards gt Bereichs Es gibt ausserdem die M glichkeit in einem lt data sources gt Bereich Datenquellen zu definieren Struts bietet einen einfachen JDBC Connection Pool Die Datenbankanbindung mit Struts Komponenten ist nach Aussage der Entwickler aber nicht sonderlich ausgereift Es wird empfohlen die Datenbankanbindung selbst zu entwickeln bzw die Funktionalit t des Applikation Servers zu nutzen Bei der Entwicklung von ADB Info kam die zweite Variante zum Einsatz 3 6 3 Der Deployment Descriptor der Webanwendung Die Konfiguration des Servlet Containers in dem die Webapplikation l uft wird in der XML Datei web xml definiert Die Datei web xml muss vom Entwickler erzeugt und im WEB INF Verzeichnis der Applikation abgelegt werden Das Format dieses Dokuments wird definiert durch die Document Type Definition http java sun com j2ee dtds web app
48. dem Dach der Apache Organisation entwickelt wurde hat sicher sehr stark dazu beigetragen Struts ist Open Source Software Das Framework wird unter der Apache Software Foundation License ASF vertrieben Der Code ist durch Copyright gesch tzt darf aber frei in jeder beliebigen Anwendung verwendet werden In diesem Kapitel wird zuerst die Architektur von Struts erl utert und der Programmablauf dargestellt Danach wird ein berblick ber das Framework gegeben und sp ter werden die einzelnen Komponenten im Detail beschrieben Das UML Klassendiagramm von Struts und ein Sequenzdiagramm erm glichen einen Einblick in die interne Arbeitsweise des Frameworks Am Ende dieses Kapitels befindet sich eine Art Schritt f r Schritt Anleitung die anhand eines sehr einfachen Beispiels das Erstellen einer Struts Applikation erkl rt Dies ist sozusagen die praktische Anleitung zum Erlernen von Struts nachdem der Leser die eher theoretischen Kapitel ber die Struts Komponenten gelesen hat Abgeschlossen wird das Kapitel mit einem berblick ber einige weitere Frameworks die hnliche Ans tze wie Struts verfolgen Die Implementierung der Beispielprogramme und die Ausf hrungen zum Framework beziehen sich ausschliesslich auf die Struts Version 1 0 2 Eine detaillierte Dokumentation des Frameworks findet sich in Stru3 3 1 Architektur Getreu dem Model View Controller Paradigma verwendet Struts drei Hauptkomponenten Ein als Controller fungierendes Se
49. e Turbine ist wie Struts eine Umsetzung des MVC Paradigma und wird ebenfalls im Jakarta Projekt der Apache Organisation entwickelt ist jedoch deutlich komplexer als Struts Das Framework verf gt ber zus tzliche Services welche die Entwicklung von Web Applikationen im Bezug auf alle drei Komponenten der MVC Architektur unterst tzen So ist beispielsweise ein OR Mapping Service zur Modellerzeugung und ein Service zur Template basierten Erzeugung von Views integriert Erg nzend stehen ein ausgekl geltes Benutzerkonzept Security Services Logging Services Pool Services und weitere Integrationsm glichkeiten zur Verf gung Turbine besitzt damit die F higkeiten einer vollst ndigen Entwicklungsumgebung und steht in einem vorkonfigurierten Bundle inklusive der Servlet Engine Tomcat als sogenanntes Turbine Development Kit TDK zum Download bereit Die Actions stellen eines von insgesamt f nf Modulen dar aus denen sich Turbine zusammensetzt Sie enthalten die eigentliche Business Logik z B Verarbeitung von Formulardaten oder auch Aufruf von EJBs Actions verarbeiten jedoch keine HTTP Requests sondern werden vom Page Modul aufgerufen Durch diese Trennung k nnen die Actions an unterschiedlichen Stellen der Applikation wiederverwendet werden Das Page Modul ist gleichzeitig ein Container f r die restlichen Module Layout Screen und Navigation Es k mmert sich also um die ankommenden HTTP Requests und f hrt die genannten Module nacheinander
50. e L sungen kann der Output auch als XML bzw via XSLT transformiert zur ckgegeben werden Ein integriertes Sicherheitskonzept erm glicht die automatische Pr fung von Zugriffsrestriktionen Dazu stehen die speziellen Klassen SecuredDBObject und DBController zur Verf gung Mit der Version 4 0 wurde Struts integriert indem die Controller direkt von den Struts Actions abgeleitet wurden und sich so in das Request Mapping von Struts eingliedern Man erweiterte damit das reine MVC Framework Struts um die Expresso Funktionalit t um damit bessere Synergieeffekte zu erzielen 3 9 4 WebWork OpenSymphony WebWork ist ein Community Projekt welches in mancher Hinsicht dem Framework Struts hnelt sich aber dennoch entschieden davon distanziert WebWork will sich durch seine Einfachheit speziell im Feld der Pr sentations Frameworks etablieren Im Gegensatz zu den bisher vorgestellten Frameworks verwirklicht es ein hierarchisches MVC Konzept Kern des Frameworks ist die Action API sie ist die Grundlage f r die Implementierung der H MVC Controller Alle HTTP Requests werden an ein Dispatcher Servlet weitergeleitet welches die passende Action sowie einen Kontext bestimmt Der Kontext wird ausgehend von der DefaultActionFactory in einer Kette weiterer Factories bestimmt Diese Factories bilden eine Hierarchie wodurch die Ablaufsteuerung effizienter getrennt wird Danach kann die Action zur Ausf hrung gebracht werden Dazu muss sie mit Settern initia
51. e Zustandsinformationen persistent speichern k nnen oder sie k nnen Fassaden sein die wissen wie sie bei Bedarf Informationen aus externen Quellen erhalten k nnen wie z B aus einer Datenbank Auch Enterprise Java Beans EJBs werden blicherweise verwendet um interne Zustandsinformationen zu repr sentieren In weniger umfangreichen Applikationen k nnen die m glichen Aktionen in die Action Klassen eingebettet werden die einen Teil der Rolle des Controllers bernehmen Dies ist angemessen solange die Logik sehr einfach ist oder wenn die Wiederverwendbarkeit der Gesch ftslogik in anderen Umgebungen nicht in Erw gung gezogen wird Das Struts Framework unterst tzt diese Vorgehensweise jedoch ist die Trennung der Gesch ftslogik von den Action Klassen zu empfehlen Struts berl sst dem Entwickler die Entwicklung der Model Klassen jedoch vollst ndig Der Hauptbestandteil des Frameworks ist der Controller und die Tag Libraries zum Erstellen der Views 3 4 1 ActionForm Beans ActionForm Beans dienen dem Zwischenspeichern und Validieren von Formulardaten in einer View Das Struts Framework nimmt generell an dass f r jedes Formular in der Anwendung ein ActionForm Bean d h eine Klasse die von der ActionForm Klasse erbt erzeugt wurde Falls solche Beans in der Konfigurationsdatei struts config xml definiert sind wird das Struts Controller Servlet automatisch folgende Schritte ausf hren bevor die passende Action Methode gestar
52. e equals Name eingegeben 40 errors add Name new ActionError error name 41 42 if anrede null anrede equals Anrede eingegeben 43 errors add Anrede new ActionError error anrede 44 45 return errors 46 47 Listing 3 6 SubmitForm java Die Methode reset initialisiert die Properties bei einem Neustart der Applikation und die Methode validate berpr ft die Eingaben des Benutzers In diesem Beispiel wird lediglich berpr ft ob berhaupt etwas eingegeben wurde und im Fehlerfall der Struts errors Collection ein Struts ActionError hinzugef gt Die Fehlermeldung wird ebenfalls aus der Message Ressource gelesen und kann somit ebenfalls internationalisiert werden Die kompilierte Datei SubmitForm class muss in das Verzeichnis WEB INF classes kopiert werden 3 8 7 Schritt 7 Entwickeln der Action Klasse Die Action Klassen sind aus der Sicht des Entwicklers das Herz der Applikation In diesen Klassen wird die eigentliche Gesch ftslogik aufgerufen Sie sollten so klein wie m glich gehalten werden und lediglich andere Java Beans oder gar EJBs aufrufen die z B eine Datenbank ansprechen und die Gesch ftslogik ausf hren 48 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts Die Klasse SubmitAction wird von der Struts Action Klasse abgeleitet und muss eine Methode mit dem Namen perform implementieren Die Methode bekommt u a den Request und die ActionForm berge
53. e noch nicht existiert o Die Methode processPopulate f llt die Properties in der ActionForm Klasse mit den Formulardaten aus dem Request Parameter des aktuellen Request o Die Methode processValidate ruft die validate Methode der ActionForm Klasse auf und ruft im Fehlerfall die letzte View wieder auf Die Action Klasse wird von ActionServlet erzeugt und benutzt Die Action Klasse muss abgeleitet und die perform Methode berschrieben werden Von dieser Methode aus kann dann die Gesch ftslogik angesprochen werden o Die Methode perform verarbeitet den HTTP Request und erzeugt den HTTP Response Sie liefert eine Instanz von ActionForward zur ck welche beschreibt wohin und wie die Kontrolle weitergeleitet werden soll o Die Methode saveErrors sichert evtl vorhandene Fehlermeldungen in den zugeh rigen Request ActionForm Die ActionForm Klasse enth lt die Formulardaten eines HTML Formulars Struts extrahiert die Werte automatisch aus dem HttpServletRequest und schreibt sie mit Hilfe der Setter Methoden in die ActionForm Klasse Mapping Management o Die Klasse ActionMappings enth lt eine Collection von ActionMapping Objekten o Die Klasse ActionMapping enth lt Informationen ber die Aktionen Die Informationen kommen aus der Konfigurationsdatei struts config xml lt action path user type xxx UserAction name userForm scope session gt path definiert die Request URI mit der eine Aktion aufgerufen wird t
54. ebenen Daten im Formular an und begr sst den Anwender mit der Anrede und seinem Namen F r das Ausf hren der Applikation benutze ich den Servlet Container Apache Tomcat 4 0 Der Quellcode des Beispiels befindet sich im Anhang A 1 auf der CD S mtliche ben tigte Software befindet sich im Anhang B auf der CD Beim Durcharbeiten der Anleitung sollte der Leser immer die offizielle Struts Dokumentation zur Hand haben Um die bersichtlichkeit zu bewahren werden hier nicht alle Details beschrieben Java JSP und HTML Kenntnisse sowie die Lekt re der vorangegangenen Kapitel werden vorausgesetzt Struts Beispiel Name Anrede Frau Herr Absenden Abbildung 3 5 Die Beispiel Applikation 3 8 1 Schritt 1 Downloaden und Installieren von Struts Struts Kann auf der Homepage des Jakarta Projekts heruntergeladen werden Ich benutze f r die Entwicklung dieses Beispiels die Version 1 0 2 Voraussetzung f r das Kompilieren der selbstgeschriebenen Klassen ist ein installiertes Java Development Kit JDK der Version 1 3 oder h her Ausserdem sollte das J2EE Software Development Kit SDK der Version 1 3 1 oder h her installiert sein Dies enth lt den von Struts ben tigten Java API for XML Parsing JAXP kompatiblen XML Parser und die javax servlet Klassen Wenn man das Struts Archiv entpackt und in das Verzeichnis webapps wechselt findet man eine Datei mit dem Namen struts blank war Dies ist eine leere Struts
55. ebenfalls das MVC Paradigma um Es l sst sich ber XML Dateien konfigurieren um eine Lose Kopplung der Komponenten zu erreichen Die Entwicklung dieses Frameworks begann schon bevor Struts erh ltlich war W re Struts zu diesem Zeitpunkt erh ltlich gewesen w re laut Aussage der Entwickler Struts eingesetzt worden Zum jetzigen Zeitpunkt l sst sich das in der HTML Onlinebank eingesetzte Framework nicht einfach durch Struts ersetzen weil es sehr stark mit Der Einsatz von Open Source Software ist in der ZKB unter Einhaltung von Rahmenbedingungen erlaubt Siehe dazu 5 3 74 Einsatz des J2EE Frameworks Jakarta Struts Erkenntnisse dem restlichen Code verbunden ist Ein Einsatz von Struts in der HTML Onlinebank ist also erst nach erheblichem Aufwand m glich jedoch nicht unm glich Inwiefern sich der Aufwand lohnt kann ich nicht ausreichend beurteilen Neben der gr ssten Web Applikation der ZKB der HTML Onlinebank gibt es noch eine ganze Reihe weiterer grosser Web Applikationen bei denen der Einsatz von Struts sinnvoll ist Auch hier ist es schwer den Aufwand f r die Portierung zu beurteilen Bei einer Neuentwicklung gr sserer Web Applikationen ist der Einsatz von Struts ohne Einschr nkung zu empfehlen F r den Einsatz des Open Source Frameworks Struts in der ZKB m ssen Rahmenbedingungen geschaffen werden So muss ein System Owner Verantwortlich f r wirtschaftlichen Einsatz bzw ein System Engineer Verantwortlich f
56. elle bemerkbar Diese zwei Eigenschaften treten bei beiden Varianten auf Somit lassen sich die Ergebnisse gut vergleichen Durchschnittswerte aller 9 Messungen Variante Antwortzeit Request ms Requests sek JSP 1 49 Struts 1 889 1 45 Fazit Ein Vergleich der Durchschnittswerte beider Varianten zeigt dass die JSP Variante nur minimal schneller ist als die Struts Variante Dieser Unterschied k nnte aber auch durch 72 Einsatz des J2EE Frameworks Jakarta Struts Erkenntnisse Einfl sse von Aussen zustande kommen Es scheint als w rde der Dispatch Mechanismus des Struts Controllers keine zus tzliche Zeit ben tigen Zumindest ist der Unterschied kaum messbar Ein direkter Aufruf einer JSP Seite auf dem Server ist nahezu gleich schnell wie der Aufruf einer Struts Action Der Einsatz von Struts schl gt sich also nicht messbar auf die Performance nieder 5 1 3 Entwicklungsaufwand Beim Vergleich des Entwicklungsaufwands der beiden Varianten gehe ich davon aus dass ein Entwickler gute Java und J2EE Kenntnisse hat Wie bei jedem Framework ist auch bei Struts zu Beginn der Entwicklung einer Applikation der Zeitaufwand gr sser weil das Framework zuerst erlernt werden muss Bis der Entwickler sich in Struts eingearbeitet hat vergehen einige Tage in denen bei der Entwicklung einer Model 1 Applikation mit JSPs schon erste Ergebnisse sichtbar w ren Soll sich der Einsatz eines Frameworks lohnen muss diese Zeit wieder kompensiert werden
57. elsweise generiert der Client beim Aufruf mit HttpBench 30 20 http www yahoo de 30 Threads die gleichzeitig jeweils 20 Requests auf www yahoo com ausf hren Insgesamt werden also 600 Requests ausgef hrt Der Client gibt die Antwortzeit und die Anzahl der Requests pro Sekunde aus Die ben tigten Java Klassen befinden sich im Anhang A A auf der CD Im Folgenden ist der Quellcode des Clients dargestellt 01 IA 02 HTTP Benchmark 03 08 2002 Markus Herrmann 04 EN 05 Aufruf HttpBench lt Threads gt lt Requests gt lt URL gt Di 06 K Threads Anz der zu erzeugenden Threads 2 07 a Requests Anz der Requests pro Thread i 08 URL Request URL 2 KKK KKK kk KKK KKK KK KKK KKK KK KKK KKK KKK KK KKK KKK KKK KKK KKK 11 import java io Streams 12 import java net URL Request 13 import java text Formatierung der Ausgabe von Dezimalzahlen 14 15 public class HttpBench extends Thread 16 17 static int THREADS 1 Anz gleichzeitiger Threads 18 static int REQUESTS_PER_THREAD 10 Requests pro Thread 19 static URL url URL Objekt 20 21 public static void main String arg throws Exception 22 23 url new URL arg 2 URL auslesen 24 THREADS Integer parselnt arg 0 Anz Threads auslesen 25 REQUESTS_PER_THREAD Integer parselnt arg 1 Anz Requests auslesen 26 27 Thread thread new Thread THREADS Threads erzeugen 28 for int i 0 i lt THREADS
58. en unterteilt Struts HTML Tags Struts Bean Tags Struts Logic Tags und Struts Template Tags Die Struts HTML Tag Library wird zum Erzeugen von Formularen benutzt Ausserdem enth lt sie einige Tags die generell in Struts JSPs eingesetzt werden Die Struts Bean Tag Library enth lt Tags f r den Zugriff auf Beans und deren Properties sowie f r das Erzeugen neuer Beans aus Cookies Requests oder Request Parametern Die Struts Logic Tag Library erm glicht die bedingte Ausgabe von Text bzw Tags die wiederholte Ausgabe von Text bzw Tags sowie die Umsetzung von Steuerungslogik in der View Die Struts Template Tag Library enth lt Tags die einen Template Mechanismus definieren Die einzelnen Tags werden nun kurz beschrieben Eine detaillierte Dokumentation aller Funktionalit t und Parameter findet sich in Stru3 Struts HTML Tags Tag Name Beschreibung base Erzeugt ein HTML lt base gt Element mit dem Pfad zur Applikation button Erzeugt ein Eingabefeld vom Typ Button f r ein HTML Formular cancel Erzeugt einen Cancel Button f r ein HTML Formular checkbox Erzeugt eine Checkbox f r ein HTML Formular EITOTS Zeigt Fehlermeldungen an falls die Errors Collection Errors enth lt file Erzeugt einen Datei ffnen Dialog form Erzeugt ein HTML Formular Tag hidden Erzeugt verstecktes hidden Textfeld f r ein HTML Formular html Erzeugt ein HTML lt html gt Element image Erzeugt einen grafischen Submit Button f r ein HTML Formular img E
59. ene Beispielapplikation ADB Info wurde f r IBM WebSphere entwickelt 2 5 1 Jakarta Tomcat Server Auch wenn Jakarta Tomcat bei der ZKB nicht eingesetzt wird soll der Server hier kurz vorgestellt werden da er in der Welt der Applikationsserver eine bedeutende Rolle spielt Tomcat ist die offizielle Server Referenzimplementierung der Servlet bzw JSP Spezifikation von Sun Der Server hat eine lange Entwicklungsgeschichte hinter sich Seit der aktuellen Version 4 besteht der Server aus den zwei Hauptkomponenten Jasper JSP Compiler und JSP Laufzeitumgebung und Catalina Servlet Container Jasper ist f r die Ausf hrung der JSP Seiten zust ndig JSP Seiten werden kompiliert und an den Servlet Container weitergereicht Jasper ist eine eigenst ndige Komponente die als Servlet realisiert und somit in jedem Servlet Container einsetzbar ist Der Catalina Servlet Container ist der im Jakarta Projekt f r Tomcat entwickelte Nachfolger von Apache JServ Zusammen bilden Jasper und Catalina einen Server der den Web bezogenen Teil der J2EE Spezifikation umsetzt Jakarta Tomcat legt die Massst be f r die Portabilit t von J2EE Applikationen unter verschiedenen Applikations Servern fest Zahlreiche Standard Komponenten auch Struts werden auf Tomcat entwickelt und von dort auf kommerzielle Applikations Server portiert Tomcat ist Open Source Software und f r Windows sowie f r Unix und Linux Plattformen erh ltlich Der Server wird unter dem Dach d
60. enutzen konvertiert werden Struts Console arbeitet mit diversen Entwicklungsumgebungen wie z B Borland JBuilder usw zusammen Mehr Informationen gibt es auf Cons Bstruts Console C java StrutsConsole struts config xml E lol x File Tools Options Help Bjala struts config xml 1 0 Struts Config Action Data Sources C Form Beans Path isaveSubscription Global Forwards 9 B Action Mappings Parameter amp JeditRegistration SE amp jeditSubscription Default _ for unknown jlogoff logon Type lorg apache struts webapp example SaveSubscriptionAction isaveRegistration IsaveSubseription Hour Include fadminiaddFormBean SE 28 JadminiaddF onward Forward fadmin addMapping Form Bean Forwards Properties fadminireload JadminiremoveFormBea subscriptionForm sl Add JadminirernoveF orward adminfremoveMapping Validate Wi Input subscription jsp Scope request v Prefix Attribute Suffix Abbildung 4 3 Screenshot Struts Console Konfigurieren einer Struts Action 4 5 2 Scioworks Camino Scioworks Camino ist ein wesentlich umfangreicheres Werkzeug als Struts Console Mit Camino lassen sich ganze Struts Applikationen grafisch mit der Maus zusammenstellen Die Software erstellt aus dem De
61. er Apache Organisation im Umfeld des Jakarta Projekts entwickelt Die Apache Group ist eine Gemeinschaft von Entwicklern Sie gr ndeten die Apache Software Foundation ASF die als Non Profit Organisation die Apache Projekte unterst tzt und garantiert dass diese von freiwilligen Mitarbeitern weitergef hrt werden Die Es gibt allerdings auch Tomcat Module die sich in eine vorhandene Apache Installation einbinden lassen Diese Variante w rde dann dem In Process Modell entsprechen Einsatz des J2EE Frameworks Jakarta Struts 15 Einf hrung und Grundbegriffe Beteiligung von Firmen wie Sun IBM und Oracle soll das Vertrauen der Anwender in die Fortf hrung und Qualit t der Projekte st rken Unter dem Dach der Apache Group entstehen neben dem sehr stark verbreiteten Apache Webserver Projekte im Perl PHP XML und Java Umfeld Jakarta Projekt Jakarta ist ein Open Source Projekt und verantwortlich f r die Entwicklung von Java basierten Server L sungen wie Tomcat und Frameworks wie Turbine oder Struts Weitere Informationen gibt es unter Apac bzw Tomc und in Tura01 Das Struts Framework wird in Kapitel 3 noch ausf hrlich behandelt 2 5 2 IBM WebSphere Application Server Der WebSphere Application Server 4 0 ist im Vergleich zu Tomcat nicht nur ein JSP und Servlet Container sondern ein vollst ndiger J2EE Server WebSphere stellt Entwicklern ein Portfolio an Programmierhilfen f r Anwendungen sowie f r dazugeh rig
62. er Faces http jcp org jsr detail 127 jsp Macromedia Coldfusion Application Server http www macromedia com Orion Application Server http www orionserver com Resin Application Server http www caucho com Scioworks Camino http www scioworks com Jakarta Struts Framework http jakarta apache org struts Struts and JSF http jakarta apache org struts proposals struts faces html The Struts User s Guide http jakarta apache org struts userGuide Struts Controller UML diagrams http rollerjm free fr pro Struts html Apache Tomcat Server http jakarta apache org tomcat Turbine Framework http jakarta apache org turbine Velocity template engine http jakarta apache org velocity Waferproject Feature Matrix http www waferproject org feature matrix2 html WebWork Framework http opensymphony com webwork Einsatz des J2EE Frameworks Jakarta Struts Stichwortverzeichnis Architekturen sa 8 Een tee 14 Barracuda se 54 C CP E 14 Canal 15 OCT E AE T ORTEEIRSEL URS ERREGER 5 COL rnaen e 14 Contain i aden n ine 4 Deployment Deskriptoren 6 EIS seele eu 5 EB cai EEE eevee naan eee 5 Ek E 55 G ltigkeitsbereich eessen dees 11 IBM WebSphere Application Server 15 PEES amea e tere rere E ereer treet tet 3 Jakarta Struts uussasesackene 18 Jakarta Tomcat 2 2 2 13 Jasper due 15 EN 7 Java Server Faces unse 57 Jaya Server EE een 6 EE EE 5 JAX EE 5 e EE 5 II 4 IMS ea 5 INDT ar
63. er View Teil einer Struts basierten Anwendung wird blicherweise mit Java Server Pages konstruiert JSP Seiten k nnen statisches HTML oder XML enthalten Ausserdem k nnen mit Hilfe spezieller Action Tags erzeugte Inhalte zur Laufzeit eingef gt werden Die JSP Umgebung beinhaltet eine Sammlung von standardisierten Tags wie z B lt jsp useBean gt deren Zweck jeweils in der Java Server Pages Specification beschrieben ist Zus tzlich gibt es eine standardisierte M glichkeit eigene Tags zu definieren und sie in Custom Tag Libraries zu organisieren Struts beinhaltet eine umfassende Tag Bibliothek die es erm glicht GUIs zu erzeugen die vollst ndig internationalisierbar sind und die gut mit den ActionForm Beans interagieren um die Formulardaten zu verwalten Die Verwendung dieser Tags wird sp ter im Detail betrachtet Zus tzlich zu den JSP Seiten und den darin enthaltenen Aktionen und Tags ist es f r Gesch ftsobjekte oftmals notwendig selbst in der Lage zu sein basierend auf ihrem aktuellen Zustand zur Laufzeit in HTML oder XML berf hrt zu werden Der erzeugte Output eines solchen Objektes kann einfach in eine resultierende JSP Seite eingebunden werden indem das standardisierte lt jsp include gt Action Tag verwendet wird vgl Stru3 Einsatz des J2EE Frameworks Jakarta Struts 25 Jakarta Struts 3 5 1 Struts Tags Die Tag Libraries von Struts sind ein wesentlicher Bestandteil des Frameworks Sie werden in vier Grupp
64. ereich einpflegen und wieder auslesen lassen Da JSP Seiten nach der bersetzung vom Container zu Servlets werden ist es hilfreich zu wissen welche vgl Tura01 und Will01 Einsatz des J2EE Frameworks Jakarta Struts 11 Einf hrung und Grundbegriffe M glichkeiten der Datenspeicherung in einem Servlet existieren Damit l sst sich leichter nachvollziehen welcher G ltigkeitsbereich in einer JSP Seite durch welchen Datencontainer in einem Servlet repr sentiert wird Nachfolgend sind die verschiedenen Objekte aufgelistet die sich zur Datenaufnahme eignen In Klammern ist der entsprechende G ltigkeitsbereich in einer JSP Seite angegeben e Lokale Variablen der Methode service page Eignet sich nicht zum Datentransfer zwischen Web Komponenten e Das Request Objekt HttpservletRequest request Die Sichtbarkeit der Daten erstreckt sich tiber eine ganze Anfrage e Das Session Objekt uttpsession session Die Sichtbarkeit der Daten erstreckt sich ber einzelne Anfragen hinaus auf die ganze Session Der Zugriff geschieht mit der Methode getsession des HttpServletRequest Objekts e Das Context Objekt servietcontext application Die Sichtbarkeit der Daten erstreckt sich ber die gesamte Web Applikation und alle ihre Sessions Der Zugriff geschieht mit der Methode getservletcontext des ServletContext Objekts Nachfolgend werden die M glichkeiten der Kommunikation zwischen Web Komponenten aufgezeigt Die folgenden Absc
65. es Transaktions Management f r Sicherheitsroutinen und Clustering Optionen zur Optimierung der Leistungsf higkeit der Programme zur Verf gung WebSphere ist kompatibel zu vielen Software Plattformen und Business Applikationen darunter SAP PeopleSoft IBM CICS IMS und L sungen zur Host Integration Dar ber hinaus ist WebSphere problemlos mit Datenbanken wie IBM DB2 Oracle oder MS SQL Server sowie mit f hrender Middleware wie IBM MQsSeries Tivoli und Lotus Domino einsetzbar Zu den erweiterten Connectivity Features des Servers geh ren der Support f r DEE JCA CORBA Active X und eine verbesserte Datenbank Unterst tzung mit Connection Pooling Zu den unterst tzten Standards und Technologien z hlen UDDI Universal Description Discovery and Integration SOAP Simple Object Access Protocol WSDL Web Services Description Language EJB 2 0 Message Beans und eine erweiterte Integration f hrender XML Technologien Die Entwicklungsumgebung ist vollst ndig J2EE 1 2 zertifiziert Eine Kernkomponente des WebSphere Application Server ist der HTTP Server von IBM der auf dem Quellcode des Apache Webservers basiert Der Server arbeitet eng mit dem WebSphere Studio Application Developer WSAD zusammen WSAD integriert Java und Web Entwicklungstools in dieselbe Umgebung Es richtet sich an Entwickler von Java und J2EE Applikationen die integrierte JSP XML und Web Services Unterst tzung ben tigen WSAD erleichtert die Anbindung von Datenban
66. esammelt wurden profitiert jedes weitere Projekt vom Einsatz von Struts Meiner Erfahrung nach lohnt sich der Einsatz von Struts f r erfahrene J2EE Programmierer bereits ab einer Gr sse von 10 Views mit Benutzerinteraktion Dies entspricht der Definition von grossen bzw komplexen Web Applikationen in der ZKB SAR Siehe Definition der ZKB SAR f r komplexe Web Applikationen in Kapitel 4 2 Einsatz des J2EE Frameworks Jakarta Struts 73 Erkenntnisse 5 1 4 Wartbarkeit Was die Wartbarkeit anbelangt ist eine Struts Applikation einer reinen JSP L sung weit berlegen So muss beispielsweise f r eine nderung der Ausgabetexte von Views der Struts Variante lediglich die Ressourcen Datei ver ndert werden Durch Hinzuf gen einer neuen Ressourcen Datei in einer anderen Sprache w re die Applikation innerhalb von Minuten in einer anderen Sprache benutzbar S mtlicher Java und JSP Code bleibt in beiden F llen unver ndert Ebenso k nnte sich durch das Ausgliedern von Datenbank Code in der Struts Applikation die Datenbank ndern ohne dass Ver nderungen an allen Views n tig w ren Eine Struts Applikation ist besser strukturiert und somit die Architektur auch besser nachvollziehbar als bei einer JSP Applikation bei der s mtliche Funktionalit t in einer Datei steht Struts Programmierer pflegen und erweitern eine Struts Applikation wesentlich schneller als es ein JSP Programmierer in einer Model 1 Applikation schafft Diese Erfahrung
67. he Wenn der Wert true ist werden HTTP Header f r jeden Response gesetzt damit das Zwischenspeichern von generierten oder weitergeleiteten Responses im Browsers vermieden wird false Einsatz des J2EE Frameworks Jakarta Struts 35 Jakarta Struts e null Wenn der Wert true ist geben die Applikations Ressourcen null zur ck falls ein unbekannter Nachrichtenschl ssel verwendet wird Andernfalls wird eine Fehlermeldung zur ckgegeben die den Nachrichtenschl ssel enth lt true e tempDir Das zu verwendende tempor re Arbeitsverzeichnis beim Verarbeiten von Datei Uploads e validate true wenn das neue Format f r die Konfigurationsdatei benutzt wird true Konfiguration des Action Servlet Mappings Die Konfiguration des Action Servlet Mappings beschreibt in welchen F llen der Struts Controller eine Anfrage entgegennimmt und einen Response generiert Es gibt zwei verschiedene M glichkeiten zu definieren welche URLs vom Controller verarbeitet werden Pr fix Matching und Extension Matching Pr fix Matching leitet alle URLs die nach dem Kontextpfad der Applikation mit einem bestimmten Wert anfangen an den Controller weiter Folgendes Beispiel veranschaulicht dies lt servlet mapping gt lt servlet name gt action lt servlet name gt lt url pattern gt execute lt url pattern gt lt servlet mapping gt Dieser Eintrag in der Datei web xml w rde wenn der Kontextpfad der Web Applikation myapplication is
68. hestte se ese e s a near 54 3 9 3 EXPres One 2 ers hr sn en AE EE E EE EEE 55 BDA WED WOLK een ee ee EE EE EE 56 3 9 5 S n s Java Server bacesg ree E E EE E E EE E E E EE EEEE E EEEE Se 57 4 ENTWICKLUNG MIT STRUTS u0u0u04 0400004000 00H ann un ann nu nn anna an anna anna ann nennen nnmnnn nnnm 58 4 1 BEISPIELAPPLIKATION ADB INFO csesossssssessssssnssesssssnsneessnsennssesssnunnssessnnsnnsesssnsnssesssnssnsssssssssnsssessnee 58 ALL Infrastruktur und Architektur A AEN KENNEN EE 59 41 2 Datenz stift 2 4 2 ke Ri ss sivas jodacesvghs E es cass coehasdess setasesoshesvens saceetess 60 4 1 3 Implementierung der Model 1 Variante uurserserserseesnnennesnnesnnnennesnnennnennnnsnonsonsnensennnnnnnnnnnennnenen 60 4 1 4 Implementierung der Model 2 Variante mit Stute eee ee ceeeceecesecesecesecseecaeecaeeeaeeeseseeeeneens 61 4 2 GRUNDS TZE UND RICHTLINIEN BEI DER ZKB 2uucs00s0sssessssennnsensnnsnsnnensnnnnnnsessnnnnnnssssnsnnsnsssssssnnnssssnnee 63 4 3 SESSIONHANDLING UND SICHERHEIT cssscsssssssssssssscssscsssssscssccssesscessssessssscssossscssssssssssssssssssssssssnessessees 65 4 4 PORTABILIT T WSAD TOMCAT WEBSPHERE SERVER AIX sccssssscssssccsesssccccssssccccsssccccsssecceses 66 4 5 STRUTS TOOLS EE 67 4 9 1 tute onge eels a ae sh sEksse 67 4 5 2 Scioworks Camino e iae a E a E a EE E E EEEE E E E 67 5 ERKENNTNISSE ass sense ee ENESeE 69 5 1 VERGLEICH DER MODEL 1 UND STRUTS VARIANTE srcss
69. hmen dieser Arbeit nicht eingegangen 2 3 Architekturen Ein wichtiger Aspekt beim Entwickeln von Web Applikationen mit der J2EE Plattform ist die Wahl der vorhandenen Komponenten Technologien und die Aufteilung der Applikation auf die verschiedenen Komponenten Im Laufe der Zeit haben sich zwei Architekturen herauskristallisiert die in diesem Kapitel genauer vorgestellt werden Die Model 1 Architektur ist vergleichbar mit unz hligen anderen serverseitigen Skriptsprachen wie Microsoft ASP PHP oder auch CGI Die Model 2 Architektur ist eine Weiterentwicklung der Model 1 Architektur und versucht das MVC Paradigma umzusetzen 2 3 1 Das MVC Paradigma Das Model View Controller Paradigma wird nicht erst seit J2EE bei der Konstruktion von Applikationen mit grafischen Benutzerschnittstellen verwendet Schon bei der Programmierung mit Smalltalk wurde mit dem MVC Paradigma gearbeitet In Gamm01 wird die Aufteilung einer Applikation mit Benutzeroberfl che in die Model Datenbereitstellung View Pr sentation und Controller Ablaufsteuerung Objekte beschrieben Ein View Objekt muss sicherstellen dass seine Darstellung den Zustand des Model Objekts wiedergibt Das Model benachrichtigt die von ihm abh ngigen Views wenn sich seine Daten ndern und der Controller ndert abh ngig vom Benutzerverhalten das Model oder ruft andere Views auf Wichtig dabei ist dass ein Model keine Kenntnis von den View und Controller Komponenten haben muss und die Be
70. hnitte erkl ren die Kommunikation kurz anhand von Code Beispielen Es wird in allen vier Beispielen davon ausgegangen dass die Daten innerhalb einer Session transferiert werden scope session getAttribute setAttribute Servlet setAttribute getAttribute lt jso_getProperty gt lt jsp_setProperty gt Abbildung 2 8 Die Kommunikation der Komponenten vgl Tura01 12 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe JSP an Servlet Die JSP Seite muss die Daten mit pageContext setAttribute name wert scope zuerst speichern und kann dann mit lt jsp include gt oder lt jsp forward gt die Verantwortung an ein Servlet weitergeben Das Servlet kann nun mit HttpServletRequest getAttribute name HttpSession getAttribute name oder ServletContext getAttribute name auf die Daten zugreifen Servlet an JSP Das Servlet kann mit HttpServletRequest setAttribute name wert HttpSession setAttribute name wert oder ServletContext s tAttribute name wert Daten speichern und mit RequestDispatcher forward oder RequestDispatcher include die Verantwortung an eine JSP weiterleiten Die JSP Seite kann nun mit pageContext getAttribute name scope auf die Daten zugreifen JSP ber Bean an Servlet Beans sind Komponenten die in einer JSP Seite genutzt werden k nnen indem sie mit der Aktion lt jsp useBean id
71. i 29 30 thread i new HttpBench 31 Einsatz des J2EE Frameworks Jakarta Struts 69 Erkenntnisse 32 33 int requests THREADS REQUESTS_PER_THREAD Gesamt Anz Requests 34 35 Sy SLEM oU PELIEN EECHER et 36 ees 5382 2 SH HH HS SH SH 37 System out println Benchmark fuer URL url 38 39 System out print Threads THREADS 40 System out print Requests per Thread REQUESTS_PER_THREAD 41 System out println Requests gesamt requests 42 43 System out println Start Benchmark 44 45 long start System currentTimeMillis Zeitmessung beginnen 46 47 for int i 0 i lt THREADS i 48 49 thread i start Threads starten 50 51 52 for int i 0 i lt THREADS i 53 54 thread i join Warten auf Ende der Threads bzw Requests 55 56 57 long end System currentTimeMillis Zeitmessung beenden 58 59 System out println Ende Benchmark 60 61 long millis end start 62 double seks double millis 1000 63 double mins seks 60 64 double rps requests 1000 double millis 65 66 DecimalFormat dfl new DecimalFormat 0 00 123 456 78 67 DecimalFormat df2 new DecimalFormat 0 123 456 68 69 System out print Benoetigte Zeit Millisekunden df2 format millis 70 System out print Sekunden dfl format seks 71 System out println
72. ibt die Formulardaten automatisch in eine Bean und validiert diese Die Informationen ber die Zusammenh nge zwischen einer JSP View und der Formular Bean erh lt der Struts Controller aus der Konfigurationsdatei struts config xml Ein einfacher Struts Tag der Form lt html text property username gt erm glicht diese Funktionalit t innerhalb der JSP Das Java Bean ActionForm Bean aus dem die Werte bezogen werden muss im Tag nicht explizit definiert werden Struts w hlt automatisch die richtige Bean Ein einfaches Tag am Anfang einer JSP gibt im Fehlerfall Fehlermeldungen aus ohne dass der Entwickler sich explizit darum k mmern muss lt html errors gt Die Fehlermeldungen Konnen aus den internationalisierten Nachrichten Ressourcen der Applikation bezogen werden Die Anleitung zum Entwickeln einer kleinen Beispielapplikation in Kapitel 3 8 beschreibt dies im Detail Struts unterst tzt wie schon weiter oben beschrieben folgende HTML Tags f r das Erzeugen von Formularfeldern e Checkbox e Radiobutton e Auswahlliste e Texteingabefeld e Mehrzeiliges Texteingabefeld e Texteingabefeld f r Passw rter e Versteckte Felder e Reset Button e Submit Button Um die automatische Validierung der Formulardaten zu aktivieren muss in der zum Formular geh renden ActionForm Klasse die Methode validate berschrieben werden Die Methode wird vom Struts Controller aufgerufen nachdem die Properties gesetzt wurden
73. ie Applikation einzusteigen oder wenn die Session nach einer Zeit berschreitung vgl Stru3 Einsatz des J2EE Frameworks Jakarta Struts 31 Jakarta Struts ung ltig wird Falls eine g ltige Session ID existiert wird der Programmablauf normal weitergef hrt Validierung Neben der Validierung der Formulardaten in der ActionForm Bean kann auch in der perform Methode eine Validierung stattfinden Dies sollte aber nur der Fall sein wenn zur Validierung Gesch ftslogik angesprochen werden muss Gesch ftslogik Die perform Methode kann Gesch ftslogik z B Zugriffe auf eine Datenbank enthalten Gesch ftslogik sollte aber nur bei kleineren Applikationen in der Action Klasse enthalten sein Besser ist es die Gesch ftslogik in externe Klassen auch EJBs auszugliedern und diese Klassen durch Methodenaufrufe in der Action Klasse anzusprechen Kommunikation der Komponenten Die perform Methode erh lt die zu verarbeitenden Daten i d R durch die ActionForm Klasse und muss nach dem Ausf hren der Gesch ftslogik die Daten auch wieder in serverseitigen Objekten ablegen so dass sie bei der Darstellung der n chsten View benutzt werden k nnen Dies geschieht entweder wieder mit Hilfe der ActionForm Klasse oder in sogenannten HelperBeans die im Request oder Session G ltigkeitsbereich abgelegt werden Weiterleiten an eine View Durch Zur ckliefern eines ActionForward Objektes wird diejenige JSP Seite definiert die den Response auf den Re
74. iest die Daten f r kennzahlLoadl jsp aus der DB DBKennzahlLoad2 Liest die Daten f r kennzahlLoad2 jsp aus der DB DBStatusExtract Liest die Daten f r statusExtract jsp aus der DB DBDetailExtract Liest die Daten f r detailExtract jsp aus der DB DBKennzahlExtract2 Liest die Daten f r kennzahlExtract2 jsp aus der DB DBKennzahlExtract1 Liest die Daten f r kennzahlExtractl jsp aus der DB Sonstige Klassen Klasse ActualDate StructureStatus 62 Beschreibung Diese Klasse ermittelt den Tag an dem die letzten Verarbeitungen stattfanden Diese Klasse ist f r die Datenhaltung einer Zeile der Tabellen in statusLoad jsp und statusExtract jsp zust ndig Einsatz des J2EE Frameworks Jakarta Struts Entwicklung mit Struts StructureDetail Diese Klasse ist f r die Datenhaltung einer Zeile der Tabellen in detailLoad jsp und detailExtract jsp zust ndig StructureKennzahlLoad3 Diese Klasse ist f r die Datenhaltung einer Zeile der Tabelle in kennzahlLoad3 jsp zust ndig StructureKennzahlLoad1 Diese Klasse ist f r die Datenhaltung einer Zeile der Tabelle in kennzahlLoad1 jsp zust ndig StructureKennzahlLoad2 Diese Klasse ist f r die Datenhaltung einer Zeile der Tabelle in kennzahlLoad2 jsp zust ndig StructureKennzahlExtract2 Diese Klasse ist f r die Datenhaltung einer Zeile der Tabelle in kennzahlExtract2 jsp zust ndig StructureKennzahlExtract1 Diese Klasse ist f r die Datenhaltung einer Zeile der Tabelle in kennzah
75. iest die Property einer Bean und erzeugt den Wert die Werte als Variable im G ltigkeitsbereich page header Liest einen Request Header aus und erzeugt den Wert die Werte als Variable im G ltigkeitsbereich page include hnliche Funktionalit t wie der lt jsp include gt Tag Falls der Client keine Cookies unterst tzt wird automatisch URL Rewriting eingesetzt um die Session ID der URL als Parameter zu bergeben Mit Hilfe dieses Tags kann eine View aus mehreren Unterseiten zusammengesetzt werden Der Unterschied zum lt jsp include gt Tag ist dass bean include zur Laufzeit ausgef hrt wird also eine bedingte Ausf hrung des Tags m glich ist message Erzeugt eine internationalisierte Nachricht und gibt sie auf der Standardausgabe aus page Erzeugt eine Bean aus einem Element im G ltigkeitsbereich page parameter Liest einen Request Parameter aus und erzeugt den Wert als Variable im G ltigkeitsbereich page resource L dt eine Ressource der Web Applikation und schreibt sie in eine Bean size Erzeugt eine Bean mit der Anzahl der Elemente einer Collection oder Map struts Erzeugt eine Bean aus einem Objekt der internen Struts Konfiguration write Gibt die Property einer Bean auf der Standardausgabe aus Struts Logic Tags Tag Name Beschreibung equal If Tag F hrt den Body des Tags aus wenn die angegebene Variable einem bestimmten Wert entspricht forward Leitet an eine andere JSP weiter entspricht PageContext forward oder Http
76. igurationsdatei des Servlet Containers Im Root Verzeichnis werden die JSP und HTML Dateien abgelegt Die Datei web xml ist die Konfigurationsdatei f r den Servlet Container gt 12 lt xml version 1 0 encoding 1S0 8859 1 gt 13 14 lt DOCTYPE web app 15 PUBLIC Sun Microsystems Inc DTD Web Application 2 2 EN 16 http java sun com j2ee dtds web app_2_2 dtd gt 17 18 lt web app gt 19 20 lt Standard Action Servlet Configuration with debugging 21 lt servlet gt 22 lt servlet name gt action lt servlet name gt 23 lt servlet class gt 24 org apache struts action ActionServlet 25 lt servlet class gt 26 lt init param gt 27 lt param name gt application lt param name gt 28 lt param value gt ApplicationResources lt param value gt 29 lt init param gt 30 lt init param gt 31 lt param name gt config lt param name gt 32 lt param value gt WEB INF struts config xml lt param value gt 33 lt init param gt 34 lt init param gt 35 lt param name gt debug lt param name gt 36 lt param value gt 2 lt param value gt 37 lt init param gt 38 lt init param gt 39 lt param name gt detail lt param name gt 40 lt param value gt 2 lt param value gt 41 lt init param gt 42 lt init param gt 43 lt param name gt validate lt param name gt 44 lt param value gt true lt param value gt 45 lt init param gt 46 lt load on startup gt 2 lt load o
77. im Einsatz von Struts Session Mechanismus die Cookie oder die Struts unterst tzt den Entwickler bei der URL Rewriting Methode angewendet Die Implementierung der URL Rewriting URL Rewriting Methode ist vorzuziehen Methode Der Einsatz von Struts l sst sich gut mit den Richtlinien der ZKB SAR vereinbaren 4 3 Sessionhandling und Sicherheit Struts bietet keine eigenen Sicherheits Mechanismen Der Entwickler von Struts Applikationen muss die Mechanismen des Applikations Servers also die sogenannte container managed security nutzen Der J2EE Container verwaltet die Session und bietet ausserdem Funktionen f r die Authentifizierung und Autorisierung an Da das HTTP Protokoll ein zustandloses Protokoll ist ist es schwer Informationen einer Session tiber die gesamte Zeit einer Interaktion mit dem Benutzer zu speichern Um einen HTTP Request seiner zugeh rigen Session zuzuordnen verwendet der Container eine Session ID die per Cookie oder in der Request URL weitergereicht wird Da viele Benutzer Cookies in der Browserkonfiguration deaktiviert haben wird in den meisten Web Applikationen die Session ID in der Request URL weitergereicht Dies nennt man URL Rewriting Der Entwickler muss URL Rewriting normalerweise selbst implementieren Hier bietet Struts eine praktische Funktion Bei deaktivierten Cookies stellt Struts automatisch auf die URL Rewriting Methode um ohne dass der Entwickler sich darum k mmern muss Wichtig dabei ist d
78. kann Dazu wird eine bereits existierende ASP Web Applikation zuerst zu einer JSP Applikation Model 1 und anschliessend zu einer Struts Applikation Model 2 portiert Danach werden die beiden Versionen bzgl Entwicklungsaufwand Funktionsumfang Performance und Wartbarkeit miteinander verglichen Dar ber hinaus werden F higkeiten des Struts Frameworks beleuchtet die Architektur des Frameworks beschrieben und berpr ft inwiefern das Framework den Entwickler entlasten kann Entwickler ohne Erfahrung mit Struts finden hier ausserdem eine verst ndliche Einf hrung an einem berschaubaren Beispiel Nach der Einleitung in Kapitel 1 werden im zweiten Kapitel die Struts zu Grunde liegenden Technologien der Java 2 Plattform Enterprise Edition J2EE von Sun beschrieben Im dritten Kapitel wird detailliert auf Struts eingegangen Um dem Leser den Einstieg in Struts zu erleichtern wird vor der Beschreibung der Struts Komponenten die Architektur und der Programmablauf erl utert Eine Anleitung zum Erstellen einer kleinen Struts Applikation erkl rt Struts an einem praktischen Beispiel Vergleichbare Frameworks werden am Ende des Kapitels vorgestellt Im vierten Kapitel erl utere ich die Entwicklung der von mir mit Struts erstellten Web Applikation Die beiden letzten Kapitel enthalten die Erkenntnisse aus meiner Arbeit mit Struts und versuchen eine Entscheidungsgrundlage f r oder gegen den Einsatz des Frameworks zu liefern Inhaltsverzeichnis Inhal
79. karta apache org struts dtds struts config_1_0 dtd gt 06 07 lt struts config gt 08 09 lt Form Bean Definitions gt 10 lt form beans gt 11 lt form bean name submitForm 12 type beispiel SubmitForm gt 13 lt form beans gt 14 15 lt Action Mapping Definitions gt 16 lt action mappings gt 17 lt action path submit 18 type beispiel SubmitAction 19 name submitForm 20 input index jsp 21 scope request gt 22 lt forward name success path index jsp gt 23 lt forward name failure path index jsp gt 24 lt action gt 25 lt action mappings gt 26 27 lt struts config gt Listing 3 3 struts config xml Es ist wichtig zu erkennen dass bei der Entwicklung mit Struts keine Datei oder Klassennamen in die JSPs oder die Action ActionForm Klassen fest einprogrammiert werden Alle Zusammenh nge zwischen den Klassen und JSPs werden in der Datei struts config xml definiert Dies wird auch Lose Kopplung genannt und ist eine wesentliche Eigenschaft von Struts Einsatz des J2EE Frameworks Jakarta Struts 45 Jakarta Struts 3 8 5 Schritt 5 Erstellen der JSP Seite Am Anfang der JSP werden die ben tigten Struts Tag Libraries definiert Mit diesen Tag Libraries kann der View Designer s mtliche Struts Funktionalit t nutzen ohne eine einzige Zeile Java Code schreiben zu m ssen Die in diesem Beispiel eingesetzte
80. ke Modularit t gut skalierbar und erweiterbar Die einzelnen Komponenten sind gut wiederverwendbar Bei der Entwicklung ist eine klare Rollenverteilung m glich Nachteil ist der hohe Arbeitsaufwand bei der Implementierung und in der Planungsphase Die Anzahl der m glichen Fehlerquellen wird im Vergleich zur Model 1 Architektur stark erh ht 2 3 4 Kommunikation der Komponenten Wenn die ganze Zeit von einer Aufteilung der Applikation gesprochen wird stellt sich zwangsl ufig die Frage wie die einzelnen Komponenten miteinander kommunizieren Im Folgenden wird die Kommunikation zwischen JSPs Java Beans und Servlets betrachtet Das Wissen ber die Kommunikation der Komponenten ist auch wichtig f r das Verst ndnis des Frameworks Jakarta Struts Prinzipiell gibt es zwei M glichkeiten der Kommunikation von Web Komponenten der direkte Datentransfer zwischen JSP und Servlet und der indirekte Datentransfer ber eine Bean W hrend die Web Komponenten JSP und Servlet durch Weiterleiten include und forward in der Lage sind Daten aktiv zu transferieren sind Beans eher ein Datencontainer Sie sind darauf angewiesen dass JSPs und Servlets die Daten abholen In diesem Zusammenhang muss der Begriff des G ltigkeitsbereiches Scope eines Datencontainers erkl rt werden Eine wichtige Rolle spielt dabei das pagecontext Objekt das in jeder JSP Seite enthalten ist Dieses Objekt bietet Methoden an mit denen sich Daten in einen bestimmten G ltigkeitsb
81. ken und erm glicht das Deployment von erstellten Applikationen auf dem Server Theoretisch w rden sich fast alle Features der WebSphere Familie auch irgendwie durch Einsatz von Open Source Software umsetzen lassen Der Vorteil des WebSphere Servers liegt laut IBM allerdings in der All In One L sung der WebSphere Produktfamilie und des z B mod_perl ein Perl Plugin f r den Apache Server Zap Cocoon ein XML Framework oder Xerces ein Java XML Parser Servlet basiertes Framework zum Erstellen sicherer Web Applikationen IBM 16 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe kompetenten Supports von IBM Die Hersteller von Applikationsservern versuchen den Entwickler so gut wie m glich zu unterst tzen indem sie ihn von den Details der Systemarchitektur und dem komplexen Zusammenwirken der Komponenten im Hintergrund abschirmen Ausserdem bieten grosse und finanzstarke Unternehmen eine gewisse Sicherheit was den Fortbestand der Produkte anbelangt Diese Sicherheit sehen viele Kunden bei den Open Source Projekten nicht gegeben 2 5 3 Andere Applikationsserver IBM teilt sich den Markt f r Applikationsserver mit zahlreichen anderen Firmen wie Bea Macromedia Hewlett Packard Sun und Oracle An dieser Stelle sollte zudem Apple s WebObjects Application Server erw hnt werden WebObjects zeichnet sich durch sehr komfortable Entwicklungswerkzeuge aus die dem Entwickler die Arbeit erleichtern Der Server i
82. ks Camino Grafische Entwicklung von Struts Applikationen EE 68 Quelltexte Listing 3 1 web xml Definition der Property Datei einer Applikation u ne 29 Listing 3 2 EE 44 Listing 3 3 srugs zonfie am Ra 45 Listing 34 index E 46 Listing 3 5 ApplicationResources properties u a0 aa 47 Listing EECHER 48 Listing 3 77 SubmilActon Java van Benelli e 49 Listing 5 1 Java Client f r die Messung der Performance 70 Einsatz des J2EE Frameworks Jakarta Struts IX Einleitung 1 Einleitung Diese Diplomarbeit entstand w hrend meiner sechsmonatigen T tigkeit in der Systemarchitektur SAR der Z rcher Kantonalbank ZKB in Z rich Die ZKB ist mit rund 4300 Mitarbeitern nach der UBS und der Credit Suisse Group die drittgr sste Bank in der Schweiz und zugleich gr sste Kantonalbank und f hrende Bank im Z rcher Wirtschaftsraum Mit Depotverm gen und Kundengeldern von ber CHF 100 Mrd geh rt die ZKB zu den gr ssten Verm gensverwaltern der Schweiz Wie f r alle Banken besitzt die Informatik auch f r die ZKB einen hohen Stellenwert Zur Zeit arbeiten ca 560 Mitarbeiter im Informatikbereich Die ZKB bezeichnet sich was die Strategie in der Informatik angeht als smart follower und nicht als early adaptor Das bedeutet dass die Bank nicht jede neue Technologie sofort einsetzt sondern zuerst den Markt beobachtet um zu pr fen was zum Standard wird Das Ziel der Bank ist es einen m glichst grossen Teil der
83. lExtractl jsp zust ndig Obwohl die grosse Anzahl von Klassen auf den ersten Blick verwirrend scheint ist die Applikation so besser strukturiert Eine detaillierte Dokumentation aller Klassen befindet sich als JavaDoc auf der CD im Anhang A 3 Der Java Quellcode ist sehr gut kommentiert so dass sich leicht nachvollziehen l sst was gemacht wird 4 2 Grunds tze und Richtlinien der ZKB SAR Die Systemarchitektur der ZKB hat diverse Richtlinien zum Entwickeln von Web Applikationen definiert Vor der Entwicklung der Struts Applikation musste berpr ft werden ob Struts mit der ZKB SAR vereinbar ist Die folgende Tabelle zeigt relevante Grunds tze aus SARO2 auf und beschreibt inwiefern sich der Einsatz von Struts mit den Grunds tzen vertr gt Eine detaillierte Darstellung aller Richtlinien und Grunds tze befindet sich in SARO2 Grundsatz Einsatz von Struts Alle Neuentwicklungen sind konsequent in Der Einsatz von Struts erf llt diesen Client Server Komponenten aufzuteilen Grundsatz MVC Prinzip Die gew nschte Isolation der Der Einsatz von Struts erf llt diesen Systemteile wird durch eine Anwendungsstruktur mit Trennung in Model Grundsatz Verarbeitung Datenhaltung View Benutzeroberfl che Organisation Ereignisvermittlung erreicht und Controller F r die Entwicklung neuer Applikationen wird Java zusammen mit WebSphere eingesetzt Java soll nicht nur Client seitig sondern auch auf den Servern einge
84. lementiert werden Struts kann ausserdem Zahlen und Datumswerte in der jeweiligen Landeseinstellung formatieren 3 5 3 Formulare und Formular Validierung Innerhalb einer Web Applikation ist es sehr h ufig notwendig die Benutzereingaben in einem Formular zu validieren und im Fehlerfall geeignete Fehlermeldungen auszugeben Die Ausgabe der Fehlermeldungen geschieht in der Regel in der gleichen View wie die Formulareingabe Dabei ist es wichtig dass der Benutzer bereits richtige Eingaben nicht noch einmal eingeben muss Die richtigen Eingaben m ssen also erneut in das Formular geschrieben werden w hrend die Felder mit Fehlern leer sind und eine Fehlermeldung den Benutzer ber seine Fehler informiert Wenn der Entwickler einer Web Applikation diese Funktionalit t ohne Struts implementieren m chte ist der Aufwand wesentlich h her Er m sste die Benutzereingaben in das abgesendete Formular zuerst selbst in eine Bean schreiben die Eingaben danach validieren und im Fehlerfall die JSP erneut aufrufen um eine Fehlermeldung anzuzeigen Das Tag im JSP m sste in diesem Fall wie folgt aussehen Eine Liste aller Sprachcodes findet sich im Javadoc der Klasse ResourceBundle in J2SE Einsatz des J2EE Frameworks Jakarta Struts 29 Jakarta Struts lt input type text name username value lt loginBean getUsername gt gt Dieser umst ndliche Weg kann mit Struts wesentlich vereinfacht werden Der Struts Controller schre
85. let JSP Applikation angesehen werden kann 3 8 2 Schritt 2 Die Datei und Verzeichnisstruktur von Struts Folgende Abbildung zeigt die Verzeichnisse und Dateien der Standard Struts Applikation struts blank war 5 4 D Apache jakarta tomcat 4 0 1 webapps struts blank Sy META INF MANIFEST MF WEB INF 2 3 classes O ApplicationResources properties SH I struts jar I struts tld struts bean tid I struts config xml I struts form tld I struts html tld I struts logic tid WW struts template thd I web xml index jsp Abbildung 3 6 Die Struts Verzeichnisstruktur Die Verzeichnisse und Dateien haben folgende Funktionen Verzeichnis oder Dateiname Zweck META INF Meta Informationen Wird u a von 42 Einsatz des J2EE Frameworks Jakarta Struts WEB INF classes WEB INF classes ApplicationResources properties WEB INF lib struts jar WEB INF tld WEB INF struts config xml WEB INF web xml index jsp 3 8 3 Schritt 3 Erstellen von web xml Jakarta Struts Entwicklungswerkzeugen ben tigt In diesem Verzeichnis werden die selbst entwickelten Java Klassen abgelegt In dieser Datei stehen alle Nachrichten und die ausgegeben werden k nnen Fehlermeldungen von den Views Dieses Java Archiv beinhaltet u a das Struts Struts Klassen und die Klassen der Struts Tag Controller Servlet alle weiteren Libraries Definitionen der Struts Tag Libraries Konfigurationsdatei von Struts Konf
86. lisiert werden und schliesslich mit execute ausgef hrt werden Anschlie end kann man mit Gettern auf die Variablen zugreifen hnlich wie in Struts wird der R ckgabewert einer Action vom Dispatcher verwendet um eine neue View zu bestimmen Die Konfiguration von WebWork erfolgt ber einfache Properties Dateien Im Gegensatz zu Struts bietet WebWork verschiedene M glichkeiten der View Gestaltung Neben JSPs k nnen auch Template Engines bzw XML XSLT Transformationen eingesetzt werden Die JSPs werden durch eine einfache aber leistungsf hige Tag Library unterst tzt Sie profitiert vor allem von der Expression Language EL einem m chtigen Werkzeug um Bedingungen zu formulieren und durch einen Pull Mechanismus die Views mit Daten zu versorgen Die EL kommuniziert ausschlie lich mit dem Value Stack VS Auf dem VS werden Objekte abgelegt die dann mittels der EL abgerufen werden k nnen Durch die Erzeugung von speziellen Properties Dateien den Ressource Bundles werden s mtliche Abfragen transparent internationalisiert WebWork bringt au erdem eine Unterst tzung f r das bekannte Form Handling und die zugeh rige Validierung mit vgl Expr Barr2 vgl Webw 56 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts 3 9 5 Sun s Java Server Faces Die Java Server Faces Technologie ist kein MVC Framework und aus diesem Grund auch nicht direkt mit Struts vergleichbar Ich will die Technologie hier trotzdem
87. man wird jedoch nicht dazu gezwungen keinen Java Code einzusetzen So findet man in vielen Web Applikationen Formatierungen und Konvertierungen von Zahlen und Strings zwischen den HTML Tags wieder Auch Template Engines vollziehen diese Trennung nicht vollst ndig Die Tag Libraries verschwinden zu Gunsten einer spezifischen Makrosprache F r den View Designer ndert dies relativ wenig Auf elegante Weise l st XMLC das Problem der Rollentrennung der View Aus HTML bzw XML Dateien werden Java Klassen generiert die den exakten Inhalt als Document Object Model DOM enthalten Zus tzlich werden jedoch spezielle Methoden generiert die den Zugriff auf einzelne Elemente kapseln Dazu ist es n tig die Original Tags mit speziellen Attributen zu versehen Das Attribut id sampleTag w rde beispielsweise die Methoden getElementSampleTag und setElementSampleTag generieren Weiterhin steht das Attribut class group zur Gruppierung und eventuellen Filterung von Tags zur Verf gung Die erzeugten Java Klassen werden nun von einem Servlet verwendet um den Inhalt der ausgezeichneten Tags zu ver ndern und eine komplette HTML Seite zur ckzuliefern Im brigen besteht die M glichkeit den DOM ber den Localization Service zu internationalisieren Der XMLC Ansatz verwirklicht eine vollst ndige Trennung von Inhalt und Layout Es wird s mtliche Programm Logik aus den HTML Seiten verbannt Wenn Barracuda einen HTTP Request empf ngt wird zun chst der Typ
88. mit hnlicher Funktionalit t entfernen Die Integration dieser neuen Standards wird von den Struts Benutzern bis jetzt sehr positiv aufgenommen Laut Craig R McClanahan bietet sie den Struts Entwicklern die M glichkeit Struts in anderen Richtungen zu erweitern und zu verbessern vgl JSF Einsatz des J2EE Frameworks Jakarta Struts 57 Entwicklung mit Struts 4 Entwicklung mit Struts Neben der kleinen Beispiel Applikation im dritten Kapitel wurde mit Struts auch eine gr ssere Applikation entwickelt Der Name der Applikation ist ADB Info Meine Erfahrungen bei der Entwicklung mit Struts dokumentiert dieses Kapitel Ziel war es mit der Struts Entwicklung vertraut zu werden um besser beurteilen zu k nnen in welchen F llen der Einsatz von Struts Sinn macht Ausserdem dient der Quellcode der Applikation als zus tzliches Beispiel und soll den Einstieg in die Entwicklung mit dem Framework erleichtern Der Quellcode der Applikation liegt als WebSphere Projekt sowie als WAR Archiv im Anhang A 3 auf der CD Dieses Kapitel dokumentiert die Applikation nicht im Detail Es werden lediglich einige wesentliche Punkte herausgestellt die f r die Entwicklung mit Struts in der ZKB relevant sind Die Vorg ngerversion von ADB Info war eine JSP Applikation Model 1 Der Quellcode dieser Applikation befindet sich im Anhang A 2 4 1 Beispielapplikation ADB Info ADB Info liefert Informationen ber die aktuell laufenden Prozesse der ADB Dabei sin
89. n Tags werden nun kurz beschrieben Eine ausf hrliche Beschreibung aller Struts Tags befindet sich in Stru3 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 lt page language java gt lt taglib uri WEB INF struts bean tld prefix bean gt lt taglib uri WEB INF struts html tld prefix html gt lt taglib uri WEB INF struts logic tld prefix logic gt lt html html locale true gt lt head gt lt title gt lt bean message key index title gt lt title gt lt html base gt lt head gt lt body bgcolor white gt lt h3 gt lt bean message key index heading gt lt h3 gt lt html errors gt lt html form action submit do gt lt p gt lt bean message key index name gt lt html text property name gt lt p gt lt p gt lt bean message key index anrede gt lt html radio property anrede value f gt lt bean message key index frau gt lt html radio property anrede value h gt lt bean message key index herr gt lt br gt lt p gt lt html submit gt lt bean message key button submit gt lt html submit gt lt html form gt lt logic present name name scope request gt lt bean message key index hallo gt lt logic equal name submitForm property anrede value f gt lt bean message key index fra
90. n erm glicht Allerdings wird die Skalierbarkeit und Erweiterbarkeit dadurch nicht wesentlich verbessert vgl Tura01 und Gamm01 Einsatz des J2EE Frameworks Jakarta Struts 9 Einf hrung und Grundbegriffe 2 3 3 Model 2 Architektur Mit dem Einsatz der Model 1 Architektur ist die Entwicklung von MVC Applikationen nicht m glich Die Model 2 Architektur erweitert deshalb die Architektur um eine Controller Komponente Diese ist f r die Vermittlung von Anfragen an die entsprechenden JSP Seiten und die Bereitstellung des Models verantwortlich W hrend in Model 1 eine 2 Schichten Architektur vorliegt ist Model 2 eine 3 Schichten Architektur die leicht um weitere Schichten z B EJBs zu einer N Schichten Architektur erweitert werden kann Auch die Model 2 Architektur kann in zwei Varianten unterteilt werden In der ersten Variante verteilt das Vermittler Servlet die Anfragen an die JSP Seiten welche sich das Datenmodell selbst beschaffen Dazu kann die Gesch ftslogik direkt in die JSP Seite eingef gt oder in die Worker Beans ausgelagert werden Vorteil ist die Schaffung eines zentralen Zugangs Dieser kann z B f r die Authentifizierung und Autorisierung oder eine zentrale Protokollierung verwendet werden Hierbei wird eine klare Trennung zwischen Darstellung und Gesch ftslogik erreicht Die Applikation ist besser skalierbar und erweiterbar als Model 1 Applikationen Die JSP Worker Bean Kombinationen sind wiederverwendbar Vermittle
91. n k nnten untersucht und diesbez glich erarbeitete Grunds tze verabschiedet vgl Busc02 Einsatz des J2EE Frameworks Jakarta Struts 1 Einleitung 1 1 Ausgangslage Oft wird die Wiederverwendung von Software als erstrebenswertes Ziel und erfolg versprechendes Instrument bei der Softwareentwicklung angesehen Frameworks verfolgen genau diesen Aspekt denn sie bestehen aus einer Menge von zusammenarbeitenden Klassen die einen wiederverwendbaren Entwurf f r eine bestimmte Klasse von Software darstellen Neben der einfachen Wiederverwendung von Code dienen Frameworks auch der Wiederverwendung von Design und sogar kompletter Services Sie stellen branchenspezifische oder bergreifende L sungen f r allgemein bekannte Probleme dar Dabei beschr nken sie sich nicht wie die Entwurfsmuster auf reine Umsetzungsempfehlungen sondern liefern fertige Implementierungen f r ein bestimmtes Anwendungsgebiet Frameworks bestehen aus fertigen und halbfertigen Teilsystemen Auf der einen Seite wird also die grundlegende Architektur f r ein Softwaresystem bestimmt auf der anderen Seite aber auch genug Raum f r individuelle Erweiterungen gelassen In dieser Arbeit wird das Web Framework Jakarta Struts ein Open Source Framework welches unter dem Dach der Apache Software Foundation entstanden ist betrachtet Das Framework soll das Erstellen gr sserer Web Applikationen unter Einsatz von J2EE Technologien vereinfachen Struts geh rt zur Grup
92. n startup gt 47 lt servlet gt 48 49 lt Standard Action Servlet Mapping gt 50 lt servlet mapping gt 51 lt servlet name gt action lt servlet name gt 52 lt url pattern gt do lt url pattern gt 53 lt servlet mapping gt 54 Einsatz des J2EE Frameworks Jakarta Struts 43 Jakarta Struts 55 lt The Usual Welcome File List gt 56 lt welcome file list gt 57 lt welcome file gt index jsp lt welcome file gt 58 lt welcome file list gt 59 60 lt Struts Tag Library Descriptors gt 61 lt taglib gt 62 lt taglib uri gt WEB INF struts bean tld lt taglib uri gt 63 lt taglib location gt WEB INF struts bean tld lt taglib location gt 64 lt taglib gt 65 66 lt taglib gt 67 lt taglib uri gt WEB INF struts html tld lt taglib uri gt 68 lt taglib location gt WEB INF struts html tld lt taglib location gt 69 lt taglib gt 70 71 lt taglib gt 72 lt taglib uri gt WEB INF struts logic tld lt taglib uri gt 73 lt taglib location gt WEB INF struts logic tld lt taglib location gt 74 lt taglib gt 75 76 lt web app gt Listing 3 2 web xml Die XML Datei besteht aus vier Teilen e Zeilen 10 bis 36 Die Definition des Struts Controller Servlets ActionServlet e Zeilen 38 bis 42 Das URL Mapping fiir die Aufrufe des Servlets e Zeilen 44 bis 47 Die Welcome File Definition Sie definiert welche Datei standardm ssig aufgerufen werden soll e
93. ne JSP oder eine Konfigurationsdatei ge ndert oder hinzugef gt wurde Nach dem Neustart von Tomcat kann man die Applikation mit dem Browser starten indem man folgendes eingibt http Jocalhost 8080 struts beispiel Wenn nun der Absenden Button bet tigt wird ohne dass Daten in das Formular eingegeben wurden sollte folgende Fehlermeldung angezeigt werden Einsatz des J2EE Frameworks Jakarta Struts 49 Jakarta Struts Struts Beispiel Fehler Bitte Name eingeben e Bitte Anrede eingeben Name Anrede Frau Herr Absenden Abbildung 3 7 Fehlermeldungen Bis zu diesem Zeitpunkt hat Struts im Hintergrund schon einiges getan Nach dem Absenden der Formulardaten werden diese im ActionForm Bean zwischengespeichert und validiert In diesem Fall merkt Struts dass nichts eingegeben wurde und schreibt Fehlermeldungen in eine Java Collection welche das JSP anzeigt nachdem es erneut vom Controller aufgerufen wird Wird das Formular korrekt ausgef llt und der Absenden Button bet tigt ruft der Controller die JSP ebenfalls erneut auf Da keine Validierungsfehler auftraten wird nach dem Sichern der Formulardaten im ActionForm Bean zuvor aber die Action Bean aufgerufen welche Daten ver ndert und den Controller aufruft der die JSP anzeigt Da die Java Collection f r Fehlermeldungen leer ist werden nun keine Fehlermeldungen angezeigt Allerdings findet Struts nun Daten in der ActionForm Bean und tr gt diese autom
94. nfrage erl utert bevor im Detail auf die Komponenten eingegangen wird Dies erleichtert dem Leser die Zusammenh nge zwischen den sp ter beschriebenen Komponenten besser zu verstehen vgl Kamm02 Einsatz des J2EE Frameworks Jakarta Struts 19 Jakarta Struts u web xml 2 8 Struts Tag Controller ad u Librarys ActionServlet ret Application Controller Resources Abbildung 3 2 Programmablauf in Struts Am Anfang steht die Anfrage eines Clients i d R Abschicken eines Formulars im Browser an den Server 1 Die XML Konfigurationsdatei web xml 2 konfiguriert den Server dahingehend dass das StrutsAction Servlet die Anfrage entgegennimmt 3 Das Servlet entscheidet nun ob die Anfrage an die Klasse ActionMapping bergeben wird 4a oder ob die Anfrage gleich an eine View Komponente weitergeleitet werden kann 4b Dies entscheidet der Controller in Abh ngigkeit davon ob zur Darstellung der View Gesch ftslogik z B DB Zugriffe angesprochen werden muss oder ob direkt eine Ausgabe erfolgen kann Wird eine bestimmte Action Klasse anhand des Mappings der Datei struts config xml zur Verarbeitung ausgew hlt 5 leitet diese Klasse die Anfrage an die entsprechende Java Bean welche die Gesch ftslogik enth lt weiter 6 Danach wird eine View Komponente aufgerufen 7 die mit Hilfe der Struts Tag Libraries 8 die Ergebnisse der Anfrage darstellt und die Antwort an den Client schickt 10 Die Properties Da
95. ng Objekt erzeugt Die Datei struts config xml muss vom Entwickler erzeugt und im WEB INF Verzeichnis der Applikation abgelegt werden Das Format dieses Dokuments wird definiert durch die Document Type Definition hrtp jakarta apache org struts dtds struts config_l_O dtd Das usserste XML Element muss lt struts config gt lauten Innerhalb dieses Bereichs gibt es folgende Elemente lt form beans gt lt f form beans gt Dieser Bereich enth lt die Form Bean Definitionen Die Attribute sind e name Name des Attributes mit dem dieses ActionForm Bean im Request oder in der Session gespeichert wird e type Der voll qualifizierte Java Klassenname des ActionForm Bean lt global forwards gt lt global forwards gt Dieser Bereich enth lt lt forward gt Elemente die JSP Seiten logische Namen zuweisen Diese Forwards sind global g ltig Sie k nnen beispielsweise in der perform Methode jeder Action Klasse benutzt werden Die Attribute sind u a e name Logischer Name e path Dateiname der View lt action mappings gt lt action mappings gt Dieser Bereich enth lt die Definitionen der Aktionen F r jede Aktion wird ein separates lt action gt Element verwendet Die Attribute sind u a e path Der auf den Kontext der Anwendung bezogene relative Pfad f r die Aktion e type Der voll qualifizierte Java Klassenname der Action Klasse e name Der Name des lt form bean gt Elementes
96. nossssssnnssesnsnsesssnonsesssnnssesnsnsssssnnnnesnsnnsnesnsnsesssnennssssnsssssnsnssnse 31 3 6 1 Action TE EE 31 3 6 2 Konfiguration der ActionMapping Klasse A 33 3 6 3 Der Deployment Descriptor der Webanwendung ee ee cescesecesecssecneecseeeaeseaeesseeeeeecesecesecsaeenaes 34 3 7 STRUTS KLASSEN UND SEQUENZDIAGRAMM UML sccsossssssssssssesscesscssescsssnsssssnsssesssssesssssnsssssneseeses 37 3 8 STRUTS AN EINEM BEISPIEL eecessonsnsssnsnnsssssnsnnesnssnssnnsonsnnssnsnnnsnssnssnnsnnsnnssnsnnsnnsnnssnssonsnnsnnsnnssssnnssnnsnnsnnsonsnne 41 3 8 1 Schritt 1 Downloaden und Installieren von Strutz 41 3 8 2 Schritt 2 Die Datei und Verzeichnisstruktur von tut 42 3 8 3 Schritt 3 Erstellen von web ml 43 Einsatz des J2EE Frameworks Jakarta Struts I Inhaltsverzeichnis 3 8 4 Schritt 4 Erstellen von struts config vm 44 3 83 Schritt 5 Erstellen der JS P Seite 2 uus rss a nn nase 46 3 8 6 Schritt 6 Entwickeln der ActionForm K1asse ccccccceseeeeeseseseseceseseseseseseseseseseseseseseseseeesereresenens 47 3 8 7 Schritt 7 Entwickeln der Action K1asse ccccccccceseeeeeseceseseseseseseseseseseseseseseseseeeseseseseseseseceseseeeeees 48 3 8 8 Schritt 8 Testen der Applikati h se n 2 3 8 2 Heures 49 3 9 VERGLEICHBARE FRAMEWORKS icsssssccecossossssseassesnassentesecsesoassssacvscsesoscsesesscoedessbssbeactsenaccesescsesesssbedebansetens 51 ES BK Re EE 52 3 92 Barracuda 22 el lese Alessi onloc
97. nt keine Cookies unterstiitzt wird automatisch URL Rewriting eingesetzt um die Session ID der URL als Parameter zu tibergeben Struts Template Tags Put Tags legen Inhalte in den Request G ltigkeitsbereich Diese Inhalte werden durch ein get Tag in eine andere JSP dem Template eingelesen Dieses Template kann durch den insert Tag in eine weitere JSP eingefiigt werden Tag Name Beschreibung insert F gt ein Template ein Templates sind JSP Seiten die parametrisierte Inhalte enthalten Diese Inhalte werden durch put Tags erzeugt put Legt Inhalte in den Request G ltigkeitsbereich get Liest Inhalte aus dem Request G ltigkeitsbereich Die Struts Template Tags bieten nicht viel Komfort und Funktionalit t Aus diesem Grund wird bei gr sseren Applikationen oft eine separate Template Engine ben tigt Struts unterst tzt in der aktuellen Version 1 0 2 offiziell keine externe Template Engine soll aber in zuk nftigen Versionen mit Velocity zusammenarbeiten k nnen Velocity ist eine leistungsf hige Java Template Engine die ebenfalls im Jakarta Projekt entwickelt wird 3 5 2 Internationalisierung Um die Internationalisierung von Struts nutzen zu k nnen m ssen lediglich sogenannte Properties Dateien im Klassenpfad der Web Applikation erstellt werden Ausserdem m ssen Siehe auch Veloc 28 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts in den Views die Struts Tags zur Ausgabe von Text benutzt werden Der Tag
98. och ein Action Objekt den Request an ein anderes Objekt weiterleiten normalerweise an eine Java Bean Um die Wiederverwendbarkeit auf anderen Plattformen zu gew hrleisten sollten die Java Beans der Gesch ftslogik keine Referenzen zu anderen Objekten der Web Anwendung haben Das Action Objekt sollte die ben tigten Details aus dem HTTP Request extrahieren und diese an die Gesch ftslogik Beans als regul re Java Variablen weiterleiten In einer Datenbankanwendung k nnen die Gesch ftslogik Beans eine Datenbank ansprechen und das Ergebnis zur ck an das Action Servlet schicken welches die Daten dann in einer 22 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts ActionForm Bean speichert und anschliessend eine JSP View aufruft welche die Daten darstellt Weder Action Servlet noch JSP m ssen wissen woher das Ergebnis kommt Die folgenden drei Kapitel 3 4 bis 3 6 beschreiben die Model View und Controller Komponenten im Detail 3 4 Model Komponenten Der Model Teil eines MVC basierten Systems kann in zwei Bereiche unterteilt werden Der eine umfasst den internen Zustand des Systems der andere die Aktionen um diesen Zustand zu ndern Allgemein gesagt repr sentiert eine Applikation den internen Zustand des Systems als eine Sammlung von Java Beans mit Eigenschaften welche die Details des Zustandes definieren Abh ngig von der Komplexit t der Applikation k nnen diese Beans selbst ndig sein und daher wissen wie sie ihr
99. okumenten Servlets und Java Server Pages JSP Beide Techniken st tzen sich auf Java APIs wobei Servlets einen prozeduralen und JSPs einen deklarativen Ansatz verfolgen Beide Techniken werden den Web Komponenten zugeordnet Sie haben Zugriff auf den J2EE Namensdienst und k nnen mit Enterprise Java Beans EJB kommunizieren Die Konfiguration erfolgt mit Deployment Deskriptoren Der deklarative Stil von JSP erm glicht eine bessere Trennung von Design und Anwendungslogik bei der Generierung eines Dokumentes Dies wird durch die enge Integration von Java Beans mit Tags und durch benutzerdefinierte Tag Bibliotheken erreicht Java Server Pages entstanden erst als Servlets schon lange im Einsatz waren Grunds tzlich kann man aber sagen dass der Funktionsumfang von JSPs und Servlets nahezu gleich ist Alles was mit Servlets implementiert werden kann kann auch mit Einsatz von JSPs implementiert werden Dies wird umso klarer wenn man die Tatsache betrachtet dass JSPs vor dem ersten Ausf hren oder nach nderungen zuerst in Servlets bersetzt und dann ausgef hrt werden interne WWW Server REN Weiterleit SE JSP Container Applikationsserver HTIP JSP Anfrage Get pereis bei ge nderter bersetzter SPSeit HTIP SPSeite HTML Antwort tree A lt page gt lt html gt E lt html gt Aus ber f hrung jspService setzung Kg Pe I
100. p m gt lt html form action a I E tour htm l Attribute Value G Bour do Jogon len gt Jlogon do t four bim ichangePassword jsp Attributes Cross Reference a d Jee gt Abbildung 4 4 Screenshot Scioworks Camino Grafische Entwicklung von Struts Applikationen 68 Einsatz des J2EE Frameworks Jakarta Struts Erkenntnisse 5 Erkenntnisse 5 1 Vergleich der Model 1 und Struts Variante 5 1 1 Funktionsumfang Der Funktionsumfang der beiden Varianten ist identisch Aus diesem Grund lassen sich die Unterschiede in der Performance der Wartbarkeit und im Entwicklungsaufwand gut erkennen 5 1 2 Performance F r die Messung der Performance wurde ein kleines Java Programm aus Will01 erweitert und angepasst Das Programm entspricht einem HTTP Client Es sendet einen HTTP Request an einen Server und misst die Zeit vom Aufruf bis zu dem Zeitpunkt an dem die Antwort vollst ndig den Client erreicht hat Der Vorgang entspricht einem Benutzer der mit einem Browser eine bestimmte Seite betrachtet Der Client benutzt die URL bzw URLConnection Klassen f r die HTTP Verbindung Es kann ber Parameter beim Aufruf die URL die Anzahl der zu erzeugenden parallel ablaufenden Treads im bertragenen Sinn die Anzahl der parallelen Benutzer und die Anzahl der Requests pro Thread bergeben werden Beispi
101. pe der Web Frameworks die eine Architektur f r Client Server Anwendungen liefern Der client seitige Zugriff erfolgt dabei i d R durch einen Webbrowser Besondere Bedeutung hat dabei das Model View Controller Entwurfsmuster erlangt ADB Info ein Browser basiertes Werkzeug welches Informationen tiber aktuell laufende Prozesse im Data Warehouse der ZKB liefert dient in dieser Diplomarbeit als Anschauungsbeispiel Diese Applikation lag als ASP L sung vor und wird im Rahmen der Diplomarbeit zuerst in eine reine JSP Applikation Model 1 und danach in eine Struts Applikation Model 2 portiert Anhand eines Vergleichs dieser beiden Versionen k nnen sp ter Argumente f r und gegen den Einsatz von Struts gefunden werden 1 2 Ziel Das Ziel dieser Diplomarbeit ist es einen berblick ber Struts zu geben und eine Entscheidungsgrundlage f r den Einsatz von Struts zu liefern Die beiden Versionen von ADB Info werden bzgl Entwicklungsaufwand Funktionsumfang Performance und Wartbarkeit verglichen Hat sich der Entwickler f r Struts entschieden steht ihm die in Struts implementierte Applikation ADB Info als Beispiel zur Verf gung welches ihm das Erlernen des Frameworks erleichtert Gamm01 S 31 Die Abk rzung ADB steht fiir Abfrageorientierte Datenbasis und verk rpert das Data Warehouse der ZKB 2 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe 2 Einf hrung und Grundbegriffe 2 1 J2EE Java 2 Plat
102. quest generiert Die Referenz auf ein solches Objekt erh lt man indem die Methode findForward auf das ActionMapping Objekt angewendet wird Bei der Implementierung der perform Methode sollten einige Design Richtlinien beachtet werden Das Controller Servlet erzeugt nur eine Instanz der Action Klasse und benutzt diese f r alle Requests Aus diesem Grund muss der Code in der perform Methode so implementiert werden dass er in Multithread Umgebungen korrekt arbeitet Exceptions die z B durch Zugriffe auf Datenbanken oder andere Gesch ftslogik Klassen innerhalb der perform Methode entstehen m ssen korrekt abgefangen werden Benutzte Ressourcen z B Datenbankverbindungen sollten sofort freigegeben werden Dies sollte auch im Fehlerfall beachtet werden Die Action Klasse sollte nicht zu gross werden Das Ausgliedern von Gesch ftslogik in separate Klassen dient nicht nur der Wiederverwendbarkeit sondern auch der bersichtlichkeit Wichtig ist das Benutzen von lokalen Variablen im Gegensatz zu Klassenvariablen Lokale Variablen werden auf f r jeden Request Thread unterschiedlichen Stacks abgelegt 32 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts 3 6 2 Konfiguration der ActionMapping Klasse Die Konfiguration des Struts Controllers wird in der XML Datei struts config xml definiert Struts enth lt ein Digester Modul welches die XML basierte Beschreibung eines Mappings einliest und daraus ein ActionMappi
103. r Detailansichten geschieht ber Formulare mit Hidden Feldern die in die Tabelle eingebunden werden und lediglich aus einem Submit Button bestehen Von den Detailansichten aus k nnen ausserdem Kennzahlen angezeigt werden 4 1 4 Implementierung der Model 2 Variante mit Struts Die Struktur der JSP Dateien der Struts Version entspricht ebenfalls der in Abbildung 4 2 dargestellten Die Struts Version von ADB Info besteht auch aus 11 JSP Dateien allerdings entstanden durch den Einsatz von Struts 37 Java Klassen In diese ist die gesamte Funktionalit t ausgegliedert worden In den JSPs ist nun nur noch der zur Darstellung relevante Code enthalten Es gibt f nf ActionForm Klassen 14 Action Klassen zehn DB Klassen und acht sonstige Klassen Datumsverarbeitung und Definition der Datenstrukturen Es werden also 19 Struts Klassen ben tigt Die Klassen haben folgende Funktionen ActionForm Klassen Klasse Beschreibung StatusLoadForm Halten der Daten die statusLoad jsp darstellt KennzahlLoad1Form Halten der Daten die kennzahlLoadl jsp darstellt KennzahlLoad2Form Halten der Daten die kennzahlLoad2 jsp darstellt Eine detaillierte Beschreibung der Klassen findet sich im Anhang A auf der CD Einsatz des J2EE Frameworks Jakarta Struts 61 Entwicklung mit Struts StatusExtractForm Halten der Daten die statusExtract jsp darstellt KennzahlExtract1Form Halten der Daten die kennzahlExtract1 jsp darstellt Action Klassen Klasse
104. r Servlet Anfrage aa ge an Gesch ftslogi SE kb d WorkerBean RETTEN Abbildung 2 6 Ablauf einer Anfrage beim Model 2 erste Variante In der zweiten Variante delegiert das Vermittler Servlet die Anfrage nicht mehr an eine JSP Seite sondern direkt an eine Worker Bean also das Model Diese ist daf r verantwortlich das Datenmodell zu erzeugen Nachdem das Datenmodell erzeugt wurde kann das Vermittler Servlet die Anfrage an eine f r die Pr sentation geeignete JSP Seite weiterleiten die dann die Darstellung bernimmt Hier ist das Vermittler Servlet also wirklich eine Art Vermittlungsstelle und nicht nur ein Verteiler Dadurch wird jegliche Kontrollfunktion aus dem JSPs in das Vermittler Servlet ausgelagert und somit eine saubere Umsetzung des MVC Paradigma erreicht 10 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe Anfrage Vermittler Servlet Gesch ftslogi Abbildung 2 7 Ablauf einer Anfrage beim Model 2 zweite Variante Da das Vermittler Servlet bzw der Controller bei umfangreichen Applikationen sehr komplex wird k nnen zus tzlich sogenannte Vermittler Beans zwischen Vermittler Servlet und Worker Beans eingef gt werden Mit ihnen kann eine Aufteilung der Kontrollkomponente realisiert werden Erst mit dieser Architektur wird die Umsetzung grosser E Commerce und E Business Anwendungen m glich Das MVC Konzept ist konsequent umgesetzt Die Applikation ist durch die star
105. rActionForm Bean ab 1 1 validiert danach die eingegebenen Daten und generiert evtl Fehlermeldungen 1 2 und erzeugt als Drittes eine Instanz der UserAction Klasse 1 3 Die UserAction Klasse definiert Aktionen in der perform Methode Die UserAction Klasse kann nun Daten aus der UserActionForm Bean lesen 1 3 1 und weitere Gesch ftslogik Klassen ansprechen 1 3 2 Der Datenaustausch zwischen UserAction Klasse und der am Ende aufgerufenen View kann auf zwei verschiedene Arten erfolgen Entweder mit Hilfe einer HelperBean oder ber die UserActionForm Bean Eine Kombination beider M glichkeiten ist auch m glich Das Schreiben von Daten in die HelperBean geschieht in Schritt 1 3 3 w hrend in 1 3 4 die UserActionForm Bean aktualisiert wird Am Ende leitet die UserAction Klasse an eine in der Konfigurationsdatei struts config xml definierte View forwardedPage jsp weiter 1 3 5 Diese View bezieht nun die anzuzeigenden Daten aus der HelperBean 2 und oder aus der UserActionForm Bean 3 Stru4 vel Stru4 40 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts 3 8 Struts an einem Beispiel In diesem Kapitel wird eine einfache Struts Applikation Schritt f r Schritt entwickelt und dem Leser das Verstehen des Frameworks erleichtert Die Anwendung besteht aus einem kleinen Formular in das der Name und die Anrede eingetragen werden kann Beim Klicken auf den Absenden Button ruft sich die Seite selbst auf zeigt die eingeg
106. re die sich ber mehrere Seiten hinweg erstrecken z B Wizards und trotzdem nur eine ActionForm Klasse verwenden Die Formulare m ssen in diesem Fall alle an die gleiche Action gesendet werden 3 4 2 Beans f r den Systemzustand Der aktuelle Zustand eines Systems wird normalerweise durch eine Sammlung von einer oder mehreren Java Beans repr sentiert Deren Eigenschaften definieren den gegenw rtigen Zustand Beispielsweise besteht ein Warenkorbsystem aus einer Bean die den f r jeden Eink ufer verwalteten Warenkorb darstellt und die eine Sammlung von Artikeln beinhaltet welche der Eink ufer zum Kauf ausgew hlt hat Daneben besteht das System au erdem aus verschiedenen Beans mit Informationen ber das Benutzerprofil z B Informationen ber Kreditkarten und Lieferadressen sowie ber einen Katalog verf gbarer Artikel und Bestandsinformationen In kleineren Applikationen und f r das Speichern von Zustandsinformationen die nicht f r l ngere Zeit gespeichert werden m ssen kann eine Sammlung von System State Beans benutzt werden Meist jedoch enthalten die System State Beans Daten die permanent in externen Datenbanken gespeichert werden z B ein CustomerBean Objekt das mit einer Zeile in der CUSTOMERS Tabelle korrespondiert Diese Beans werden bei Bedarf erzeugt und wieder aus dem Speicher des Servers entfernt In gr sseren Applikationen werden daf r auch Entity Enterprise Java Beans eingesetzt 24 Einsatz des J2EE Frameworks
107. rosoft IIS Server Diese Applikation wurde von mir im Rahmen dieser Diplomarbeit zuerst in eine 58 Einsatz des J2EE Frameworks Jakarta Struts Entwicklung mit Struts reine JSP Applikation Model 1 Variante und dann in eine Struts Applikation Model 2 Variante portiert Es liegt bereits ein Pflichtenheft zu ADB Info vor in dem die Applikation spezifiziert wird Da ADB Info lediglich 1 1 portiert wurde ohne Ver nderungen an der Funktionalit t und GUI vorzunehmen haben die meisten Informationen in diesem Pflichtenheft nach wie vor G ltigkeit Dieses Kapitel ist keine offizielle Dokumentation von ADB Info und kein Benutzerhandbuch Die folgenden Kapitel sollen lediglich meine Erfahrungen bei der Entwicklung unter Einsatz von Struts darlegen 4 1 1 Infrastruktur und Architektur ADB Info l sst sich wie weiter unten dargestellt in das J2EE Schichtenmodel einordnen Dies gilt f r beide Varianten gleichermassen Die beiden Varianten unterscheiden sich durch den unterschiedlichen Einsatz von Komponenten laufen aber auf der gleichen Infrastruktur Firewall IBM W ebSphere Application Server Web Container Struts Controller Servlet Struts Klassen JSPSeiten Model Beans XML Dateien Mainframe HitSQL JDBC Driver Client Tier Middle Tier Abbildung 4 1 ADB Info im J2EE Schichtenmodel Es war eine Anforderung der SAR der ZKB dass ADB Info auf dem IBM WebSphere Server der ZKB laufen muss Aktuell wird
108. rt die Formulardaten des zugeh rigen JSPs Damit dies funktioniert muss die Klasse zwei Properties mit den Namen name und anrede und die dazugeh renden Setter und Getter Methoden implementieren W rde beispielsweise name mit dem Wert Mustermann initialisiert werden w rde Struts dies zur Laufzeit automatisch in das Formular eintragen Es k nnen in dieser Klasse also auch Formularfelder initialisiert werden 01 package beispiel 02 03 import javax servlet http HttpServletRequest 04 import org apache struts action Struts 05 Einsatz des J2EE Frameworks Jakarta Struts 47 Jakarta Struts 06 public final class SubmitForm extends ActionForm 07 08 Formularfelder 09 private String name 10 private String anrede 11 12 Getter und Setter der Formularfelder 13 public String getName 14 return this name 15 16 public void setName String name 17 this name name 18 19 20 public String getAnrede 21 return this anrede 22 23 public void setAnrede String anrede 24 this anrede anrede 25 26 27 Formularfelder zuruecksetzen 28 public void reset ActionMapping mapping HttpServletRequest request 30 name 31 anrede 32 33 34 Auf Fehler ueberpruefen 35 public ActionErrors validate ActionMapping mapping HttpServletRequest request 36 37 ActionErrors errors new ActionErrors 38 39 if name null nam
109. rvlet Java Server Pages als View Komponenten sowie die Model Komponenten Gesch ftslogik in Form von Java Beans Mehr zur Apache Software Foundation License auf Apac 18 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts Technischer Controller Anfrage Vermittler Servlet Fachliche Controller Gesch ftslogik Antwort Model Action Entity Beans DBMS Gesch ftsdaten Abbildung 3 1 Architektur des Struts Frameworks Es ist nicht immer ganz einfach die einzelnen Struts Komponenten zuzuordnen Laut Struts Spezifikation geh ren die Action Klassen zusammen mit dem ActionServlet Vermittler Servlet zum Controller wobei man eine Aufteilung in technische und fachliche Controller vornehmen kann Die ActionForm Klassen geh ren zu den Model Komponenten obwohl sie dem View sehr nahe stehen Die eigentlichen Model Klassen also die Gesch ftslogik werden von Struts nicht implementiert sondern m ssen vom Entwickler selbst erstellt werden Sie werden von den Action Klassen aufgerufen Die Views werden mit JSP implementiert 3 2 Programmablauf Die Abbildung auf der folgenden Seite veranschaulicht das Zusammenspiel der einzelnen Komponenten aus denen Struts besteht Es werden die Vorg nge von einer Anfrage eines Clients HTTP Request bis zur fertigen Antwort HTTP Response beschrieben Obwohl der Leser an dieser Stelle die Struts Komponenten noch nicht kennt wird der Ablauf einer A
110. rwards forwardedPage model UserActionForm otherModel HelperBean populate void list offorwards UserDelegate businessMethod1 void businessMethod2 void Struts View Model proper String property2 String ActionMapping attribute String forwards ActionForwards instance Action path String ype String ActionFormBean ActionForward name String path String name String type String L Struts framework classes User classes Author Jean Michel Garnier August 2002 http rollerjm free fr Abbildung 3 3 UML Klassendiagramm der Struts Klassen im Package org apache struts action Stru4 Einsatz des J2EE Frameworks Jakarta Struts 37 Jakarta Struts Die oben abgebildeten Klassen haben folgende Funktion die internen Methoden von Struts werden ebenfalls beschrieben Struts Klassen 38 Struts Conroller Die ActionServlet Klasse ist Kern des Frameworks Die Klasse ist ein Servlet welches Requests entgegennimmt und diese in Abh ngigkeit von der Konfigurationsdatei struts config xml weiterleitet Bei der Initialisierung der Applikation wird die Konfigurationsdatei struts config xml geparst und die darin enthaltenen Informationen in Instanzen der Klassen ActionMapping ActionForward und ActionFormBean abgelegt o Die Methode processActionForm initialisiert die mit einem Mapping verbundene ActionForm Klasse bzw erzeugt eine falls si
111. rzeugt ein HTML lt img gt Element Falls der Client keine Cookies unterst tzt wird automatisch URL Rewriting eingesetzt um die Session ID der URL als Parameter zu bergeben Mit Hilfe dieses Tags kann beispielsweise eine Grafik in der View angezeigt werden die dynamisch von einem Servlet generiert wird z B B rsenkurse link Erzeugt ein HTML lt link gt Element Falls der Client keine Cookies unterst tzt wird automatisch URL Rewriting eingesetzt um die Session ID der URL als Parameter zu bergeben multibox Erzeugt eine Menge von Checkbox Elementen f r ein HTML Formular option Erzeugt ein Element einer Auswahlliste f r ein HTML Formular options Erzeugt mehrere Elemente einer Auswahlliste f r ein HTML Formular password Erzeugt ein Passwort Textfeld verdeckte Eingabe f r ein HTML Formular radio Erzeugt ein Radiobutton f r ein HTML Formular reset Erzeugt einen Reset Button f r ein HTML Formular rewrite Erzeugt eine URI wie der link Tag nur ohne das lt a gt 26 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts select Erzeugt eine Auswahlliste f r ein HTML Formular submit Erzeugt einen Submit Button f r ein HTML Formular text Erzeugt ein Eingabefeld f r ein HTML Formular textarea Erzeugt ein Eingabebereich mehrzeilig f r ein HTML Formular Struts Bean Tags Tag Name Beschreibung cookie Liest einen Cookie aus und erzeugt den Wert die Werte als Variable im G ltigkeitsbereich page define L
112. s erw hnt war Struts im Jahr 2001 eines der popul rsten Frameworks Das zeigt schon die offizielle Unterst tzung in den Applikations Servern von IBM und Bea Ausschlaggebend daf r ist die Tatsache dass es als reines MVC Framework konzipiert wurde Dadurch verf gt es nicht ber den Overhead an Zusatz Services und ist zudem schneller erlernbar 76 Einsatz des J2EE Frameworks Jakarta Struts Fazit Ich konnte im Rahmen meiner Diplomarbeit durchgehend gute Erfahrungen mit Struts machen und kann das Framework f r die Neuentwicklung grosser Web Applikationen empfehlen Es war richtig dass die ZKB Struts im Rahmen einer Diplomarbeit untersucht hat Ich empfehle Struts in die ZKB SAR aufzunehmen Siehe Definition der ZKB SAR f r komplexe Web Applikationen in Kapitel 4 2 Einsatz des J2EE Frameworks Jakarta Struts 77 Anhang A S mtlicher im Rahmen der Diplomarbeit entstandener Quellcode ist auf der Anhang beigelegten CD vorhanden Der Quellcode wurde sowohl als WSAD Projekt wie auch als WAR Datei abgelegt Somit k nnen die Applikationen in jedem beliebigen J2EE kompatiblen Applikationsserver betrachtet werden Der Quellcode befindet sich im Verzeichnis SOURCE 1 2 3 4 Beispiel Applikation aus Kapitel 3 8 ADB Info JSP Version ADB Info Struts Version HTTP Benchmark B Aufder CD befindet sich im Verzeichnis SOFTWARE folgende Software 1 2 3 jakarta struts 1 0 2 zip Jakarta Struts Framework 1 0 2
113. sessosssnosssnnsessnssnnnsssnsnnnsnsssnssnsnnssssnssnnnsssssnsssnssessnne 69 9 1 1 Funkhonsiitntan 8 e eege Ee Reh Bia een ae Ries aS 69 9 1 2 2Perf rmance 2 2 2 0 ee ee en es a ea be er ee EEA EEE AE E 69 2 1 3 Entwicklungsaufw nd EE 73 De Lk Wartb rkelt 2 e 2 2 80 a Se soba tee cock bende en Eed AE ET 73 522 DIE ZUKUNFT VON STRUTS un deed eege deed en Eeer eege EE 74 5 3 STRUTS IN DER Z KB enden 74 150 2794 EE 76 PANHAING eege Eege egene de dE d Sa dada Sa dus Ada e deg dda eege EE eege 79 QUELEENVERZEICHNIS d gege ida geesde e geg deed de deeg eege neuere ee de EE geed EE EN STICHWORTVERZEICHNIS 08 ENN ee ee dgEESSEEN ER ENKER EENEE EEN eege Se Reeg ees 83 EHRENW RTLICHE ERKL RUNG ageet Eege Eed ee Eege 85 IV Einsatz des J2EE Frameworks Jakarta Struts Vorwort Vorwort Ich m chte der Z rcher Kantonalbank f r die M glichkeit danken meine Diplomarbeit in einem professionellen Umfeld erstellen zu k nnen Besonderer Dank gilt dabei Herrn Bernd Reichert f r die gute Betreuung und Unterst tzung sowie der ganzen Abteilung LIXA unter der Leitung von Herrn Dr Walter Haas Es war die Idee von Herrn Reichert das Framework Struts in einer Diplomarbeit zu untersuchen Ebenfalls danken m chte ich Herrn Prof Dr E Klein an der Fachhochschule in Konstanz f r die kompetente Hilfe bei der Erstellung dieser Arbeit Ich m chte mich ausserdem bei Kerstin Winkler und meinen Eltern f r das Korrekturlesen und die Anregungen be
114. setzt werden Einsatz des J2EE Frameworks Jakarta Struts Struts ist zu 100 mit Java Technologien Struts bestehen zu 100 aus Java Komponenten entwickelt worden Applikationen Der Einsatz von Struts erf llt diesen Grundsatz 63 Entwicklung mit Struts Java Anwendungen sollen nach M glichkeit aus Java Beans Komponenten bestehen Der die integrierte technische Middleware f r die Application Server wird als Unterst tzung von Java Server Pages JSP Servlets Enterprise Java Beans EJB und sichere Kommunikation zwischen Client und Server eingesetzt Der ZKB Standard Application Server ist IBM WebSphere Die Management Load Balancing Transaction technischen Services wie Session Management und Instance Pooling werden vom Application Server WebSphere zur Verf gung gestellt Einfache Internet Applikationen mit dem Schwerpunkt Information k nnen ausschliesslich Java Server Pages verwenden Definition Einfache Internet Applikationen sind solche welche vorwiegend einen Informations Charakter haben Komplexe Internet Applikationen verwenden eine Kombination aus Java Server Pages und mindestens einem Servlet als Dispatcher Mechanismus Definition Komplexe Internet Applikationen sind solche welche den Schwerpunkt auf die Interaktivit t beziehungsweise die Eingaben legen oder gar verm genswirksame Transaktionen zulassen Einsatz vom Enterprise Java Beans Das Muster JSP Servlets EJBs anzuwenden
115. sign automatisch ein Klassengeriist in das der Entwickler nur noch den anwendungsspezifischen Quellcode einfiigen muss So kann sich der Entwickler auf das Programmieren der Gesch ftslogik konzentrieren Der von Camino erzeugte Quellcode ist laut Hersteller 100 Struts bzw J2EE kompatibel Camino kann sogar fertige Struts Applikationen einlesen grafisch darstellen und editieren round trip engineering Wizards helfen dem Entwickler beim Erstellen einer Struts Applikation und konvertieren bestehende Einsatz des J2EE Frameworks Jakarta Struts 67 Entwicklung mit Struts JSP HTML Dateien zu Struts Views Die Konfiguration einer Struts Applikation mit Camino ist sehr komfortabel Wer grosse und komplexe Struts Applikationen entwickelt und den Preis von 250 nicht scheut sollte sich berlegen Camino einzusetzen Mehr Informationen gibt es auf Scio Scioworks Camino 2 0 strutsExample cpx ioj x File Project Entity Wizard Help DG m o R E B E strutsExample2 D Cl lt Defaut gt E E usps EJ wee nr changePassword js E DI index isp HE Snap to Grid logon jsp Andexjsp Hi sl E Default G Aogoff do a subscription jsp u isaveSubscri JeditSubscription do JeditRegistration da _ w registration jsp fsaveRe A 5 mainMenu jsp E d mainttenu jsp gt lt htmllink page 4 a a lt html link a ta registration jsp EI subscription js
116. spricht somit der Model 1 Architektur Die einzelnen JSPs werden dadurch extrem gross und un bersichtlich Zudem gibt es Code Teile z B die Berechnung des Datums der letzten Verarbeitung die in mehreren JSPs eingesetzt werden Bei Ver nderungen an diesen Code Teilen m ssten mehrere JSPs angepasst werden Der Einstieg in die Applikation geschieht mit einem Aufruf der Datei index jsp Von hier aus f hren f nf Links auf JSP Seiten mit DB Zugriffen und HTML Formularen und ein Link zu einer JSP Seite ohne DB Zugriffe und Formular ansprechpartner jsp Die f nf Views implementieren allesamt hnliche Funktionalit t und unterscheiden sich nur durch die SQL Statements und die Struktur der darzustellenden Tabellen Alle f nf Views generieren ein Formular das aus einem Text Eingabefeld Datum der letzten Verarbeitung in der ADB und einer Dropdown Liste Liefersysteme bzw Datamarts besteht Die Elemente der Dropdown Liste werden aus der DB gelesen Das Datum der letzten Verarbeitung wird in der jeweiligen JSP errechnet Beim Absenden des Formulars rufen sich die Seiten selbst auf Die bergebenen Daten des Formulars auf der jeweiligen Seite entsprechen den Parametern die dem SQL Statement bergeben werden Mit den Eingaben in das Formular beeinflusst der Benutzer also die anzuzeigenden Daten auf der Seite Von den Seiten status_load jsp und status_extrakt jsp aus gelangt man zudem zu Detailansichten der jeweils dargestellten Daten Der Aufruf de
117. ss das f r den Login zust ndige Action Objekt die Kontrolle an ein anderes Action Objekt weitergibt welches f r die Darstellung des Hauptmen s zust ndig ist Action Objekte werden mit dem Controller der Anwendung verbunden und haben auf diese Weise Zugriff auf die Methoden des Servlets Wenn die Kontrolle weitergegeben wird kann ein Objekt indirekt ein oder mehrere gemeinsam genutzte Objekte z B Java Beans weiterleiten indem es sie in einer der Standard Collections platziert die von Java Servlets verwendet werden Ein Action Objekt kann beispielsweise ein Warenkorb Bean erzeugen dem Warenkorb einen Artikel hinzuf gen das Bean in einer Session Collection platzieren und dann die Kontrolle einem anderen Action Objekt bergeben welches beispielsweise JSPs benutzt um den Inhalt des Warenkorbes anzuzeigen Da jeder Client seine eigene Session hat hat jeder Client auch seinen eigenen Warenkorb In einer Struts Anwendung kann ein Grossteil der Gesch ftslogik durch Java Beans repr sentiert werden Java Beans k nnen dar ber hinaus verwendet werden um HTML Formulare zu verwalten Ein zentrales Problem beim Design von Webanwendungen besteht darin die Angaben aufzubewahren und zu validieren die ein Benutzer zwischen zwei Requests in das Formular eingegeben hat Mit Struts k nnen die Daten eines Formulars sehr einfach in einem ActionForm Bean gespeichert werden Das Bean wird in einer der normalen Collections innerhalb des gemeinsamen Kon
118. st ein hnlich komplett ausgestattetes Framework wie Turbine Es besteht aus drei Kernkomponenten den Schemata den Controllern und den DatabaseObjects Abgerundet wird die Architektur durch ein Security Konzept und eine Reihe zus tzlicher Funktionen wie z B Logging Caching Connection Pooling etc Das Schema Objekt ist als eine Art Anwendungskontext zu verstehen es registriert in einer von com jcorporate expresso core dbobj Schema abgeleiteten Klasse die anwendungsspezifischen Einstellungen insbesondere aber die verwendeten DatabaseObjects und Controller Mit den DatabaseObjects wurde ein einfacher OR Mapping Mechanismus geschaffen der sich um die Persistenz der Daten k mmert Sie greifen dabei auf DatabaseConnections zur ck die einen JDBC unabh ngigen Connection Pool bereitstellen Ein DatabaseObject bezieht sich auf genau eine Tabelle und verf gt ber add delete und update Methoden sowie eine Reihe von Finder Methoden Eine zentrale Rolle nehmen die Controller ein Sie sind als endliche Automaten modelliert und f hren bei jedem Zustandswechsel Acrions aus Damit bernehmen sie nicht nur die Aufgaben des Controllers sondern architekturbedingt auch die des Models Eine strikte Trennung der Rollen wird also in Expresso nicht verwirklicht Zudem k nnen Controller vgl Barr Barr2 und Expr2 Einsatz des J2EE Frameworks Jakarta Struts 55 Jakarta Struts mehrere User Interfaces bedienen Neben JSPs und Templat
119. st nicht sehr stark am Markt vertreten Die Deutsche Bank AG betreibt ihre Online Banking Plattform auf Apple WebObjects Einen umfangreichen Vergleichstest aktueller kommerzieller Applikationsserver erstellte die Computerwoche in Comp Daneben gibt es im Bereich Open Source Software bzw Public Software vielversprechende Projekte wie Enhydra Orion JBoss oder Resin Diese J2EE Server stellen f r den Mittelstand sowie fiir kleinere Firmen ernstzunehmende Alternativen dar Bea Weblogic Server Bea geh rt zusammen mit IBM und Macromedia Coldfusion Server Macr zu den marktf hrenden Herstellern von Applikationsservern vgl Enhy gt vgl Orio vgl JBos gt vgl Resi Einsatz des J2EE Frameworks Jakarta Struts 17 Jakarta Struts 3 Jakarta Struts Die Model 2 Architektur vermittelt einen Eindruck davon wie schwer es ist eine MVC Applikation selbst zu entwickeln Dieser Eindruck wird noch verst rkt wenn man die vielf ltigen M glichkeiten der Kommunikation von Komponenten untereinander betrachtet Jakarta Struts will den Entwickler beim Erstellen von MVC Applikationen entlasten Das Struts Projekt wurde im Mai 2000 von Craig R McClanahan initiiert um der Java Gemeinschaft ein standardisiertes MVC Framework zur Verf gung zu stellen Im Januar 2001 wurde Struts 1 0 fertig gestellt 2001 war auch das Jahr in dem Struts einen sehr grossen Bekanntheitsgrad erlangt hat Dass das Struts Projekt unter
120. standteile somit separat entwickelt werden k nnen Die folgende Abbildung zeigt die Kommunikation und den Datenaustausch zwischen den Teilnehmern einer MVC Anwendung Model Kapselt den Zustand der Applikation SEENEN Antwortet auf Fragen zum Zustand g Definiert die Funktionalit t der Applikation Meldet Views nderungen Status erfragen i Anderungen View Stellt das Model dar Erfragt nderungen beim Model Status ndern Sendet Benutzerverhalten zum Controller Auswahl anzeigen Controller Definiert das Verhalten der Applikation Bildet Benutzeraktionen auf Model nderungen ab AN hlt ein View f r die Darstellung des Modells Benutzerverhalten gt Methoden Aufruf TTT gt Ereignisse Abbildung 2 4 Das MVC Paradigma 8 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe Bei einer J2EE Applikation mit einem Web Front End werden die Views durch JSP Seiten realisiert Zur Visualisierung des Zustandes stellt ein View Objekt Anfragen an das Model Objekt Alternativ kann auch das Model Objekt bei nderungen des Zustandes das View Objekt benachrichtigen Eine zus tzliche Aufgabe des View Objektes besteht in der Entgegennahme von Benutzeranweisungen Diese werden an das Controller Objekt weitergeleitet welches bei J2EE oft ein Servlet ist JSPs verwenden hierzu HTML Formulare Die zugeh rigen HTTP Anfragen GET oder POST richten sich an das Controller O
121. t bei folgendem Aufruf den Request an den Struts Controller weiterleiten http www mycompany com myapplication execute logon Extension Matching leitet alle URLs die mit einem Punkt und einer frei w hlbaren Endung enden an den Controller weiter Folgendes Beispiel veranschaulicht dies lt servlet mapping gt lt servlet name gt action lt servlet name gt lt url pattern gt do lt url pattern gt lt servlet mapping gt Dieser Eintrag in der Datei web xml w rde wenn der Kontextpfad der Web Applikation myapplication ist bei folgendem Aufruf den Request an den Struts Controller weiterleiten http www mycompany com myapplication logon do Definition der Struts Tag Libraries Die Struts Tag Libraries werden folgendermassen definiert taglib gt lt taglib uri gt WEB INF struts bean tld lt taglib uri gt 36 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts lt taglib location gt WEB INF struts bean tld lt taglib location gt lt taglib gt lt taglib gt lt taglib uri gt WEB INF struts html tld lt taglib uri gt lt taglib location gt WEB INF struts html tld lt taglib location gt lt taglib gt lt taglib gt lt taglib uri gt WEB INF struts logic tld lt taglib uri gt lt taglib location gt WEB INF struts logic tld lt taglib location gt lt taglib gt lt taglib gt lt taglib uri gt WEB INF struts template tld lt taglib uri gt
122. tainer stellen eine einheitliche Sicht auf die von tiefer liegenden Schichten angebotenen Dienste zur Verf gung Eine Komponente kann unabh ngig von der verwendeten J2EE Plattform die gleichen Dienste erwarten Hierzu z hlt auch die Verwaltung des Lebenszyklus von Komponenten Alle Container sind daf r verantwortlich die in der Konfigurationsdatei im XML Format enthaltenen Einstellungen umzusetzen beispielsweise die Authentifizierung von Benutzern Die Ankopplung existierender Informationssysteme Enterprise Information Systems bzw EIS wie betriebliche Standardsoftware Datenbanken oder Host basierte Systeme geschieht mit der Connector Architektur Diese basiert darauf dass Hersteller von EIS Adapter zur Verf gung stellen Diese implementieren die Java Schnittstelle Common Client Interface CCD ber die Komponenten auf die angebotenen Dienste zugreifen k nnen Ausserdem bietet J2EE ein Rollenmodell welches die einzelnen Rollen bei der Entwicklung von J2EE Anwendungen definiert und die Entwicklung in grossen Teams oder das Zusammenspiel mehrerer Teams erleichtert vgl Tura01 Einsatz des J2EE Frameworks Jakarta Struts 5 Einf hrung und Grundbegriffe 2 2 Java Server Pages und Servlets Die Bedeutung von Web Applikationen nimmt stetig zu Web Browser sind auf dem Weg das universelle Front End f r viele Anwendungen zu werden Die J2EE Plattform unterst tzt zwei alternative Techniken zur dynamischen Generierung von HTML D
123. tei 9 enth lt die in den Views verwendeten Nachrichten in der jeweiligen Sprache F r die Ablaufreihenfolge unrelevant und aus diesem Grund in der Abbildung oben nicht eingezeichnet sind die ActionForm Klassen Sie dienen dem Zwischenspeichern und Validieren der Formulardaten werden vom Controller 3 erzeugt und k nnen in den Action Klassen 5 und in den View Komponenten angesprochen werden Die ActionForm Klassen k nnen also als eine Art Transportcontainer zwischen den Komponenten angesehen werden 20 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts 3 3 berblick ber das Framework Der Controller b ndelt die HTTP Requests und leitet sie an andere Objekte z B an Java Server Pages des Frameworks weiter Sobald der Controller initialisiert wird parst er eine Datei in der die Konfigurationsressourcen enthalten sind struts config xml Die Konfigurationsressourcen definieren u a die Action Mappings der Anwendung Der Controller verwendet diese Mappings um HTTP Requests in Anwendungsaktionen umzuwandeln Ein Mapping muss mindestens zwei Dinge spezifizieren Erstens einen Request Pfad und zweitens den Objekt Typ mit dem der Request weiter verfahren soll Das Action Objekt kann entweder den Request verarbeiten und dem Client normalerweise dem Browser eine Antwort liefern oder es kann veranlassen dass der Request an ein anderes Action Objekt weitergeleitet wird Wenn beispielsweise ein Login erfolgt ist es denkbar da
124. terbar Trotzdem ist PHP weit verbreitet und wird intensiv weiterentwickelt Es gibt heute sogar objektorientierte Versionen von PHP 14000 Einsatz des J2EE Frameworks Jakarta Struts Einf hrung und Grundbegriffe 2 5 Laufzeitumgebungen Im folgenden Kapitel werden Laufzeitumgebungen f r JSPs bzw Servlets vorgestellt Um JSPs ausf hren zu k nnen braucht man eine sogenannte JSP Engine welche die aufgerufene JSP Seite in ein Servlet bersetzt im Servlet Container ausf hrt und die erzeugte Ergebnisseite an den Browser zur ckliefert Die Laufzeitumgebungen arbeiten in der Regel mit einem Webserver zusammen der f r die Darstellung der statischen Inhalte verantwortlich ist und die Verschl sselung o bereitstellt Was die Verbindung von Webserver und Servlet Container anbelangt gibt es drei verschiedene Modelle Beim Standalone Modell ist der Webserver in Java geschrieben und l uft in derselben JVM wie der Servlet Container Jakarta Tomcat ist ein Standalone Server Beim Out of Process Modell kommunizieren Webserver und Servlet Container ber eine TCP Verbindung miteinander Beim In Process Modell wird der Servlet Container als Plugin in einen in nativem Code geschriebenen Webserver eingeklinkt Diese Variante bietet die beste Performance Der IBM WebSphere Application Server kann in dem Bereich als Beispiel genannt werden Die ZKB SAR hat den Einsatz des IBM WebSphere Application Server als Richtlinie definiert Die weiter unten beschrieb
125. tet wird e In der Session des Benutzers wird unter dem passenden Schl ssel nach einer Instanz eines Beans der passenden Klasse gesucht vgl Stru3 vgl Stru3 Einsatz des J2EE Frameworks Jakarta Struts 23 Jakarta Struts e Falls kein solches Bean im Session G ltigkeitsbereich verf gbar ist wird automatisch ein neues erzeugt und der Session des Benutzers hinzugef gt e F r jeden Request Parameter dessen Name mit dem Namen einer Eigenschaft im Bean korrespondiert wird die passende Setter Methode aufgerufen Dies entspricht dem JSP Befehl lt jsp setProperty gt e Das aktualisierte ActionForm Bean wird an die perform Methode der Action Klasse bergeben Die ActionForm Klasse selbst hat keine spezielle Methode die implementiert werden m sste Typischerweise implementiert eine ActionForm Klasse nur Getter und Setter Methoden f r Eigenschaften getXxx und setXxx Methoden f r jedes Feld das im Formular vorhanden ist jedoch keine Gesch ftslogik Das ActionForm Objekt bietet einen standardisierten Validierungsmechanismus an Wenn die Methode validate berschrieben wird validiert Struts den Input aus dem Formular automatisch Siehe 3 5 2 f r weitere Details Anstatt der ActionForm Validierung kann auch eine eigene Validierung im Action Objekt implementiert werden Dies sollte aber nur dann geschehen wenn f r die Validierung Gesch ftslogik Beans angesprochen werden m ssen Struts unterst tzt zudem Formula
126. textes gespeichert so dass es von anderen Objekten speziell von den Action Objekten verwendet werden kann Das ActionForm Bean kann von einer JSP benutzt werden um die Benutzereingaben zu speichern es kann von einem Action Objekt verwendet werden um die Daten zu validieren und es kann dann wieder von einer JSP benutzt werden um die Formularfelder mit diesen Eingaben zu f llen Im Fall von Validierungsfehlern verwendet Struts einen von verschiedenen Stellen zug nglichen Mechanismus um passende Fehlermeldungen anzuzeigen vgl Stru3 Einsatz des J2EE Frameworks Jakarta Struts 21 Jakarta Struts In Struts wird ein ActionForm Bean in der Konfigurations Ressource definiert und mit einem Action Mapping verbunden indem ein gemeinsamer Eigenschaftsname verwendet wird Wenn ein Request eine Aktion aufruft die ein ActionForm Bean verwendet erh lt das Controller Servlet entweder ein ActionForm Bean oder es erzeugt ein solches und reicht es anschlie end an das Action Objekt weiter Das Action Objekt kann dann die Inhalte des ActionForm Beans pr fen bevor das zugeh rige HTML Formular angezeigt wird Au erdem kann es Nachrichten speichern welche von dem Formular verarbeitet werden sollen Wenn das erledigt ist kann das Action Objekt die Steuerung durch eine Weiterleitung an das HTML Formular blicherweise eine JSP zur ckgeben Der Controller Kann dann auf den HTTP Request antworten und den Client an die Java Server Page weiterleiten
127. tform Enterprise Edition Dieses Kapitel gibt einen kurzen berblick ber J2EE und die dazugeh rigen APls Detailliertere Informationen gibt es u a in J2EE und in unz hliger weiterer Literatur zu diesem Thema Die Java 2 Plattform Enterprise Edition definiert einen Standard zur Implementierung Konfiguration Verteilung und zum Einsatz von unternehmensweiten Anwendungen J2EE ist kein Produkt im eigentlichen Sinne sondern definiert einen allgemeinen Rahmen zur Erstellung unternehmensweiter Anwendungen basierend auf einem Komponentenmodell und der Programmiersprache Java J2EE erm glicht die Realisierung unternehmensweiter Anwendungen durch eine Drei Schichten Architektur Folgende Abbildung veranschaulicht die Aufteilung in die drei Schichten Firewall Enterprise Ressourcen ava Bean Adapter Client Containter Enterprise Client Information Systems Web Client Container RDBMS ERP Legacy Servlets JSP Applikationen Client Seiten HTML XML Client Tier Middle Tier EIS Tier Abbildung 2 1 Die J2EE Plattform Die mittlere Schicht Middle Tier wird oft auch als sogenannte Middleware bezeichnet Im Vergleich zu anderen Middleware Techniken wie Transaktionsmonitoren Message Queuing Systemen und Object Request Brokern ORB erhebt J2EE den Anspruch konsequent auf einem Komponentenmodell zu basieren und portabel zu sein Der Kern des J2EE Modells besteht darin einfach anpassbare und leicht
128. trollers ein Servlet der Klasse ActionServlet Dieses Servlet wird konfiguriert indem eine Sammlung von Mappings beschrieben durch eine Klasse vom Typ ActionMapping definiert wird Jedes Mapping definiert einen Pfad auf den hin der eingehende Request URI gepriift wird sowie den voll qualifizierten Klassennamen einer Action Klasse Diese ist dafiir verantwortlich die gew nschte Aktion der Gesch ftslogik auszuf hren die Kontrolle an die passende View Komponente weiterzugeben um schlie lich die Antwort f r den Client zu erzeugen Struts erlaubt es logische Namen f r Aktionen zu verwenden So kann eine Action Methode beispielsweise die Login Seite aufrufen ohne zu wissen was der tats chliche Name der JSP Seite ist Diese Features erm glichen dem Entwickler die Steuerungslogik von der Darstellung zu entkoppeln 3 6 1 Action Klassen Die Action Klasse verarbeitet einen Request und gibt ein ActionForward Objekt zur ck das diejenige View definiert welche den Response generiert Die Verarbeitung des Request geschieht in der vom Entwickler berschriebenen perform Methode der Klasse Action Die perform Methode einer Action Klasse kann folgende Funktionalit t implementieren e Sicherheit berpr fen der Benutzer Session Wenn keine g ltige Session ID f r den Benutzer existiert Kann an die Login View weitergeleitet werden Dies k nnte der Fall sein wenn der Benutzer versucht ohne Login und durch direkte Eingabe einer URL in d
129. tsverzeichnis ZUSAMMENFASSUNG eege anna nam Bann aaa INHALTSVERZEICHNIS u eege 000m aan an nn aan na ann na EE RE eRE SE Ne III VORWORT E V ABKURZUNGSVERZEICHNIS azuua2unnuunnnunnnunnnunnnnnnnnnunnnunn nun nun mann mann EN REEN KREE KENNEN REENRK ENKEN Vil DARSTELLUNGSVERZEICHNIS sissdacesiecwaususccuausususuausvadsdecenuadususususuausususwausvadsdedsdadessususieusuen IX 1 uNMDEITEDNG eege ege Eege gege Eege eege 1 EL AUSG NGSEAGE seed eege eeh Eege H 1 EI A 1 E 2 2 EINF HRUNG UND GRUNDBEGRIFFE unnunuuunnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 3 2 1 J2EE JAVA 2 PLATTFORM ENTERPRISE EDITION esessssssssssnssorsonsnssonsnnsnnsnnssnssonsnnsnnsnnssnsnnssnssnnsnnsonsnnsnne 3 2 2 JAVA SERVER PAGES UND SERVLETS zeercnsssnsnnesessnssnnsonsnnsnnsnnsnnsnnssnnsonsnnsnnsnnsnnsnnssnnsossnnsnnsnnssnsnnssnssnssnnsonsnnsnne 6 Zid A RCHITEK TUREN E 8 2 3 Das MVE Paradisma u seen AAE ead ees 8 2 3 2 M del 1 Architekf r enas2 Zeen Aessen eege Seege REESEN ee 9 2 3 3 Model 2 Architektur 5 eccccoc dd ciiet se tewien ia ie sk Ri Rachen 10 2 3 4 Kommunikation der Komponenten 11 2 4 JSP IM VERGLEICH MIT ANDEREN TECHNOLOGIEN essssnssssssssossnrsonsnssnnsnnsnnssnssnnsonsnnsnnsnnssnsnnssnnsonsnnsonsnnee 14 24 1 Vergleicht CGD een era REE E N ce opty Eo EENE En susteeubeusaendesteseeseauagescesdesens 14 2 4 2 Vergleichmit AS oneee ee eb E e EERE AE EE 14 2 43 Vergleich mit PHP enn a a A a ees gun E nr EE EA REEI eae
130. tz des J2EE Frameworks Jakarta Struts 71 Erkenntnisse Struts 39 697 396 97 2 52 10 Clients 20 Requests gesamt 200 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 2 01 Struts 96 368 481 84 2 08 20 Clients 1 Request gesamt 20 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 1 83 Struts 11 276 563 8 1 77 20 Clients 10 Requests gesamt 200 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 2 22 Struts 98 562 492 81 2 03 20 Clients 20 Requests gesamt 400 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 152 189 380 47 2 63 Struts 231 833 579 58 1 73 Beim Betrachten der Messergebnisse f llt auf dass Requests vom Server wesentlich schneller abgearbeitet werden wenn sie parallel erzeugt werden Beispielsweise haben 10 hintereinander gestartete Requests auf die JSP Variante insgesamt eine Antwortzeit von 27 299 ms w hrend 10 parallel gestartete Requests auf die JSP Variante lediglich eine Antwortzeit von 5 989 ms haben Dies ist durch die Funktionsweise des WebSphere Servers begr ndet Da der WebSphere Server einen Cache Speicher benutzt um die Antwortzeit zu verk rzen gibt es in allen Messreihen immer einen Ausreisser am Anfang Die Antwortzeit des ersten Requests ist immer h her als die der nachfolgenden Requests Dies macht sich vor allem im der ersten Tab
131. u gt lt logic equal gt lt logic equal name submitForm property anrede value h gt lt bean message key index herr gt lt logic equal gt lt bean write name name scope request gt lt logic present gt lt body gt lt html html gt Listing 3 4 index jsp In Zeile 6 wird die Internationalisierung von Struts aktiviert Der Tag lt bean message key index title gt in Zeile 9 erzeugt den Satz Struts Beispiel den Struts aus der Message Ressource ApplicationResources properties bezieht 01 02 04 05 07 08 10 11 12 index index index index index index index butto title Struts Beispiel heading Struts Beispiel name Name anrede Anrede frau Frau herr Herr hallo Hallo n submit Absenden 46 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts 13 14 errors header lt h4 gt Fehler lt h4 gt lt ul gt 15 errors footer lt ul gt lt hr gt 16 17 error name lt li gt Bitte Name eingeben 18 error anrede lt li gt Bitte Anrede eingeben Listing 3 5 ApplicationResources properties Das Tag in Zeile 17 w rde Fehlermeldungen ausgeben sobald in der Struts Java Collection f r Fehlermeldungen Elemente vorhanden w ren Dies ist der Fall wenn die Validierung der Formulardaten in der ActionForm Klasse fehlschlagen w rde Damit das Speichern der Formularwerte in der ActionForm Bean funktioniert m ssen f r den Aufbau des Formul
132. uts zwei Kapitel im offiziellen WebSphere Version 4 Application Development Handbook Vor dem Release der Version 4 0 musste man noch umfangreiche Ver nderungen am Server und sogar am Framework vornehmen bevor eine Struts Applikation lief Die Portierung einer mit WSAD entwickelten Struts Applikation auf den Open Source Server Tomcat und umgekehrt verl uft ohne Probleme Eine mit WSAD entwickelte Struts Applikation konnte von mir problemlos auf dem in der ZKB eingesetzten WebSphere Cluster AIX sowie auf einem Tomcat Server installiert werden Beispielsweise das Schreiben in eine Datenbank oder das Durchf hren einer berweisung auf ein Konto mittels der Gesch ftslogik vgl IBM2 66 Einsatz des J2EE Frameworks Jakarta Struts Entwicklung mit Struts 4 5 Struts Tools Es gibt Werkzeuge die dem Entwickler die Arbeit mit Struts erleichtern sollen Ich habe im Rahmen der Diplomarbeit zwei bekannte Werkzeuge getestet Struts Console dient lediglich dem komfortablen Editieren von Struts Konfigurationsdateien w hrend Scioworks Camino die gesamte Entwicklung von Struts Applikationen vereinfachen soll 4 5 1 Struts Console Struts Console ist ein Kostenloses Java Programm mit grafischer Oberfl che und dient dem Verwalten von Struts Applikationen Mit Struts Console k nnen die Konfigurationsdateien des Frameworks komfortabel editiert werden Ausserdem k nnen bestehende JSP HTML Seiten in Stuts Views welche Struts Tag Libraries b
133. w re auch der Ort an dem weitere Java Beans bzw auch EJBs also 4400 Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts die Gesch ftslogik aufgerufen werden K nnten bzw Datenbankverbindungen aufgebaut w rden siehe Schritt 7 Die Action bzw ActionForm Klassen sollten einer Namenskonvention entsprechen Klassentyp Name ActionForm lt aktion gt Form wobei lt aktion gt der Aktion Pfadname path in der Datei struts config xml ist Action lt aktion gt Action Folgendes Listing zeigt eine Struts XML Konfigurationsdatei In Zeile 10 bis 13 wird dem Formular Bean ein logischer Name zugeordnet In den Zeilen 16 bis 25 wird eine Struts Aktion definiert Der Name der Aktion ist submit path submit type beispiel SubmitAction gibt an welche Action Klasse aufgerufen werden soll name submitForm definiert das zu benutzende ActionForm Bean und input index jsp definiert die View welche evtl Fehlermeldungen anzeigt Durch scope request wird festgelegt wie lange die ActionForm Bean existiert Die Forward Tags definieren an welche Views der Controller nach dem Abarbeiten der Action Klasse weiterleiten soll siehe auch Schritt 7 In unserem Fall besteht die Anwendung aus nur einer View und kehrt in jedem Fall dahin zur ck 01 lt xml version 1 0 encoding ISO 8859 1 gt 02 03 lt DOCTYPE struts config PUBLIC 04 Apache Software Foundation DTD Struts Configuration 1 0 EN 05 http ja
134. wiederholt und die Durchschnittswerte ermittelt Der Vergleich greift bei beiden Varianten auf die gleiche View mit dem Namen status_load jsp zu Bei der JSP Variante Model 1 entspricht dies einem Aufruf der URL http adbinfol ex zkb ch prod status_load jsp Bei der Struts Variante Model 2 entspricht dies einem Aufruf einer Struts Aktion mit dem Namen startStatusLoad Dies geschieht durch den Aufruf der URL http adbinfol ex zkb ch prod1 startStatusLoad do Es werden pro Variante 9 Messungen vorgenommen Dabei wird jeweils die gesamte Antwortzeit in Millisekunden die Antwortzeit pro Request in Millisekunden und die Anzahl der Requests pro Sekunde notiert Um m glichst reale Bedingungen zu simulieren werden eine unterschiedliche Anzahl von Requests von einer unterschiedlichen Anzahl von Clients abgeschickt 1 Client 1 Request gesamt 1 Request Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP JSP Struts 26 989 2 698 9 0 37 1 Client 20 Requests gesamt 20 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 59 425 2 971 25 0 34 Struts 48 209 2 410 45 0 41 10 Clients 1 Request gesamt 10 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 1 67 Struts 4 767 476 7 2 1 10 Clients 10 Requests gesamt 100 Requests Variante Antwortzeit gesamt ms Antwortzeit Request ms Requests sek JSP 48 079 480 79 2 08 Einsa
135. ype ist der Name der Action Klasse welche die Aktion ausf hrt name ist der Name der ActionForm Bean welche mit der Aktion in Zusammenhang steht Einsatz des J2EE Frameworks Jakarta Struts Jakarta Struts scope definiert den G ltigkeitsbereich in dem die ActionForm Bean erstellt wird o Die Klasse ActionForwards enth lt eine Collection von ActionForward Objekten o Die Klasse ActionForward enth lt Informationen dar ber wohin der Benutzer nach der Aktion weitergeleitet wird Die Informationen kommen aus der Konfigurationsdatei struts config xml lt forward name next path forwardedPage jsp gt e ActionForm Bean Management o Die Klasse ActionFormBeans enth lt eine Collection von ActionFormBean Objekten o Die Klasse ActionFormBean ordnet einem logischen Namen eine ActionForm Klasse zu Die Informationen dariiber kommen aus der Konfigurationsdatei struts config xml lt form bean name userForm type xxx UserActionForm gt e Error Management o Die Klasse ActionErrors enth lt eine Collection von ActionError Objekten o Die Klasse ActionError enth lt Informationen ber Fehlermeldungen User Klassen e UserAction Erbt von Action Fachlicher Controller Die berschriebene perform Methode enth lt die Gesch ftslogik bzw ruft diese auf e UserActionForm Erbt von ActionForm Speichert die Formulardaten Die berschriebene validate Methode validiert die Formulardaten e HelperBean Model Klasse zum
136. zur ckgegriffen In den Java Klassen wird eine Kontext Variable referenziert um dort in einer Art Hashmap Werte f r die im Template verwendeten Variablen zu hinterlegen Diese Variablen stehen dann f r alle Screens in der Session zur Verf gung Die Container Funktionalit t der Page wird ebenfalls durch Templates abgebildet In Layout Templates m ssen die Variablen screenplaceholder und navigation verwendet werden um eine Art Include Beziehung zu weiteren Screen und Navigation Templates herzustellen Diese sind wiederum HTML Fragmente mit Template Syntax an die Java Klassen gekoppelt sind In den Screens wird eine neue Page gesetzt und optional eine auszuf hrende Action angegeben Einsatz des J2EE Frameworks Jakarta Struts 53 Jakarta Struts Damit bernehmen sie selbst die Controller Funktionalit t Aus den Actions heraus wird die Business Logik ausgef hrt und zudem die Session mit Variablen gefiillt 3 9 2 Barracuda Das Barracuda Framework aus dem Hause Enhydra basiert ebenfalls auf einer MVC Architektur Es distanziert sich jedoch entschieden von den JSP basierten Pull Ans tzen und setzt mit dem hauseigenen XMLC eine Push Strategie ein Enhydra sieht in der M chtigkeit von JSP und Tag Libraries einige Schwachpunkte So muss der Web Designer meist doch ber geringe Java Kenntnisse verf gen zumindest aber die neuen Tags der Tag Library erlernen Zwar minimiert die Verwendung der Tag Libraries den Java Code in den JSP Seiten
Download Pdf Manuals
Related Search
Related Contents
GT250A128TAVZZ S01000 - Regolatori di Flusso Luminoso User`s Guide - Extech Instruments FUSION 20 FUSION 20T - Floor Equipment Parts FPO - Horizon Hobby 5 - Support Sagemcom Nextel comm IR1200 User's Manual "取扱説明書" Base Comfort Copyright © All rights reserved.
Failed to retrieve file