Programowanie warstwy klienta w aplikacji JavaEE



Podobne dokumenty
Zaawansowane Aplikacje Internetowe

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

METODY PROGRAMOWANIA

Testy automatyczne. Korzystające z junit

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Wywoływanie metod zdalnych

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Ćwiczenie 1. Przygotowanie środowiska JAVA

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

Programowanie obiektowe

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Aplikacje RMI

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Google Web Toolkit Michał Węgorek ZPO 2009

Projektowanie aplikacji internetowych laboratorium

Przegląd narzędzi do automatycznego testowania aplikacji internetowych. Jan Płoszczyca SKISR 2006

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

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

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

Metody Metody, parametry, zwracanie wartości

Programowanie obiektowe zastosowanie języka Java SE

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Wywoływanie metod zdalnych

1. Po uruchomieniu przeglądarki Mozilla FireFox, należy uruchomić stronę

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

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Aplikacje RMI Lab4

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Laboratorium Programowania Kart Elektronicznych

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

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Programowanie i projektowanie obiektowe

Funkcje i instrukcje języka JavaScript

Automatyzacja Testowania w WEB 2.0

Remote Method Invocation 17 listopada 2010

PHP: bloki kodu, tablice, obiekty i formularze

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Podejście obiektowe do budowy systemów rozproszonych

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Programowanie poprzez testy z wykorzystaniem JUnit

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Podstawy programowania III WYKŁAD 6

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

1 Wprowadzenie do J2EE

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1,

Tomasz Dobek.

Wykład 12. Programowanie serwera MS SQL 2005 w C#

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Języki i metody programowania Java INF302W Wykład 3 (część 1)

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

Visual C# dla zupełnie początkujących / Tony Gaddis. Wydanie IV. Gliwice, copyright Spis treści. Wstęp 11. Uwaga, czytelnicy 19

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Wybrane działy Informatyki Stosowanej

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Wstęp. Ale po co? Implementacja

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

REFERAT PRACY DYPLOMOWEJ

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Testowanie aplikacji Java Servlets

Dostosowywanie wyglądu aplikacji czytelnika w oparciu o oprogramowanie dlibra 5.0

Programowanie, algorytmy i struktury danych

Zaawansowane aplikacje internetowe laboratorium

Zaawansowane aplikacje WWW - laboratorium

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Automatyczne testowanie aplikacji Android

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

JUNIT. Terminologia. Organizacja testów

OpenLaszlo. OpenLaszlo

Aplikacje WWW - laboratorium

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Zaawansowane aplikacje internetowe

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Transkrypt:

Programowanie warstwy klienta w aplikacji JavaEE Katedra Mikroelektroniki i Technik Informatycznych Politechniki Łódzkiej ul. Wólczanska 221/223 budynek B18, 90-924 Łódź mgr inż. Robert Ritter

7. Szablony i testowanie Apache Tiles, Freemarker, Velocity JUnit Selenium

Apache Tiles 3 mgr inż. Robert Ritter, ritter@dmcs.pl Jest to szkielet aplikacyjny do tworzenia i zarządzania szablonami stron Służy do ułatwienia generowania interfejsów użytkownika w aplikacjach webowych Pozwala zdefiniować fragmenty stron, które zostaną połączone w całość podczas wykonywania kodu Można używać do dołączania fragmentów stron by zminimalizować duplikowanie kodu Można utworzyć z wykorzystaniem dziedziczenia skomplikowane szablony do wielokrotnego użytku

Apache Tiles (2) 4 mgr inż. Robert Ritter, ritter@dmcs.pl Konfiguracja w Spring <bean id="tilesconfigurer" class="org.springframework.web.servlet.view.tiles2.tilesconfigurer"> <property name="definitions"> <list> <value>/web-inf/defs/general.xml</value> <value>/web-inf/defs/widgets.xml</value> <value>/web-inf/defs/administrator.xml</value> <value>/web-inf/defs/customer.xml</value> <value>/web-inf/defs/templates.xml</value> </list> </property> </bean> <bean id="viewresolver" class="org.springframework.web.servlet.view.urlbasedviewresolver"> <property name="viewclass" value="org.springframework.web.servlet.view.tiles2.tilesview"/> </bean>

