STRUTS 2. Krystyna Bury Katarzyna Sadowska Joanna Pyc Politechnika Wrocławska Wydział Informatyki i Zarządzania Informatyka, III rok

Podobne dokumenty
Zagadnienia Programowania Obiektowego Agata Hejmej

1 Wprowadzenie do J2EE

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Warszawa JUG. Struts 2 rusztowanie dla Łebu

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Komunikacja między serwletami

Przegląd d innych rozwiąza. zań szkieletowych dla J2EE

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Zaawansowane Aplikacje Internetowe

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

JAX-RS czyli REST w Javie. Adam Kędziora

OpenLaszlo. OpenLaszlo

Architektury Usług Internetowych. Laboratorium 1 Servlety

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Tomasz Dobek.

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Aplikacje Internetowe, Servlety, JSP i JDBC

Programowanie komponentowe 5

Google Web Toolkit Michał Węgorek ZPO 2009

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

prepared by: Programowanie WWW Servlety

Java Server Faces - wprowadzenie

Backend Administratora

Architektury Usług Internetowych. Laboratorium 1. Servlety

Serwery aplikacji. dr Radosław Matusik. radmat

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

JAVA NA SERWERZE SPRING. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Zaawansowane Techniki Bazodanowe

Szkolenie wycofane z oferty

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Programowanie obiektowe

Web frameworks do budowy aplikacji zgodnych z J2EE

Wzorce prezentacji internetowych

Spring Web MVC, Spring DI

Tworzenie aplikacji internetowych z wykorzystaniem szkieletu Spring. Paweł Ociepa, Paweł Pierzchała

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Tworzenie. z wykorzystaniem szkieletu Wicket. BłaŜej Bukowy, Wojciech Orzeszyna,

Serwlety Java: zagadnienia zaawansowane. Data Sources. Data Sources. Przykład pliku data-sources.xml

Podstawowe wykorzystanie Hibernate

Wzorce architektoniczne

Aplikacje RMI Lab4

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Tworzenie aplikacji J2EE w technologii Struts

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

Wywoływanie metod zdalnych

Projektowanie i architektura frameworka w języku PHP. Tomasz P.F. Kowalczyk

OSGi Agata Hejmej

Programowanie obiektowe zastosowanie języka Java SE

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Remote Method Invocation 17 listopada 2010

Aplikacje internetowe i rozproszone - laboratorium

prepared by: Programowanie WWW Model-View-Controller

SZKOLENIE TWORZENIE SYSTEMÓW

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Podejście obiektowe do budowy systemów rozproszonych

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Załącznik 2 utworzenie projektu

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Wybrane działy Informatyki Stosowanej

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Stripes & Stripernate. Zbigniew Skowron 13 kwietnia 2007

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Aplikacje RMI

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Aplikacja internetowa vs Strona Internetowa. Aplikacja internetowa, (ang.) web application zwana również aplikacją webową, to program komputerowy,

Wywoływanie metod zdalnych

Poznań Java User Group Java Server Faces. Wprowadzenie (Fakty i Mity)

Transkrypt:

STRUTS 2 Krystyna Bury Katarzyna Sadowska Joanna Pyc Politechnika Wrocławska Wydział Informatyki i Zarządzania Informatyka, III rok

Spis treści 1 2 SERWLET JSP Inne Frameworki 3 Architektura MVC (Model - View - Controller) Architektura MVC2 4 5 6 7 8 Dlaczego Struts2? Niezbędnik Pomocne linki

Struts 2 to elastyczny i łatwo rozszerzalny framework do tworzenia aplikacji webowych w Javie. cel - uczynić rozwijanie aplikacji webowej łatwiejszym dla dewelopera.

SERWLET SERWLET JSP Inne Frameworki 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 w utrzymywaniu przy każdej zmianie w aplikacji konieczna rekompilacja itd.

JSP SERWLET JSP Inne Frameworki JSP Technologia polegająca na umieszczaniu kodu Javy wewnątrz kodu HTML każdy JSP zapewnia zarówno logikę dla przetwarzania zapytania jak i sposób wyświetlania kod Javy nieuporządkowany w klasy i metody sprzyja copypaste dlatego do specyfikacji JSP dodano tagi

Inne Frameworki SERWLET JSP 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 za widok odpowiadają strony JSP

Inne Frameworki SERWLET JSP 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 za widok odpowiadają strony JSP Component-Based Frameworks Aplikacja webowa nie jest logicznie dzielona na strony, tylko na komponenty (widgety) każdemu widgetowi odpowiada jego własna logika przetwarzania re-use komponentów

Architektura MVC Architektura MVC (Model - View - Controller) Architektura MVC2 Model - logika biznesowa, baza danych Widok - wygląd strony Kontroler - kod nawigacyjny Rysunek: Architektura MVC

