Co to jest Struts2 JAVA i aplikacje webowe Architektura...

39
Co to jest Struts2 JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura Struts2 Cykl życia żądania w Struts2 Akcje Interceptory Podsumowanie STRUTS 2 Krystyna Bury Katarzyna Sadowska Joanna Pyc Politechnika Wroclawska Wydzial Informatyki i Zarządzania Informatyka, III rok Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Transcript of Co to jest Struts2 JAVA i aplikacje webowe Architektura...

Page 1: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

STRUTS 2

Krystyna Bury Katarzyna Sadowska Joanna PycPolitechnika Wrocławska

Wydział Informatyki i ZarządzaniaInformatyka, III rok

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 2: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Spis treści1 Co to jest Struts22 JAVA i aplikacje webowe

SERWLETJSPInne Frameworki

3 Architektura MVC i MVC2Architektura MVC (Model - View - Controller)Architektura MVC2

4 Architektura Struts25 Cykl życia żądania w Struts26 Akcje7 Interceptory8 Podsumowanie

PodsumowanieDlaczego Struts2?NiezbędnikPomocne linkiKrystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 3: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Co to jest Struts2

Struts 2 to elastyczny i łatwo rozszerzalny framework do tworzeniaaplikacji webowych w Javie.

cel - uczynić rozwijanie aplikacji webowej łatwiejszym dladewelopera.

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 4: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

SERWLETJSPInne Frameworki

SERWLET

SERWLET

Pierwszy oparty na Javie sposób tworzenia aplikacji webowych,program wykonywany na serwerze

URL jest mapowany na klasy, których metody będąwywoływane

HTML w Javie na większą skalę jest koszmarem wutrzymywaniu

przy każdej zmianie w aplikacji konieczna rekompilacja itd.

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 5: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

SERWLETJSPInne Frameworki

JSP

JSP

Technologia polegająca na umieszczaniu kodu Javy wewnątrz koduHTML

każdy JSP zapewnia zarówno logikę dla przetwarzaniazapytania jak i sposób wyświetlania

kod Javy nieuporządkowany w klasy i metody sprzyjacopypaste

dlatego do specyfikacji JSP dodano tagi

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 6: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

SERWLETJSPInne Frameworki

Inne Frameworki

Action-Based Frameworks

Kombinacja pomysłów serwletów i JSP

oddzielenie logiki przetwarzania od logiki prezentacji

MVC, w którym serwlet jest kontrolerem, modelem są akcje, a zawidok odpowiadają strony JSP

Component-Based Frameworks

Aplikacja webowa nie jest logicznie dzielona na strony, tylko nakomponenty (widgety)

każdemu widgetowi odpowiada jego własna logika przetwarzania

re-use komponentów

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 7: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

SERWLETJSPInne Frameworki

Inne Frameworki

Action-Based Frameworks

Kombinacja pomysłów serwletów i JSP

oddzielenie logiki przetwarzania od logiki prezentacji

MVC, w którym serwlet jest kontrolerem, modelem są akcje, a zawidok odpowiadają strony JSP

Component-Based Frameworks

Aplikacja webowa nie jest logicznie dzielona na strony, tylko nakomponenty (widgety)

każdemu widgetowi odpowiada jego własna logika przetwarzania

re-use komponentów

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 8: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura MVC (Model - View - Controller)Architektura MVC2

Architektura MVC

Model - logika biznesowa, baza danychWidok - wygląd stronyKontroler - kod nawigacyjny

Rysunek: Architektura MVCKrystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 9: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura MVC (Model - View - Controller)Architektura MVC2

Architektura MVC2

standardowe MVC niejest najlepszymrozwiązaniem dlaaplikacji webowych

Struts 2 (jak i wieleinnych frameworków)używa jegomodyfikacji MVC2

Rysunek: Architektura MVC2

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 10: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura MVC (Model - View - Controller)Architektura MVC2

Architektura MVC2

