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

Podobne dokumenty
Podstawowe informacje o technologii Java Persistence API - przykład

Baza danych sql. 1. Wprowadzenie

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Zastosowanie komponentów EJB typu Session

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Aplikacje internetowe i rozproszone - laboratorium

Laboratorium 7 Blog: dodawanie i edycja wpisów

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

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

Aplikacje RMI Lab4

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.

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

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

Backend Administratora

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

Wprowadzenie do projektu QualitySpy

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Aplikacje RMI

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

Zaawansowane aplikacje internetowe

Wybrane działy Informatyki Stosowanej

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Aplikacje w środowisku Java

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

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

Programowanie komponentowe 5

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

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Złożone komponenty JSF wg

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

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

Architektury Usług Internetowych. Laboratorium 1. Servlety

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Fragmenty są wspierane od Androida 1.6

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

Comarch e-sklep Sync. wersja

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie w języku Java. Bazy danych SQLite w Javie

Zaawansowane aplikacje internetowe - laboratorium

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

akademia androida Składowanie danych część VI

Kontenery IoC dla Java Guice 3.0

Spring Web MVC, Spring DI

Enterprise JavaBeans

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Java EE: JSF + EJB + JPA

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

Architektury Usług Internetowych. Laboratorium 1 Servlety

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

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

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ć

Podstawowe informacje o technologii Java Persistence API - przykład

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

PHP 5 język obiektowy

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

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

Wywoływanie metod zdalnych

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie Obiektowe Ćwiczenie 4

