Grails. v 1.1 Web Framework

Podobne dokumenty
Zwinne i lekkie aplikacje webowe z. Jacek Laskowski

Zrąb Grails. Bartosz Bekier

SZKOLENIE TWORZENIE SYSTEMÓW

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Ruby i Ruby on Rails. Mateusz Drożdżyński

Programowanie w Ruby

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

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Programowanie w Ruby

Laboratorium nr 3 Podstawy Ruby on Rails

Czym jest Ruby on Rails?

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

Web frameworks do budowy aplikacji zgodnych z J2EE

Kurs języka Ruby. Ruby on Rails ActionPack

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Java Server Faces - wprowadzenie

1 Wprowadzenie do J2EE

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

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

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

I.Wojnicki, Tech.Inter.

ym4r Google Maps w Ruby on Rails

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

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

Programowanie wielowarstwowe i komponentowe

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

Programowanie w Ruby

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

Walidacja danych w ASP.NET MVC

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

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

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Backend Administratora

Wybrane działy Informatyki Stosowanej

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

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Zróbmy to szybko - Groovy i Grails w akcji

JBoss Seam: framework nowej generacji. Copyright Piotr Kochański & Erudis,

Kurs rozszerzony języka Python

IT Camp Junior Java Developer. Cel kursu

ASP.NET MVC. Autor wykładu: Marek Wojciechowski

MVC w praktyce tworzymy system artykułów. cz. 1

Założenia projektowe dla zapytania ofertowego EAK_ZA_01/2015

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Podstawowe wykorzystanie Hibernate

Zagadnienia Programowania Obiektowego Agata Hejmej

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

OpenLaszlo. OpenLaszlo

Gdzie jest moja tabela?

Porównanie technologii tworzenia aplikacji internetowych JEE na przykładzie JavaServer Faces i Spring Boot

JavaScript funkcyjność

Łukasz Tomczyk*, Beata Pańczyk. Politechnika Lubelska, Instytut Informatyki, Nadbystrzycka 36B, Lublin, Polska. Łukasz Tomczyk*, Beata Pańczyk

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

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Czym jest technologia Bluetooth?

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

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

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

Forum Client - Spring in Swing

Spring Framework - wprowadzenie i zagadnienia zaawansowane

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

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

Zaawansowany kurs języka Python

Tomasz Dobek.

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

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Szkolenie wycofane z oferty

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

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Wybrane działy Informatyki Stosowanej

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Zajęcia 4 - Wprowadzenie do Javascript

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Enterprise JavaBeans

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Ćwiczenie 8. Kontrolki serwerowe

Programowanie warstwy klienta w aplikacji JavaEE

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

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

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

Kurs programowania aplikacji bazodanowych

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Podstawowe informacje o technologii Java Persistence API - przykład

MIGRACJA SYSTEMÓW INFORMATYCZNYCH DO TECHNOLOGII JAVA

Modele danych walidacja widoki zorientowane na model

Wzorce logiki dziedziny

Transkrypt:

Grails v 1.1 Web Framework Piotr Gaertig / 2009

Grails - treść prezentacji Historia Ogólnie o Grails Groovy Starter Model GORM Scaffolding Kontroler Widok GSP URL Mapping Development & deployment Pozostałe możliwości

Historia Grails Ruby on Rails aka RoR (2004) - framework webowy oparty o język Ruby. Stosuje nowatorskie rozwiązania m.in. Convention over Configuration, AJAX, URL mapping wyrażeniami, wzorzec Active Record, REST. Groovy on Rails (2005) - G2One próbóje odtworzenia funkcjonalności Ruby on Rails w języku Groovy na JVM. W 2006 następuje zmiana nazwy na: Grails - obecnie udostępnia analogiczną funkcjonalność jak RoR, a w większości przypadków wyprzedza go. W 2008 SpringSource przejmuje G2One popularność rośnie.