standardowe MVC niejest najlepszymrozwiązaniem dlaaplikacji webowych

Struts 2 (jak i wieleinnych frameworków)używa jegomodyfikacji MVC2

Rysunek: Architektura MVC2

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 11: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura Struts2

KontrolerStruts2 dispatchsevlet filterinterceptory

Modelakcje

Widoktypy wynikowewyniki / viewtechnologies

Rysunek: Architektura Struts2

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 12: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura Struts2

KontrolerStruts2 dispatchsevlet filterinterceptory

Modelakcje

Widoktypy wynikowewyniki / viewtechnologies

Rysunek: Architektura Struts2

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 13: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura Struts2

KontrolerStruts2 dispatchsevlet filterinterceptory

Modelakcje

Widoktypy wynikowewyniki / viewtechnologies Rysunek: Architektura Struts2

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 14: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura Struts2 cd.

Struts2 jest bardzo elastyczny i rozszerzalny i dla danejaplikacji webowej właściwie wszystko jest konfigurowalne.

Framework Struts2 dostarcza warstwę kontrolera.Deweloperzy mogą użyć tej warstwy łącząc ją z innymistandardowymi technologiami do obsługi:

logiki biznesowej np. POJOs, XWorkdostępu do danych np. DAOs, Cayenne, EJB, Hibernatewarstwy prezentacji np. JSP, Velocity, Freemarker

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 15: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura Struts2 cd.

Struts2 jest bardzo elastyczny i rozszerzalny i dla danejaplikacji webowej właściwie wszystko jest konfigurowalne.

Framework Struts2 dostarcza warstwę kontrolera.

Deweloperzy mogą użyć tej warstwy łącząc ją z innymistandardowymi technologiami do obsługi:

logiki biznesowej np. POJOs, XWorkdostępu do danych np. DAOs, Cayenne, EJB, Hibernatewarstwy prezentacji np. JSP, Velocity, Freemarker

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 16: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Architektura Struts2 cd.

Struts2 jest bardzo elastyczny i rozszerzalny i dla danejaplikacji webowej właściwie wszystko jest konfigurowalne.

Framework Struts2 dostarcza warstwę kontrolera.Deweloperzy mogą użyć tej warstwy łącząc ją z innymistandardowymi technologiami do obsługi:

logiki biznesowej np. POJOs, XWorkdostępu do danych np. DAOs, Cayenne, EJB, Hibernatewarstwy prezentacji np. JSP, Velocity, Freemarker

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 17: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Cykl życia żądania w Struts2

Każde żądanie od użytkownika przechodzi najpierw przezDispatcher Filter, który odpowiednio mapuje URL na akcję,która jest obiektem javowym

Interceptory wykonują pre-processing związany z daną akcjąAkcja zostaje wykonanaInterceptory wykonują post-processing

W zależności odwyniku akcji zostajewygenerowanyodpowiedni widok(domyślnie: JSP)

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 18: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Cykl życia żądania w Struts2

Każde żądanie od użytkownika przechodzi najpierw przezDispatcher Filter, który odpowiednio mapuje URL na akcję,która jest obiektem javowymInterceptory wykonują pre-processing związany z daną akcją

Akcja zostaje wykonanaInterceptory wykonują post-processing

W zależności odwyniku akcji zostajewygenerowanyodpowiedni widok(domyślnie: JSP)

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 19: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Cykl życia żądania w Struts2

Każde żądanie od użytkownika przechodzi najpierw przezDispatcher Filter, który odpowiednio mapuje URL na akcję,która jest obiektem javowymInterceptory wykonują pre-processing związany z daną akcjąAkcja zostaje wykonana

Interceptory wykonują post-processing

W zależności odwyniku akcji zostajewygenerowanyodpowiedni widok(domyślnie: JSP)

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 20: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Cykl życia żądania w Struts2