Apache Tiles (3) 5 mgr inż. Robert Ritter, ritter@dmcs.pl Konfiguracja szablonu <tiles-definitions> <definition name="default" template="/web-inf/layouts/default.jspx"> <put-attribute name="header" value="/web-inf/views/header.jspx" /> <put-attribute name="menu" value="/web-inf/views/menu.jspx" /> <put-attribute name="footer" value="/web-inf/views/footer.jspx" /> </definition> <definition extends="default" name="newdefault"> <put-attribute name="body" value="/web-inf/views/axiometr/login.jspx"/> </definition> </tiles-definitions>

Apache Velocity 6 mgr inż. Robert Ritter, ritter@dmcs.pl Silnik szablonowania oparty o język Java Mierzy w czyste rozdzielenie warstwy prezentacji i biznesowej w aplikacjach webowych Typowe obszary zastosowań to: o aplikacje webowe strony HTML z miejscami na dynamiczne dane o generowanie kodu źródłowego można generować kod źródłowy Java, SQL, PostScript o wysyłanie wiadomości email do szablonu wiadomości dodawane są dane wygenerowane przez klasy biznesowe o transformacje plików XML zadanie Ant (Anakia), które pozwala odczytać plik XML i udostępnia go w szablonie Velocity

Apache Velocity (2) 7 mgr inż. Robert Ritter, ritter@dmcs.pl Konfiguracja w Spring <bean id="velocityconfig" class="org.springframework.web.servlet.view.velocity.velocityconfigurer"> <property name="resourceloaderpath" value="/web-inf/velocity/"/> </bean> <bean id="viewresolver" class="org.springframework.web.servlet.view.velocity.velocityviewresolver"> <property name="cache" value="true"/> <property name="prefix" value=""/> <property name="suffix" value=".vm"/> </bean>

Apache Velocity (3) 8 mgr inż. Robert Ritter, ritter@dmcs.pl ustawienie zmiennej #set( $a = "Velocity" ) komentarze ## oraz #* *# pobieranie danych z modelu $foo $foo.property $foo.getproperty() $page.settitle( "My Home Page" ) obsługa tablic $myarray.isempty() $myarray.size() $myarray.get(2) $myarray.set(1, 'test') indeksowanie $foo[0] $foo[$i] $foo["bar"] formalna notacja Jack is a ${vicemaniac. cicha referencja $!email dyrektywy #set #if pętle wyrażenia warunkowe

Apache Freemarker 9 mgr inż. Robert Ritter, ritter@dmcs.pl Podobne do Velocity o jest bardziej skomplikowanym narzędziem o bardziej złożonym języku szablonów o posiada szereg gotowych rozwiązań, które w Velocity osiągnąć można poprzez różne obejścia o jeśli używany do tych samych celów, które Velocity obsługuje bez zmian, jest tak samo łatwy w obsłudze Dodatkowo umożliwia: o obsługę pętli, internacjonalizację, obliczenia na liczbach i datach o obsługę makr, sprawdzanie błędów składni o manipulację stringami, mapami oraz listami niezależnie od Javy

Apache Freemarker (2) 10 mgr inż. Robert Ritter, ritter@dmcs.pl Konfiguracja w Spring <bean id="freemarkerconfig" class="org.springframework.web.servlet.view.freemarker.freemarkerconfigurer"> <property name="templateloaderpath" value="/web-inf/freemarker/"/> </bean> <bean id="viewresolver" class="org.springframework.web.servlet.view.freemarker.freemarkerviewresolver"> <property name="cache" value="true"/> <property name="prefix" value=""/> <property name="suffix" value=".ftl"/> </bean>

Bindowanie formularzy 11 mgr inż. Robert Ritter, ritter@dmcs.pl macro VTL definition FTL definition message #springmessage($code) <@spring.message code/> messagetext #springmessagetext($code $text) <@spring.messagetext code, text/> url #springurl($relativeurl) <@spring.url relativeurl/> forminput #springforminput($path $attributes) <@spring.forminput path, attributes, fieldtype/> formhiddeninput * #springformhiddeninput($path $attributes) <@spring.formhiddeninput path, attributes/> formpasswordinput * #springformpasswordinput($path $attributes) <@spring.formpasswordinput path, attributes/> formtextarea #springformtextarea($path $attributes) <@spring.formtextarea path, attributes/> formsingleselect formmultiselect formradiobuttons #springformsingleselect( $path $options $attributes) #springformmultiselect($path $options $attributes) #springformradiobuttons($path $options $separator $attributes) <@spring.formsingleselect path, options, attributes/> <@spring.formmultiselect path, options, attributes/> <@spring.formradiobuttons path, options separator, attributes/> formcheckboxes #springformcheckboxes($path $options $separator $attributes) <@spring.formcheckboxes path, options, separator, attributes/> formcheckbox #springformcheckbox($path $attributes) <@spring.formcheckbox path, attributes/> showerrors #springshowerrors($separator $classorstyle) <@spring.showerrors separator, classorstyle/>

