Vortrag Thema: Apache Struts + Tiles Mohamed Haji Julian Cordes Robin Röttger Web 2.0 WS 2014/2015 1
Inhalte 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 2
Einleitung Was ist Struts?» Struts ist ein Framework für Java-Webanwendungen!» Es setzt das MVC 2-Muster um!» Wurde im Jahr 2000 gegründet!» Entwicklung der Version 1.x wurde eingestellt und wird nicht mehr länger unterstützt! 3
Einleitung Wofür wird Struts verwenden? Folgende Probleme werden von Struts adressiert:!» Aufrufen der richtigen Klasse abhängig von der URL» mehrsprachige Webseiten» die Überprüfung von Formulareingaben» die Konvertierung von Formularfeldern in Datentypen» die Anzeige von Fehlermeldungen bei Fehleingaben! 4
Einleitung MVC-Architektur angewandt in Struts» Model beinhaltet die Geschäftslogik ist kein Bestandteil von Struts» View übernehmen JavaServer Pages. bestehen aus HTML-Tags und eigenen Struts-Tags» Controller Anfragen werden zu Action-Klassen weitergeleitet Weiterleitungen werden in XML Datei definiert 5
Einleitung MVC-Architektur Quelle: http://www.journaldev.com/2134/struts-2-tutorial-for-beginners-hello-world-struts-application 6
Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 7
Grundlegendes mit Struts Resultpages» Können aus diversen Template-Engines bestehen - statisches HTML oder JSPs - Freemarker - Velocity» Sie enthalten die View der Anwendung» Können Struts-Tags enthalten» Struts-Tags sind JSP-Custom-Tags 8
Grundlegendes mit Struts Beispiel für eine Resultpage <%@$page$language="java"$contenttype="text/html;-charset=us4ascii"$ $$$$pageencoding="us4ascii"%>$ <!DOCTYPE$html$PUBLIC$"C//W3C//DTD$HTML$4.01$Transitional//EN"$ "http://www.w3.org/tr/html4/loose.dtd">$ <%CC$Using$Struts2$Tags$in$JSP$CC%>$ <%@$taglib$uri="/struts4tags"$prefix="s"%>$ <html>$ <head>$ <meta$httpcequiv="content4type"$content="text/html;-charset=us4ascii">$ <title>login$page</title>$ </head>$ <body>$ <h3>welcome$user,$please$login$below</h3>$ <s:form$action="login">$ $$$$<s:textfield$name="name"$label="user-name"></s:textfield>$ $$$$<s:textfield$name="pwd"$label="password"$type="password"></s:textfield>$ $$$$<s:submit$value="login"></s:submit>$ </s:form>$ </body>$ </html>! 9
Grundlegendes mit Struts Beispiel für eine Resultpage <%@$page$language="java"$contenttype="text/html;-charset=us4ascii"$ $$$$pageencoding="us4ascii"%>$ <%@$taglib$uri="/struts4tags"$prefix="s"%>$ <!DOCTYPE$html$PUBLIC$"G//W3C//DTD$HTML$4.01$Transitional//EN"$ "http://www.w3.org/tr/html4/loose.dtd">$ <html>$ <head>$ <meta$httpgequiv="content4type"$content="text/html;-charset=us4ascii">$ <title>welcome$page</title>$ </head>$ <body>$ <h3>welcome$<s:property$value="name"></s:property></h3>$ </body>$ </html>! 10
Grundlegendes mit Struts Action-Klassen» Action-Klassen sind der Controller der Architektur» Verarbeiten Requests in der Execute Methode» Können sowohl über die struts.xml als auch über Java Annotations (@action) deklariert» Können Java Bean mit Getter und Setter enthalten -> Struts übernimmt dabei das Mapping zwischen Request- Parametern und Klassenvariablen 11
Grundlegendes mit Struts LoginAction Klasse public!class!loginaction!implements!action!{!!!!!!!private!string!name;!!!!!private!string!pwd;!!!!!!!!!!public!string!execute()!throws!exception!{!!!!!!!!!!!!!!!if("admin".equals(getname())!&&!"admin".equals(getpwd()))!{!!!!!!!!!! return!success;!!!!!!!!!}!else!{!!!!!!!!!! return!"error";!!!!!!!!!}!!!!!}!!!!!!//java!bean!to!hold!the!form!parameters!!!!!public!string!getname()!{!!!!!!!!!return!name;!!!!!}!!!!!public!void!setname(string!name)!{!!!!!!!!!this.name!=!name;!!!!!}!!!!!!!!!!!! }! 12
Grundlegendes mit Struts struts.xml <?xml&version="1.0"&encoding="utf(8"?>& && <!DOCTYPE&struts&PUBLIC& &&&&"B//Apache&Software&Foundation//DTD&Struts&Configuration&2.3//EN"& &&&&"http://struts.apache.org/dtds/strutsb2.3.dtd">& <struts>& && <package&name="user"&namespace="/user"&extends="struts(default">& &&&&<action&name="home">& &&&&&&&&<result>/login.jsp</result>& &&&&</action>& &&&&<action&name="login"&class="com.journaldev.struts2.action.loginaction">& &&&&<result&name="success">/welcome.jsp</result>& &&&&<result&name="error">/error.jsp</result>& &&&&</action>& && </package>& && </struts>! 13
Grundlegendes mit Struts Finale Resultat 14
Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 15
Apache Tiles (mit Struts) Grundlegendes zu Tiles» Template-Framework für J2EE» Basiert auf dem Composite Pattern!» Vereinfacht die Entwicklung von User-Interfaces» Wird oft in Kombination mit anderen Frameworks wie Struts oder Spring verwendet 16
Apache Tiles (mit Struts) Composite View Pattern in Tiles HEADER MENU CONTENT PAGE 12 FOOTER 17
Apache Tiles (mit Struts) tiles.xml» Definition eines Grundlayouts» Üblich: Header, Menü, Body und Footer» Statische Elemente als einzelne JSP!» Die spezifischen Content-Seiten werden von dem Grundlayout extended» Spezifische Bereiche definiert mit eigener JSP 18
Apache Tiles (mit Struts) tiles.xml - Beispiel 19
Apache Tiles (mit Struts) baselayout.jsp 20
Apache Tiles (mit Struts) Mapping der URLs durch Struts» Mapping URLs Content Pages Ablauf per Struts-Action-Klassen einfache und komplexe Steuerungen möglich!» Mapping der URLs zu Action-Klassen in struts.xml» Einfache oder komplexe Anwendungsfälle abgedeckt 21
Apache Tiles (mit Struts) struts.xml - Beispiel mit Tiles localhost:8080/testproject/page1.action 22
Apache Tiles (mit Struts) Action-Klasse MenuAction 23
Ende des Vortrags Offene Fragen? 24
Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 25
Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 26
Diskussion 27
Ende des Vortrags Literatur» http://www.mkyong.com/struts/struts-tilesframework-example/» http://www.tutorialspoint.com/struts_2/ struts_tiles.htm» http://tiles.apache.org/2.2/framework/tutorial/ index.html» Struts 2 in action (Brown, Stanlick, Davis) [2008] 28
Vielen Dank für Ihre Aufmerksamkeit! 29