Każde żądanie od użytkownika przechodzi najpierw przezDispatcher Filter, który odpowiednio mapuje URL na akcję,która jest obiektem javowymInterceptory wykonują pre-processing związany z daną akcjąAkcja zostaje wykonanaInterceptory wykonują post-processing

W zależności odwyniku akcji zostajewygenerowanyodpowiedni widok(domyślnie: JSP)

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 21: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Cykl życia żądania w Struts2

Każde żądanie od użytkownika przechodzi najpierw przezDispatcher Filter, który odpowiednio mapuje URL na akcję,która jest obiektem javowymInterceptory wykonują pre-processing związany z daną akcjąAkcja zostaje wykonanaInterceptory wykonują post-processing

W zależności odwyniku akcji zostajewygenerowanyodpowiedni widok(domyślnie: JSP)

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 22: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Cykl życia w Struts2 cd.

Kluczowe we frameworku Struts2 są:

akcje

interceptory

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 23: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje

akcje to podstawowy element we frameworkach typuaction-based

elementem obowiązkowym akcji jest name

konfiguracje akcji dodajemy do pliku konfiguracyjnegostruts.xml<action name=”Hello”>

<result>hello.jsp</result></action>

domyślnie wywołana zostanie metoda execute() z klasyActionSupport

domyślny wynik rezultatu: ”success” typu Request

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 24: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje cd.

można napisać własną klasę z metodą ,tórą chcemy wywołać

metoda musi zwracać String zdefiniowany w rezultacie<action name=”Hello” class=”package.HelloAction”method=”doHello”>

<result name=”sayHello”>/sayHello.jsp</result></action>

klasa akcji nie musi implementować interfejsu Action()class HelloAction {

public String doHello() {return ”sayHello”;

}}

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 25: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje cd.

Dobrą praktyką jest zwracanie sterowania do kontrolera.<action name=”sendHelloMail” class=”package.HelloAction”method=”sendHelloMail”>

<result name=”sandHelloMail” type=”redirect-action”>sayHello</result>

</action>

<action name=”Hello” class=”package.HelloAction”method=”doHello”>

<result name=”sayHello”>/sayHello.jsp</result></action>

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 26: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje cd.

class HelloAction {public String sendHelloMail() {

sendMailTo([email protected], ”Hello!”);return ”Hello”;

}public String doHello() {

return ”sayHello”;}

}

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 27: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje cd.

Stosowanie parametrów w konfiguracji:<action name=”gatherReportInfo” class=”. . . ”>

<result name=”showReportResult” type=”redirect-action”><param name=”actionName”>generateReport</param><param name=”namespace”>/genReport</param><param name=”reportType”>pie</param><param name=”width”>100</param><param name=”height”>100</param>

</result></action>

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 28: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje cd.

<action name=”defineAction” class=”. . . ”><result name=”next” type=”redirect-action”>

${actionName}</result></action>

class HelloAction implements Action {private String actionName;public String execute() {

actionName=”nextAction”;return ”next”;

}public String getActionName() {

return actionName;}

}

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 29: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Akcje cd.

jeśli akcja chce dostać się do danych, musi dostarczać getteryi/lub settery do danego pola

np. jeśli JSP robi wywołanie:”/home.action?framework=struts&version=2”akcja powinna dostarczać settery”setFramework(String frameworkName)”oraz ”setVersion(int version)”

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 30: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Interceptory

element opcjonalny w konfiguracji

koncepcyjne interceptory odpowiadają używanym wserwletach filtrom

pozwalają na wstępne oraz wyjściowe przetwarzanie akcji

podobnie jak filtry – mogą tworzyć uszeregowane warstwy

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 31: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Interceptory cd.

Struts2 opiera większość swojej funkcjonalności na interceptorach, więcczęsto do jednej akcji przypisanych jest po ok.8-10 interceptorówDlatego wygodnie jest tworzyć stosy interceptorów<interceptor-stack name=”basicStack”>

