co to jest struts2 java i aplikacje webowe architektura...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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