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 05/11/14 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 05/11/14 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 05/11/14 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 05/11/14 Einleitung MVC-Architektur Quelle: http://www.journaldev.com/2134/struts-2-tutorial-for-beginners-hello-world-struts-application 6 05/11/14 Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 7 05/11/14 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 05/11/14 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 05/11/14 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 05/11/14 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 RequestParametern und Klassenvariablen 11 05/11/14 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 05/11/14 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 05/11/14 Grundlegendes mit Struts Finale Resultat 14 05/11/14 Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 15 05/11/14 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 05/11/14 Apache Tiles (mit Struts) Composite View Pattern in Tiles HEADER MENU CONTENT PAGE 2 1 FOOTER 17 05/11/14 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 05/11/14 Apache Tiles (mit Struts) tiles.xml - Beispiel 19 05/11/14 Apache Tiles (mit Struts) baseLayout.jsp 20 05/11/14 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 05/11/14 Apache Tiles (mit Struts) struts.xml - Beispiel mit Tiles localhost:8080/TestProject/page1.action 22 05/11/14 Apache Tiles (mit Struts) Action-Klasse MenuAction 23 05/11/14 Ende des Vortrags Offene Fragen? 24 05/11/14 Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 25 05/11/14 Inhalte des Vortrags 1. Einleitung 2. Grundlegendes mit Struts 3. Apache Tiles (mit Struts) 4. Praktikum 5. Diskussion 26 05/11/14 Diskussion 27 05/11/14 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 05/11/14 Vielen Dank für Ihre Aufmerksamkeit! 29 05/11/14