Architektura MVC2 Architektura MVC (Model - View - Controller) Architektura MVC2 standardowe MVC nie jest najlepszym rozwiązaniem dla aplikacji webowych Rysunek: Architektura MVC2

Architektura MVC2 Architektura MVC (Model - View - Controller) Architektura MVC2 standardowe MVC nie jest najlepszym rozwiązaniem dla aplikacji webowych Struts 2 (jak i wiele innych frameworków) używa jego modyfikacji MVC2 Rysunek: Architektura MVC2

Kontroler Struts2 dispatch sevlet filter interceptory Rysunek:

Kontroler Struts2 dispatch sevlet filter interceptory Model akcje Rysunek:

Kontroler Struts2 dispatch sevlet filter interceptory Model akcje Widok typy wynikowe wyniki / view technologies Rysunek:

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

cd. Struts2 jest bardzo elastyczny i rozszerzalny i dla danej aplikacji webowej właściwie wszystko jest konfigurowalne. Framework Struts2 dostarcza warstwę kontrolera.

cd. Struts2 jest bardzo elastyczny i rozszerzalny i dla danej aplikacji webowej właściwie wszystko jest konfigurowalne. Framework Struts2 dostarcza warstwę kontrolera. Deweloperzy mogą użyć tej warstwy łącząc ją z innymi standardowymi technologiami do obsługi: logiki biznesowej np. POJOs, XWork dostępu do danych np. DAOs, Cayenne, EJB, Hibernate warstwy prezentacji np. JSP, Velocity, Freemarker

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

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

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

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

Każde żądanie od użytkownika przechodzi najpierw przez Dispatcher Filter, który odpowiednio mapuje URL na akcję, która jest obiektem javowym wykonują pre-processing związany z daną akcją Akcja zostaje wykonana wykonują post-processing W zależności od wyniku akcji zostaje wygenerowany odpowiedni widok (domyślnie: JSP)

Cykl życia w Struts2 cd. Kluczowe we frameworku Struts2 są: akcje interceptory

akcje to podstawowy element we frameworkach typu action-based elementem obowiązkowym akcji jest name konfiguracje akcji dodajemy do pliku konfiguracyjnego struts.xml <action name= Hello > <result>hello.jsp</result> </action> domyślnie wywołana zostanie metoda execute() z klasy ActionSupport domyślny wynik rezultatu: success typu Request

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 ; } }

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>

cd. class HelloAction { public String sendhellomail() { sendmailto(user@post.com, Hello! ); return Hello ; } public String dohello() { return sayhello ; } }

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>

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; } }

cd. jeśli akcja chce dostać się do danych, musi dostarczać gettery i/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)

element opcjonalny w konfiguracji koncepcyjne interceptory odpowiadają używanym w serwletach filtrom pozwalają na wstępne oraz wyjściowe przetwarzanie akcji podobnie jak filtry mogą tworzyć uszeregowane warstwy

cd. Struts2 opiera większość swojej funkcjonalności na interceptorach, więc często do jednej akcji przypisanych jest po ok.8-10 interceptorów Dlatego 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>

- 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(); } }

- przykład cd. Interfejs do oznaczenia akcji: public interface DocumentAwareAction { public void setdocument(document document); }

- konfiguracja Wpis konfiguracyjny w struts.xml: <interceptors> <interceptor name= autowiring class= package.struts2.interceptors.documentmapperinterceptor /> </interceptors> dodajemy do akcji: <action name= index class= package.struts2.actions.indexaction > <interceptor-ref name= docaware /> <result>/index.jsp</result> </action>

Dlaczego Struts2? Niezbędnik Pomocne linki

Dlaczego Struts2? Dlaczego Struts2? Niezbędnik Pomocne linki uproszczony projekt frameworku - uniezależnienie akcji od frameworku; komponenty frameworku są luźno powiązane uproszczone akcje - POJOs, dependency injection ułatwione testowanie - akcje są niezależne od HTTP i od frameworku + depency injection nie używa ActionForms inteligentne defaulty - większość elementów konfiguracji ma wartości domyślne

Dlaczego Struts2? cd. Dlaczego Struts2? Niezbędnik Pomocne linki dostarcza biblioteki tagów i pozwala na wykorzystywanie innych 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 - wystarczy dodać JARa wsparcie dla AJAXa - framework dostarcza zestaw tagów, które uczynią aplikację bardziej interaktywną

Niezbędnik Dlaczego Struts2? Niezbędnik Pomocne linki Eclipse IDE for Java EE Developers (lub Eclipse z zainstalowanym WTP Java 5.0 lub nowsza Apache Tomcat Server v6 Struts2 Framework

Pomocne linki Dlaczego Struts2? Niezbędnik 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-helloworld.shtml http://www.struts2.org/free-struts2-book/developing-yourfirst-struts2-application/ http://wiki.apache.org/struts/poweredby