<interceptor-ref name=”exception”/><interceptor-ref name=”servlet-config”/><interceptor-ref name=”prepare”/><interceptor-ref name=”checkbox”/><interceptor-ref name=”params”/><interceptor-ref name=”conversionError”/>

</interceptor-stack>

<action name=”my” class=”com.fdar.infoq.MyAction”>result>view.jsp</result><interceptor-ref name=”basicStack”/>

</action>

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 32: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Interceptory - przykład

public class DocumentMapperInterceptor impelements Interceptor{DocumentService documentService;public void destroy(){}public void init(){}@SuppressWarnings(”unchecked”)public String intercept(ActionInvocation invocation) throws Exception {

if(invocation.getAction() instanceof DocumentAwareAction){Document doc =

documentService.mapFromRequest(ServletActionContext.getRequest());if(doc != null) {

((DocumentAwareAction)invocation.getAction()).setDocument(doc);}}return invocation.invoke();}}

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 33: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Interceptory - przykład cd.

Interfejs do oznaczenia akcji:

public interface DocumentAwareAction {public void setDocument(Document document);

}

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 34: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

Interceptory - konfiguracja

Wpis konfiguracyjny w struts.xml:<interceptors>

<interceptor name=”autowiring”class=”package.struts2.interceptors.DocumentMapperInterceptor”/>

</interceptors>

Interceptory dodajemy do akcji:<action name=”index”class=”package.struts2.actions.IndexAction”>

<interceptor-ref name=”docAware”/><result>/index.jsp</result>

</action>

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 35: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

PodsumowanieDlaczego Struts2?NiezbędnikPomocne linki

Podsumowanie

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 36: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

PodsumowanieDlaczego Struts2?NiezbędnikPomocne linki

Dlaczego Struts2?

uproszczony projekt frameworku - uniezależnienie akcji odframeworku; komponenty frameworku są luźno powiązane

uproszczone akcje - POJOs, dependency injection

ułatwione testowanie - akcje są niezależne od HTTP i odframeworku + depency injection

nie używa ActionForms

inteligentne defaulty - większość elementów konfiguracji mawartości domyślne

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 37: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

PodsumowanieDlaczego Struts2?NiezbędnikPomocne linki

Dlaczego Struts2? cd.

dostarcza biblioteki tagów i pozwala na wykorzystywanieinnych bibliotek (np. JSP, FreeMarker) - mniej kodu

QuickStart - wiele zmian może być przeprowadzonych w locie,bez konieczności restartu kontenera webowego

łatwa integracja ze Springiem

łatwa rozszerzalność poprzez dodawanie wtyczek - wystarczydodać JARa

wsparcie dla AJAXa - framework dostarcza zestaw tagów,które uczynią aplikację bardziej interaktywną

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 38: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

PodsumowanieDlaczego Struts2?NiezbędnikPomocne linki

Niezbędnik

Eclipse IDE for Java EE Developers (lub Eclipse zzainstalowanym WTP

Java 5.0 lub nowsza

Apache Tomcat Server v6

Struts2 Framework

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2

Page 39: Co to jest Struts2 JAVA i aplikacje webowe Architektura ...sens.e-informatyka.pl/wp-content/uploads/TBE/Struts2-teooria.pdf · JAVA i aplikacje webowe Architektura MVC i MVC2 Architektura

Co to jest Struts2JAVA i aplikacje weboweArchitektura MVC i MVC2

Architektura Struts2Cykl życia żądania w Struts2

AkcjeInterceptory

Podsumowanie

PodsumowanieDlaczego Struts2?NiezbędnikPomocne linki

Pomocne linki

http://www.coreservlets.com/Apache-Tomcat-Tutorial/eclipse.html

http://www.struts2.net/tutorial.htm

http://www.roseindia.net/struts/struts2/struts-2-hello-world.shtml

http://www.struts2.org/free-struts2-book/developing-your-first-struts2-application/

http://wiki.apache.org/struts/PoweredBy

Krystyna Bury, Joanna Pyc, Katarzyna Sadowska Struts 2