Ćwiczenie dotyczące platformy Java EE zostało przygotowane z myślą o środowisku NetBeans w wersji 7.3 (do pobrania z

Programowanie obiektowe

Szczegółowy opis zlecenia Plugin do oprogramowania dlibra. Szczegółowy opis zlecenia dla Pluginu do oprogramowania dlibra.

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

Wywoływanie metod zdalnych

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Platformy Technologiczne

Wprowadzenie do Doctrine ORM

Programowanie obiektowe

Programowanie obiektowe

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

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

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

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

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Programowanie obiektowe

Podstawy technologii WWW

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

Tworzenie wersji demonstracyjnych enova365 na potrzeby prezentacji u Klienta

Forum Client - Spring in Swing

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Dokumentacja do API Javy.

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

Języki i metody programowania Java. Wykład 2 (część 2)

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Transkrypt:

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko stosowany w aplikacjach webowych. Spring Boot ma w sobie wiele dodatkowych modułów, które umożliwiają programowanie aplikacji webowych. Aby uruchomić aplikację webową, należy wystawić serwer z którym aplikacja będzie się komunikować. Spring Boot m.in. ma zintegrowany serwera aplikacji np. Tomcat, czyli nie ma potrzeby dodatkowej instalacji na serwerze jakiejkolwiek usługi aby aplikacja mogła produkcyjnie funkcjonować. http://projects.spring.io/spring-boot/ Czy jest Vaadin? Framework umożliwiający projektowanie aplikacji webowych opartych o technologie Javascript w języku Java. Aplikacja zrealizowana o ten framework opiera się o architekturę kilent-serwer możliwość programowania zarówno po stronie klienta jak i serwera. Zaletą jest łatwy deployment oraz szeroki zasób komponentów graficznych. https://vaadin.com/home

1. Szablon projektu wraz z zależnościami https://start.spring.io/ Typ projektu o Maven Potrzebne zależności o Web o Vaadin o JPA o Apache Derby o Wersja Spring Boot 1.3.5

2. Import projektu Import wygenerowanego projektu do środowiska IDE Eclipse 3. Uruchomienie aplikacji Aplikacja jest wystawiona na domyślnym porcie tomcat a - 8080

4. Klasa UI Dodajemy klasę MyUI @Theme(ValoTheme.THEME_NAME) @SpringUI public class MyUI extends UI { @Override protected void init(vaadinrequest request) { setcontent(new Label("Moja pierwsza aplikacja")); Adnotacja @SpringUI, którą można umieszczać nad klasą automatycznie jest wykrywana i konfigurowana przez Springa. Klasa dziedzicząca po klasie UI jest reprezentacją okna przeglądarki albo jej części. W metodzie init(vaadinrequest request), można ustawić zawartość okna przeglądarki, wypełniając content różnymi komponentami. Metoda init wywoływana jest przy każdorazowym odświeżeniem strony i jest wywoływana po zainicjalizowaniu komponentów graficznych. W powyższym przykładzie ustawiona została zawartość okna przeglądarki na komponent typu Label z przykładowym tekstem. Spis dostępnych elementów z przykładowym zastosowanie i wykorzystaniem https://vaadin.com/elements Adnotacja @Theme definiuje styl aplikacji. W powyższym przykładzie użyto stylu wbudowanego o nazwie Valo https://vaadin.com/valo Klasa MyUI i jej reprezentacja w przeglądarce www 5. Konfiguracja bazy plikowej Derby application.properties spring.jpa.hibernate.ddl-auto=update # Uaktualnienie schematu bazy danych, w przypadku braku, tworzone są tabele spring.datasource.url=jdbc:derby:folderzbaza;create=true # wskazanie na dostęp plikowy do bazy, poprzez wskazanie folderu z bazą + w przypadku braku bazy danych baza utworzy się w zdefiniowanej strukturze katalogu http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

6. Stworzenie encji Stworzenie encji czyli obiektu bazodanowego @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; @NotNull private String name; @NotNull private String email; public Person() { public long getid() { return id; public void setid(long id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public String getemail() { return email; public void setemail(string email) { this.email = email; Klasę encji należy zaadnotować adnotacją @Entity Klucz główny ustawiony zostaje poprzez adnotację @Id @GeneratedValue(strategy = GenerationType.AUTO) autogenerowany id @NotNull contraint na nienullową zawartość kolumny 7. Stworzenie repozytorium JPA public interface PersonRepo extends JpaRepository<Person, Long> { Interfejs JpaRepository generykowany jest na typ obiektu encji oraz wskazanie na typ identyfikatora Interfejs udostępnia podstawowe metody dostępowe m.in. List<T> findall(); <S extends T> List<S> save(iterable<s> entities);

Aby zastosować bardziej złożone zapytania należy zdefiniować deklaracje metod w interfejsie, który dziedziczy po JpaRepository http://docs.spring.io/spring-data/jpa/docs/1.4.3.release/reference/html/repositories.html#repositories.querymethods 8. Połączenie komponentów graficznych z zasobem bazodanowym @Theme(ValoTheme.THEME_NAME) @SpringUI public class MyUI extends UI { @Autowired PersonRepo repo; BeanItemContainer<Person> container; HorizontalLayout layout; Grid persongrid; TextField nametextfield; TextField emailtextfield; Button submit; @Override protected void init(vaadinrequest request) { layout = new HorizontalLayout(); initgrid(); initform(); setcontent(layout); private void initform() { VerticalLayout verticallayout = new VerticalLayout(); verticallayout.setsizefull(); nametextfield = new TextField(); nametextfield.setcaption("name"); emailtextfield = new TextField(); emailtextfield.setcaption("email"); submit = new Button(); submit.setcaption("add/modify"); submit.addclicklistener(clickevent -> { Person newperson = new Person(); newperson.setemail(emailtextfield.getvalue()); newperson.setname(nametextfield.getvalue()); repo.save(newperson); repo.findall()); container = new BeanItemContainer<Person>(Person.class, persongrid.setcontainerdatasource(container); ); verticallayout.addcomponents(nametextfield, emailtextfield, submit); layout.addcomponent(verticallayout);

private void initgrid() { List<Person> people = repo.findall(); container = new BeanItemContainer<Person>(Person.class, people); persongrid = new Grid(container); persongrid.setsizefull(); layout.addcomponent(persongrid); Ponieważ repozytoria jpa są singletonami i spring automatycznie tworzy instancje obiektów typu Repository, można użyć adnotacji @Autowired, dzięki której będziemy mieli dostęp do obiektu typu PersonRepo @Autowired PersonRepo repo; Wszystkie zapytania do bazy danych wykonywane są na obiekcie typu PersonRepo Obiekt BeanItemContainer jest agregatorem wyników zapytania bazodanowego i służy do zasilania danymi obiektu Grid Vaadin dostarcza wiele komponentów graficznych, które umożliwiają elastyczne układanie komponentów. W powyższym przykładzie zastosowanie dwa typu layout u, VerticalLayout oraz HorizontalLayout 9. Zadanie Na podstawie powyższego przykładu dodać edycję i usuwanie rekordów 1. Edycja rekordu poprzez dostęp do zaznaczonego wiersza komponentu Grid. a. Przykładowa obsługa zaznaczonego wiersza dodanie listener a na zmianę zaznaczenia persongrid.addselectionlistener(selection->{ Person editperson =(Person) selection.getselected().iterator().next(); // - pierwszy element zaznaczenia System.out.println(editPerson.getEmail()); ); 2. Usuwanie rekordu a. Analogicznie do edycji należy pobrać zaznaczony element a następnie wywołać metodę delete na obiekcie repozytorium (repo) podając w argumencie zaznaczony obiekt.