Grails: Czym jest? Framework zaimplementowany w języku Groovy Grails = (MVC + CoC) * (Groovy + Hibernate + Spring + GSP +...) MVC oraz Convention over Configuration (CoC) Konwencja narzucana przez: szkielety, ustawienia domyślne oraz szczególne umiejscowienie plików w strukturze katalogowej projektu. Łatwiej zacząć projekt i prototypować Zawsze można rozwinąć szkielet i ustawienia by uzyskać zaawansowaną funkcjonalność. Produktem końcowym jest WAR do osadzenia na dowolnym serwerze J2EE

Groovy Dynamiczny język programowania podobny składniowo do Javy. Kompilowalny do bytecodu (.class) > pracuje na każdym JVM. Możliwości znane z Ruby, Python, Perl, Smalltalk: dynamiczne typowanie (def) domknięcia closures przeładowywanie operatorów składnia do obsługi list, map oraz wyrażeń regularnych iteratory polimorficzne wyrażenia w literałach znakowych operator?. - bezpieczny null ( level?.room[0]?.number ) dynamiczne rozszerzanie istniejących obiektów - także Java. wspiera składnię XML i HTML

Groovy: przykład Java for (String it : new String[] {"Groovy", "Java", "C#") if (it.length() <= 4) System.out.println("Hi " + it); Groovy ["Groovy", "Java", "C#"].findAll{it.size() <= 4.each{println "Hi ${it"

Starter Grails Na skróty co warto wiedzieć: Ściągamy i instalujemy z http://www.grails.org/ $ grails create-app NazwaAplikacji Applikacja gotowa do uruchomienia/zdeployowania. Domysnie skonfigurowana baza pamięciowa HSQL - restarty niszczą dane. $ grails run-app http://localhost:8080/nazwaaplikacji/ Większość modyfikacji kodu jest natychmiast widoczna w przeglądarce. $ grails shell interaktywne wykonywanie instrukcji Groovy w Grails

Starter: struktura projektu %PROJECT_HOME% + grails-app + conf ---> location of configuration artifacts + hibernate ---> optional hibernate config + spring ---> optional spring config + controllers ---> location of controller artifacts + domain ---> location of domain classes + i18n ---> location of message bundles for i18n + services ---> location of services + taglib ---> location of tag libraries + util ---> location of special utility classes + views ---> location of views + layouts ---> location of layouts + lib + scripts ---> scripts + src + groovy ---> optional; location for Groovy source files (of types other than those in grails-app/*) + java ---> optional; location for Java source files + test ---> generated test classes + web-app + WEB-INF

Model: GORM Model zwany domeną Groovy Object-Relational Mapping Rozszerzenie/nakładka na Hibernate, pozwala: modelować encje i relacje, automatycznie tworzyć schemat w bazie, ograniczać/walidować dane w polach, przechwytywać zdarzenia (przed/po zapisie, odczycie, aktualizacji, usunięciu) korzystać z dynamicznych metod do wyszukiwania (finders) używających nazw pól i typów relacji, wykorzystać już istniejące POJO z adnotacjami Hibernate i dopiąć do nich dynamiczne metody. Wszystko to w przystępnej składni Groovy.

Model: GORM Tworzymy prosty model: $ grails create-domain-class Author $ grails create-domain-class Book grails-app/domain/actor.groovy: class Author { String name grails-app/domain/book.groovy: class Book { String title Author author Powstaly też testy JUnit w grails-app/test/unit/

Model: GORM Wkonajmy proste operacje z konsoli // *C*reate def a = new Author(name: "Prof. Mio") a.save() // *R*ead & *U*pdate def a = Author.findByName("Prof. Mio") a.name = "Prof. Miodek" a.save() // *D*elete def b = Book.findByAuthor(a) b.delete() class Author { String name class Book { String title Author author def authors = Author.findAll(); def authors2 = Author.list() def authors_professors = Author.findAllByNameLike("Prof.%") def autors_cnt = Author.count() def first_exists = Author.exists(1) // HQL!!! def book = Book.find("from Book b where b.title =?", [ 'Polszczyzna' ])

Model: GORM Relacje z kaskadą class Author { String name static hasmany = [books: Book] class Book { String title Author author static belongsto = [author: Author] new Author(name:"Paulo Coelho").addToBooks(new Book(title:"Alhemik")).addToBooks(new Book(title:"Zahir")).save() Powstaną również CONSTRAINT-y w bazie.

Model: GORM Trochę więcej - walidacja i zdarzenia. class Author { String name int birthyear String email static hasmany = [books: Book] static constraints = { name(maxsize:30, nullable: false) email(email:true, blank: false) birthyear(range: 6..120) Sprawdzamy: class Book { String title Author author Date datecreated def beforeinsert = { datecreated = new Date() static belongsto = [author: Author] def author = new Author(params) if(author.validate()) { // poprawne - zrob cos z autorem else { author.errors.allerrors.each { println it

Scaffolding Scaffolding to generowanie szkieletu CRUD na podstawie modelu. Tworzymy model i kontroller: $ grails create-domain-class Author $ grails create-controller Author grails-app/domain/author.groovy - dopisujemy pola. grails-app/controllers/authorcontroller.groovy, wpisujemy: class AuthorController { def scaffold = true Dynamicznie powstaną metody: list, show, create, new, delete, edit, update. Widok GSP będzie dynamicznie udostępniony z szablonów. To wszystko! Uruchamiamy aplikację przez $ grails run-app

Kontroler $ grails generate-controller Author generuje rzeczywiste pliki ze scaffoldingu można dostosować operacje do swoich potrzeb, dodawać nowe etc. $ grails create-controller Book grails-app/controllers/bookcontroller.groovy: class BookController { def mylist = { [ books: Book.findAll{it.owner == params.user ]

Widok - przykład GSP GSP podobny do JSP język opisu wzorców stron HTML. grails-app/views/book/mylist.gsp: <html> <head> <title>my books</title> </head> <body> <ul> <g:each in="${books"> <li>${it.title (${it.author.name)</li> </g:each> </ul> </body> </html> $ grails generate-views Author tworzy pliki GSP ze scaffoldingu/modelu

Widok - Tagi GSP Bogata biblioteka gotowych tagów w Grails. Własne tagi: grails-app/taglib/authortaglib.groovy: def formatdate = { attrs -> out << new java.text.simpledateformat( attrs.format).format(attrs.date) grails-app/views/author/show.gsp:... <g:formatdate format="dd.mm.yyyy" date="${author.birthdate"/>... Żadnych importów tagów w GSP. Ciekawostka: po pewnych zabiegach mogą działać też w JSP

URL Mapping http://localhost:8080/myapp/book/show/10 kontroler BookController metoda show() 10 dostępne przez params.id w metodzie show grails-app/conf/urlmappings.groovy, domyślnie: class UrlMappings { static mappings = { "/$controller/$action?/$id?"{ constraints { // apply constraints here "/"(view:"/index") "500"(view:'/error')

Development i deployment Środowiska pracy: development, test, production Moża też tworzyć swoje: UAT $ grails war tworzy WAR, który możemy natychmiast umieścić na serwerze Java EE, domyślnie produkcyjny $ grails run-app to domyślnie tryb developerski

Pozostałe możliwości Grails Filtry/interceptory wywołań akcji Web Services, REST Warstwa serwisowa z transakcjami Web Flow AJAX Komunikaty flash pokazywane na bierzącej lub kolejnej (redirect) odsłonie strony WWW, np. po poprawnym wykonaniu operacji. Definiowanie Spring beanów w Groovym Dependency injection by convention Pluginy - kilkaset aktualnie dostępnych JSP zamiast GSP JDO i JPA zamiast GORM (plug-iny) Wsparcie językowe (I18N) Wbudowany server Jetty do developmentu. Skrypty Gant Integracja z Ant i Maven Więcej na http://grails.org/

??? Sluchacze.findAll{ it.haspytanie().each{ it.pytanie.say()

Amen Dziękuję za uwagę.