JUnit 12 mgr inż. Robert Ritter, ritter@dmcs.pl Szkielet aplikacyjny do testowania oprogramowania za pomocą unit test testów jednostkowych Umożliwia oddzielenie testu od kodu i przetestowanie wybranego fragmentu aplikacji Umożliwia wygenerowanie raportów z przebiegu testu Jest wspierany przez wiele środowisk programistycznych Funkcjonalność zawarta jest w pliku JAR dołączanym do projektu Aby przetestować funkcjonalność bez wpływu zależności danej funkcjonalności należy stosować mock-objects o jednym ze szkieletów aplikacyjnych służącym do tworzenia obiektów zastępczych jest Mockito o w aplikacjach webowych można korzystać z JSMock

JUnit (2) 13 mgr inż. Robert Ritter, ritter@dmcs.pl Przykładowy test import org.junit.*; public class TestFoobar{ @BeforeClass public static void setupclass() throws Exception { // Code executed before the first test method @Before public void setup() throws Exception { // Code executed before each test @Test public void testonething() { // Code that tests one thing @Test public void testanotherthing() { // Code that tests another thing @Test public void testsomethingelse() { // Code that tests something else @After public void teardown() throws Exception { // Code executed after each test @AfterClass public static void teardownclass() throws Exception { // Code executed after the last test method

Selenium 14 mgr inż. Robert Ritter, ritter@dmcs.pl Szkielet aplikacyjny do testowania aplikacji webowych Testy można napisać w języku Selenium, w wielu popularnych językach (C#, Java, Perl) lub nagrać kolejność działań i później odtworzyć Posiada swoje środowisko programistyczne zaimplementowane jako plugin do Firefoxa Selenium WebDriver służy do wysyłania poleceń do przeglądarki. Korzysta w tym celu z lokalnie zainstalowanej przeglądarki Można ustawić serwer z instancjami przeglądarek za pomocą Selenium Grid

Selenium (2) 15 mgr inż. Robert Ritter, ritter@dmcs.pl Przykład testu public class Example { public static void main(string[] args) { // Create a new instance of the html unit driver // Notice that the remainder of the code relies on the interface, // not the implementation. WebDriver driver = new HtmlUnitDriver(); // And now use this to visit Google driver.get("http://www.google.com"); // Find the text input element by its name WebElement element = driver.findelement(by.name("q")); // Enter something to search for element.sendkeys("cheese!"); // Now submit the form. WebDriver will find the form for us from the element element.submit(); // Check the title of the page System.out.println("Page title is: " + driver.gettitle());

Selenium (3) 16 mgr inż. Robert Ritter, ritter@dmcs.pl Przykład testu z użyciem JavaScript public class GoogleSuggest { public static void main(string[] args) throws Exception { // The Firefox driver supports javascript WebDriver driver = new FirefoxDriver(); // Go to the Google Suggest home page driver.get("http://www.google.com/webhp?complete=1&hl=en"); // Enter the query string "Cheese" WebElement query = driver.findelement(by.name("q")); query.sendkeys("cheese"); // Sleep until the div we want is visible or 5 seconds is over long end = System.currentTimeMillis() + 5000; while (System.currentTimeMillis() < end) { WebElement resultsdiv = driver.findelement(by.classname("gssb_e")); // If results have been returned, the results are displayed in a drop down. if (resultsdiv.isdisplayed()) { break; // And now list the suggestions List<WebElement> allsuggestions = driver.findelements(by.xpath("//td[@class='gssb_a gbqfsf']")); for (WebElement suggestion : allsuggestions) { System.out.println(suggestion.getText());

QUnit 17 mgr inż. Robert Ritter, ritter@dmcs.pl Szkielet aplikacyjny do testowania kodu JavaScript zdolny do testowania dowolnych skryptów test( "hello test", function() { ok( 1 == "1", "Passed!" ); );