PDF 66K

Werbung
Struts-Framework
† STRUTS Open Source Web Application
Framework
Model-View-Controller-Pattern
Dipl.-Inf. (FH) Albina Thyen
„ Unterprojekt des Apache Jakarta
„ Basierend auf: JSP, Servlets, JavaBeans
„ Model View Controller Architektur
1
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
3
Einleitung
Gliederung
†
†
†
†
†
†
†
Dipl.-Inf. (FH) Albina Thyen
2
† Bestandteile der Struts
„ Java Servlets
† Java-Programme, die auf einem Web-Server
(z.B. Apache Tomcat) laufen
„ Java Server Pages (JSP)
† Text-Dokumente, wo neben dem HTML-Code
zusätzlicher Java-Code vorhanden ist
„ Java Beans
† Klassen, die für ihre Ereignis-Verarbeitungen
und Methoden bestimmte von Sun festgelegte
Namenskonventionen einhalten müssen
Dipl.-Inf. (FH) Albina Thyen
4
Einleitung
MVC-Paradigma
† Vorteile des Struts- Frameworks
„ basiert auf einer Reihe von "Best Practice"
–Design Patterns
„ Verringerung des Aufwandes für die
Entwicklung, Pflege und Weiterentwicklung von Webapplikationen.
„ von allen J2EE kompatiblen Application
Server unterstützt.
„ getrennte Planung und Entwicklung durch
die MVC-Architektur.
Dipl.-Inf. (FH) Albina Thyen
5
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
Model
View
Dipl.-Inf. (FH) Albina Thyen
7
MVC-Paradigma
Gliederung
†
†
†
†
†
†
†
Controller
6
† Vorteile von MVC
„ Model kann unabhängig von View und
Controller entwickelt werden
„ Model kann ohne Änderungen der View
und Controller gewechselt werden
„ Flexibilität durch Kombinierbarkeit der
Komponenten
„ Bessere Wartbarkeit und
Wiederverwendbarkeit
Dipl.-Inf. (FH) Albina Thyen
8
MVC-Paradigma
Struts-Framework mit MVC
† MVC bei Java-Webanwendungen
„ JSP Model 1 Architektur
1
Browser
Anfrage
4
<View/Controller>
JSP
Antwort
Data
Sources
Application
Server
http-Anfrage
http-Antwort
strutsconfig.xml
2
TagLibs
3 Datentransfer
<Model>
Action
Action
Action
Action
ActionServlet
JavaBean
Controller
ActionForm
ActionForm
ActionForm
Dipl.-Inf. (FH) Albina Thyen
9
MVC-Paradigma
Browser
1
<Controller>
Servlet
4 weiterleiten
6
Antwort
Dipl.-Inf. (FH) Albina Thyen
<View>
JSP
View
Struts
Anwendung
11
Gliederung
„ JSP Model 2 Architektur
Anfrage
Dipl.-Inf. (FH) Albina Thyen
Model
JSP
JSP
Application
Server
†
†
†
†
†
†
†
Data
Sources
2 erzeugt
<Model>
JavaBean
5
liest Daten
3
Datentransfer
10
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
12
Struts: Controller
Struts: Controller
† Der Controller setzt sich bei Struts aus
mehreren Teilen zusammen:
† Konfiguration über web.xml
„
„
„
„
„
<web-app>
ActionServlet
RequestProcessor
ActionForms
Actions
struts-config.xml
Dipl.-Inf. (FH) Albina Thyen
<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>
Struts Konfigurationsdatei
…
</servlet>
13
Dipl.-Inf. (FH) Albina Thyen
Struts: Controller
Struts: Controller
† ActionServlet
† RequestProcessor
„ dient als zentraler Eintrittspunkt für alle
Requests
„ leitet Request und Response für die
Steuerung des weiteren Ablaufs an den
RequestProcessor weiter
Dipl.-Inf. (FH) Albina Thyen
web.xml
15
„ ist für den Aufruf von Action-Klassen und
für die Weiterleitung an JSP
verantwortlich
„ Zur Ermittlung von Action und JSPSeiten wird der RequestProcessor über
die Datei struts-config.xml konfiguriert
14
Dipl.-Inf. (FH) Albina Thyen
16
Struts: Controller
Struts: Controller
† ActionForms
† Actions
public class CheckOutAction extends Action implements ActionConstants ,
„ kapselt Formulardaten des Nutzers in
einfache Java-Objekten
„ ActionForms erben von
org.apache.struts.action.ActionForm
„ ActionForms werden nur dann
verwendet, wenn sie in der Datei
struts-config.xml konfiguriert wurden
SessionKeys, RequestKeys {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
}
Dipl.-Inf. (FH) Albina Thyen
17
Profile profile = (Profile)request.getSession().getAttribute(PROFILE_KEY);
ShoppingCart cart = (ShoppingCart)request.getSession().getAttribute(
SHOPPING_CART_KEY);
…
request.setAttribute(ORDER_ID, Integer.toString(order.getId()));
request.getSession().removeAttribute(SHOPPING_CART_KEY);
return mapping.findForward(ORDER_CONFIRMATION);
} …
CheckOutAction.java
Dipl.-Inf. (FH) Albina Thyen
Struts: Controller
Struts: Controller
† Actions
† struts-config.xml
„ Schnittstelle zum Model
„ erben direkt oder indirekt von der Klasse
org.apache.struts.actions.Action
„ überschreiben die Methode execute()
und erhalten eine Referenz auf ein
ActionForm als Parameter
Dipl.-Inf. (FH) Albina Thyen
18
19
„ Die Datei struts-config.xml organisiert
den Ablauf des Kontrollflusses eines
Requests
„ struts-config.xml legt fest,
† welche Action aufgerufen wird
† welche ActionForms verwendet werden
† welche JSP-Seite angezeigt wird
Dipl.-Inf. (FH) Albina Thyen
20
Struts: Controller
Gliederung
† struts-config.xml
†
†
†
†
†
†
†
<form-beans>
…
<form-bean name="queryResultsForm"
type="de.deicon.opensource.webapp.forms.QueryResultsForm">
</form-bean>
<form-bean name="shoppingCartForm"
type="de.deicon.opensource.webapp.forms.ShoppingCartForm">
</form-bean>
…
</form-beans>
…
Dipl.-Inf. (FH) Albina Thyen
21
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
23
Struts: Controller
Struts: Model
† struts-config.xml
† Der Zugriff auf die Daten des Models erfolgt
über JavaBeans
† JavaBeans besitzen eine Menge privater
Eigenschaften, die über öffentliche get()
und set()- Methoden manipuliert bzw.
ausgelesen werden können.
† Zudem können sie noch beliebige Methoden
besitzen die den Zustand der JavaBean
beeinflussen.
…
<action-mappings>
<action path="/createLogin"
type="de.deicon.opensource.webapp.actions.LogonAction"
parameter="method"
name="createLoginForm"
scope="request"
validate="true"
input="login.create">
</action>
…
</action-mappings>
…
Dipl.-Inf. (FH) Albina Thyen
22
Dipl.-Inf. (FH) Albina Thyen
24
Struts: Model
Gliederung
†
†
†
†
†
†
†
public class Book {
private String isbn = null;
private String title = null;
private String authorName = null;
…
public String getTitle() { return this.title; }
public void setTitle(String title) { this.title = title; }
public String getIsbn() { return this.isbn; }
}
public void setIsbn(String isbn) { this.isbn = isbn; }
…
Book.java
Dipl.-Inf. (FH) Albina Thyen
25
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
27
Struts: Model
Struts: View
† Eine FormBean ist eine JavaBean, deren
Properties mit den UIKomponenten eines
HTML-Formulares korrespondieren.
† Die FormBean repräsentiert den serverseitigen Status des HTML Formulares.
† Es wird ermöglicht, die Daten, die in JavaCode vorliegen, zu validieren, auszulesen,
zu manipulieren oder zu löschen.
† Der Zugriff innerhalb der View erfolgt über
spezielle Struts-Tags in den JavaServer
Pages
† Wird durch JavaServer Pages repräsentiert.
† Tag-Bibliotheken erlauben Struts HTMLOutput dynamisch zu gestalten.
† Neben den Struts-eigenen können auch die
Java Standard Tag Library verwendet
werden.
† Für die Dateieingabe in HTML-Formulare
wird die Struts-HTML TagLib verwendet.
† In der HTML-TagLib befinden sich für alle
HTML-Tags entsprechende Struts-Tags.
Dipl.-Inf. (FH) Albina Thyen
26
Dipl.-Inf. (FH) Albina Thyen
28
Struts: View
Deployment von Struts-Anwendungen
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
† Für das Deployment müssen
Webanwendungen eine bestimmte Struktur
besitzen
† Webanwendungen können sowohl in
gepackter als auch in ungepackter Form
deployed werden
…
<html:errors />
<html:form action="/dynValLogon" focus="userId">
<table><tr>
<bean:message key="prompt.userId"/>:
<td>
<html:text property="userId" size="16" maxlength="18"/>
</td></tr>
<tr>
<bean:message key="prompt.password"/>:
<td>
<html:password property="password" redisplay="false"/>
…
Dipl.-Inf. (FH) Albina Thyen
29
Gliederung
†
†
†
†
†
†
†
31
Deployment von Struts-Anwendungen
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
Dipl.-Inf. (FH) Albina Thyen
30
† Struktur von Webanwendungen
Web-Anwendung
*.jsp
WEB-INF
*.tld
web.xml
struts-config.xml
lib
*.jar
classes
*.class
ApplicationResources.properties
Dipl.-Inf. (FH) Albina Thyen
32
Deployment von Struts-Anwendungen
Deployment von Struts-Anwendungen
† Im Deployment-Descriptor müssen das
ActionServlet des Struts-Frameworks sowie
die Taglibs angemeldet werden
† Die für Struts benötigte Bibliotheken
müssen ins /WEB-INF/lib-Verzeichnis
kopiert werden:
<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>
„
„
„
„
„
„
„
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-fileupload.jar
commons-logging.jar
commons-validator.jar
struts.jar
web.xml
Dipl.-Inf. (FH) Albina Thyen
33
Dipl.-Inf. (FH) Albina Thyen
35
Deployment von Struts-Anwendungen
Deployment von Struts-Anwendungen
† Die Konfigurationsdatei struts-config.xml
muss in das Verzeichnis WEB-INF kopiert
werden
† Die Taglib-Descriptoren müssen ins
Verzeichnis WEB-INF kopiert werden:
† Konfiguration von Struts
struts-config.xml
„ struts-bean.tld
„ struts-logic.tld
„ struts-html.tld
Controller
Modell
Web
Application
Dipl.-Inf. (FH) Albina Thyen
34
Dipl.-Inf. (FH) Albina Thyen
Properties Files
web.xml
View
Struts tag libraries
36
Gliederung
†
†
†
†
†
†
†
Projektentwicklung von Struts
Einleitung
Model-View-Controller-Paradigma
Struts: Controller
Struts: Model
Struts: View
Deployment von Struts-Anwendungen
Projektentwicklung von Struts
Dipl.-Inf. (FH) Albina Thyen
37
† Struts–Bibliotheken
„ Struts ist ein Open-Source-Framework
und unterliegt der Apache-License
„ Die Struts Bibliotheken stehen unter
http://struts.apache.org in zwei
Varianten zum Download bereit:
† Binaries
† Source Code
Dipl.-Inf. (FH) Albina Thyen
Projektentwicklung von Struts
Projektentwicklung von Struts
† Benötigte Komponenten
† Servlet – Container
„ Struts läuft in jedem Servlet-Container,
der die JavaServlet-Spezifikation erfüllt.
Z.B.:
„ zwingend notwendig:
† Struts–Bibliotheken
† Servlet – Container
† IBM Websphere
† iPlanet
† Allaire JRun
„ sinnvoll:
† Entwicklungsumgebung mit Plug-In
† Application Server
† DBMS
Dipl.-Inf. (FH) Albina Thyen
39
„ Im Beispiel wird der Tomcat Server
verwendet
† ist ebenfalls unter der Apache License
erhältlich unter
http://jakarta.apache.org/tomcat
38
Dipl.-Inf. (FH) Albina Thyen
40
Projektentwicklung von Struts
Struts-Framework & MVC-Pattern
† Unterstützung durch IDEs
„ Eine Reihe von IDEs bieten eine
Unterstützung des Entwicklungsprozesses
mit Struts an
„ Insbesondere für Eclipse existiert eine
Reihe verschiedener Plug-Ins
http://www.myeclipseide.com
Dipl.-Inf. (FH) Albina Thyen
41
Literaturhinweise
†
†
†
†
†
†
†
†
Dieter Eickstädt,Thomas Reuhl:J2EE mit Struts &
Co.,2004,Markt+Technik
Joel Greenyer: Web-Applikationen mit Jakarta Struts
http://www.jgreen.de/work/struts-seminar
Web Anwendungen mit Struts
http://www.kiltz.de/?menue=MenueStruts&page=Struts
Was ist Struts? Entwicklung von Web Anwendungen
http://www.laliluna.de/what-is-struts_de.html
Neuerungen im Java-Framework Struts
http://www.heise.de/ix/artikel/2006/03/125/
http://struts.apache.org/ - Startseite von Struts
http://struts.apache.org/userGuide/ - Struts User Guide
http://www.husted.com/struts/tips/ - Struts-Tipps
Dipl.-Inf. (FH) Albina Thyen
42
Vielen Dank für Ihre
Aufmerksamkeit!
Dipl.-Inf. (FH) Albina Thyen
43
Herunterladen