1 / 27

Web-Anwendungen mit dem Jakarta Struts Framework

Web-Anwendungen mit dem Jakarta Struts Framework. 3.Juli 2003 Martin Burkhardt. ?. Das Struts Framework. Struts Übersicht. Das Action Servlet. Die Action Form Klassen. Die Action Klassen. Die Struts Konfiguration. Struts Übersicht. Open Source Framework für Web-Anwendungen

Download Presentation

Web-Anwendungen mit dem Jakarta Struts Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

  2. ? Das Struts Framework Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration

  3. Struts Übersicht • Open Source Framework für Web-Anwendungen • Teil des umfangreichen Apache Jakarta Projekts • Struts: bautechnischer Ausdruck (engl.) für „Verstrebungen, Abstützungen“ • Basiert auf Standard Java APIs • Aktuelle Version ist Struts 1.1 rc2, diese benötigt: • JDK ab 1.2 • Servlet API ab 2.2 • JSP ab 1.1 • XML Parser, kompatibel zu JAXP ab 1.1 • Einen Teil der Jakarta Common Packages

  4. Motivation - Warum noch ein Framework? • Bewährte Architekturen und Entwurfsmuster können benutzt werden, anstatt sie immer wieder neu zu implementieren. • Erleichterung von Standardaufgaben in Web-Anwendungen: • Formularbehandlung • Mehrsprachigkeit • Schnellere Entwicklungszeiten • Statt unschönem HTML-Code (hoffentlich) schönere JSP CustomTags

  5. Was bietet Struts? • MVC Architektur (Model 2) • Model: z.B: JavaBeans, EJBs, Datenbank, EIS, ... • View: JSP • Controller: Teile von Struts und eigene Controller Klassen • Mehrsprachigkeit • JSP Taglibs • Server- und clientseitige Eingabevalidierung möglich • XML basierte Konfiguration für die Formularnavigation • Tiles Framework zur Steuerung des Layouts • Deklaratives Exception Handling

  6. Architektur Struts Anwendung httprequest httpresponse struts-config.xml TagLibs Action JSP Action ActionServlet JSP Action Action Controller View ActionForm ActionForm ActionForm Model

  7. ? Das Struts Framework Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration

  8. Aufgaben • Zentrale Controller Instanz der Struts Web-Anwendung • Wird über ein Konfigurationsfile (struts-config.xml) gesteuert • Nimmt Parameter aus den Formularen entgegen und füllt damit die ActionForm Objekte • Leitet die ActionForm Objekte nach erfolgreicher Validierung an die Action Objekte weiter

  9. Registrierung in der Web Anwendung ... <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param></servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> ... Struts Konfigurationsdatei web.xml

  10. ? Das Struts Framework Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration

  11. Übersicht ActionForm • Erlauben eine einfache Übernahme der Formulardaten in die Properties einer JavaBean Klasse und umgekehrt die Vorbelegung von Formularfeldern mit Werten aus den JavaBean Properties. • Für die Werte aus den HTML Eingabefeldern gibt es im ActionForm Bean gleichnamige Properties. • Optional können die so übernommenen Eingabewerte in einer validate() Methode überprüft werden. • Pro Formular kann eine solche ActionForm Klasse als Ableitung von org.apache.struts.action.ActionFormimplementiert werden.

  12. Beispiel Verbindung durch die Namensgleichheit des JSP Tag Attribut-Werts und des JavaBean Property-Namens ActionForm SimpleForm name wohnort validate() <html:form action="simpleInput"> <TABLE border="0"> <TBODY> <TR> <TD>Name</TD> <TD><html:text property="name" /></TD> </TR> ... </TBODY> </TABLE> <html:submit value="ok" /> </html:form> Verbindung zwischen der Aktion simpleInput und der Klasse SimpleForm laut struts-config.xml SimpleForm.jsp

  13. Validierung und Fehlerbehandlung (1) publicclassSimpleFormextendsActionForm { privateStringwohnort; privateStringname; ... ... Getter und Setter Methoden ... public ActionErrors validate(ActionMapping map, HttpServletRequest req) { ActionErrors errors = new ActionErrors(); if((wohnort == null) || (wohnort.length() < 3)) { errors.add("wohnort", new ActionError("error.city.tooshort")); } return errors; } } Implementierung der validate() Methode ist optional SimpleForm.java Ein leeres errors Object steht für eine erfolgreiche Validierung Textschlüssel (I18N)

  14. Validierung und Fehlerbehandlung (2) ... <BODY> <html:errors/> <html:form.... SimpleForm.jsp Mit diesem Tag werden alle Fehlermeldungen im ActionErrors Object ausgegeben Das <html:errors> Tag benötigt diese beiden Textschlüssel errors.header = Eingabefehler errors.footer = <hr> error.city.tooshort = Der Ortsname muss aus mindestens 3 Zeichen bestehen Resource_de.properties

  15. Validierung und Fehlerbehandlung (3) • Neben der validate() Methode in der ActionForm Klasse kann die Validierung auch deklarativ über eine XML Datei erfolgen. • Dazu beinhaltet Struts eine Reihe von Standard-Validatoren (z.B. für Beträge, Zahlen, e-mail Adresse, ...) und stellt dazu Standard-Fehlermeldungen bereit. • Einer dieser Validatoren ("mask") kann über Regular Expressions parametrisiert werden. Damit lassen sich die meisten Einzelfeldprüfungen realisieren. • Mit einem Eingabefeld können mehrere Validatoren verknüpft werden.

  16. JSP Custom TagLibs in Struts • Struts beinhaltet mehrere JSP Tag-Libs: • HTML Tags • Form Tags (z.B. <html:form>, <html:text>) • Messages, Error Messages • Tag Attribute für JavaScript (z.B. Event Handling) • Mehrsprachigkeit • Bean Tags • Manipulation und Ausgabe von JavaBeans • Logic Tags • Vergleichsoperationen, Iteratoren, etc. • In der J2EE1.4 wird die JavaServer Pages Standard Tag Library (JSTL) enthalten sein. Die meisten der Struts Bean- und Logic-Tags können dann durch JSTL Tags ersetzt werden.

  17. ? Das Struts Framework Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration

  18. Übersicht Action • Sind Teil des Contollers und stellen die Verbindung zum Model her • Werden abgeleitet von org.apache.struts.action.Action • Bearbeiten den Request bzw. die Daten aus dem ActionForm Objekt • Erzeugen eine Ausgabe über den Response oder leiten zu einer Ausgabeseite weiter • Müssen Thread-Safe sein, da das Struts Framework nur eine Instanz pro Klasse hält • Das gewünschte Verhalten wird durch Überschreiben der execute() Methode implementiert

  19. Die execute Methode public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { ActionForward retFwd; if( ((LoginForm)form).getUserId().equals("Wombat11")) { retFwd = mapping.findForward("success"); } else { retFwd = mapping.findForward("register"); } return retFwd; } „Business Logik“ Zeile Mapping Namen für die Folgeseite SimpleAction.java

  20. ? Das Struts Framework Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration

  21. struts-config.xml <struts-config> <form-beans> <form-bean name="simpleForm" type="hup.kurs.struts.forms.SimpleForm"/> </form-beans> <global-forwards> ... </global-forwards> <action-mappings> ... </action-mappings> </struts-config> Zuordung von Formularnamen zu ActionForm Klassen (diese Namen werden im action-mapping benötigt) Anwendungs-globales Mapping von Namen auf Seiten Konfiguration einer Aktion struts-config.xml

  22. Action Mapping Mapping Name laut web.xml URL-Mapping Klassenname der Action-Subklasse Name der vorher definierten ActionForm <action-mappings> <action path="/simpleInput" type="hup.action.SimpleAction" name="simpleForm" scope="request" input="/SimpleForm.jsp" validate="true" > <forward name="success" path="/Welcome.jsp"/> <forward name="register" path="/Register.jsp"/> </action> </action-mappings> Diese Seite wird bei nicht erfolgreicher Validierung angezeigt validate() in der ActionForm aufrufen struts-config.xml In der Action Klasse lokal gültige Namen für Weiterleitungen

  23. Mehrsprachigkeit <message-resources parameter="Resource"/> struts-config.xml Name (Prefix) der Property-Files mit den Text-Ressourcen Textschlüssel für die Struts-Tags ... label.city = Wohnort ... ... <bean:message key="label.city"/> ... Resource_de.properties StrutsForm.jsp

  24. Hinweise • Das Erstellen der Konfigurationsdatei ist sehr fehlerträchtig, die XML Attributnamen sind oft wenig intuitiv. • Visuelle Struts Editoren gibt es z.B. im WSAD 5.0 und als OpenSource Projekte. • Der Aufruf einer JSP mit Struts Tag-Libs setzt ein initialisiertes ActionServlet voraus (ohne dass dieses schon gerufen wurde), das ActionServlet sollte daher beim Start des Servers geladen werden (<load-on-startup> im web.xml).

  25. Referenzen • Struts Homehttp://jakarta.apache.org/struts/ • Freies GUI Frontend für die Struts-Konfigurationhttp://www.jamesholmes.com/struts/console/ • Struts Schulung/Workshophttp://www.haenchen.softwarezentrum.de/ Schulung/schulung.html • IBM WebSphere Studio Application Developer (grafischer Struts Builder)http://www-3.ibm.com/ software/awdtools/studioappdev/

  26. Web-Anwendungen mit dem Jakarta Struts Framework Noch Fragen?

  27. M.Burkhardt@haenchen.softwarezentrum.de http://www.haenchen.softwarezentrum.de/ Calwer Strasse 1 D-71034 Böblingen Tel.: +49-(0)7031-21 26 - 100

More Related