COURS GRAILS. Novembre 2013



Documents pareils
les techniques d'extraction, les formulaires et intégration dans un site WEB

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Devenez un véritable développeur web en 3 mois!

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Compte Rendu d intégration d application

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

CAS, un SSO web open source. 14h35-15h25 - La Seine A

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Programmation Web. Madalina Croitoru IUT Montpellier

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

AngularJS pour une application d'entreprise

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

CQP Développeur Nouvelles Technologies (DNT)

Alfstore workflow framework Spécification technique

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Point sur les solutions de développement d apps pour les périphériques mobiles

TP1 : Initiation à Java et Eclipse

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

SYSTÈMES D INFORMATIONS

Application web de gestion de comptes en banques

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Présentation du Framework BootstrapTwitter

DEMARREZ RAPIDEMENT VOTRE EVALUATION

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Java et les bases de données

Java pour le Web. Cours Java - F. Michel

Cours en ligne Développement Java pour le web

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Mise en œuvre des serveurs d application

Formation en Logiciels Libres. Fiche d inscription

Plateforme PAYZEN. Définition de Web-services

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Introduction aux «Services Web»

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Celui qui vous parle. Yann Vigara

CHEF DE PROJET - DÉVELOPPEUR EXPÉRIMENT É PHP - JAVA -.NET. 28 ans - 7 ans d'expérience

4. SERVICES WEB REST 46

Programme ASI Développeur

Outil de Demande de Backup Système

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

DOSSIER DEVELOPPEUR Projet CAR

Bases de données cours 1

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

JOnAS 5. Serveur d application d

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Hébergement de site web Damien Nouvel

1. Installation d'un serveur d'application JBoss:

Expert technique J2EE

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Bases Java - Eclipse / Netbeans

Introduction à JDBC. Accès aux bases de données en Java

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

Approche Contract First

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Définition des Webservices Ordre de paiement par . Version 1.0

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Applications orientées données

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Francis Mignault. ! Coauteur : Expert Oracle Application Express. ! Membre du Oracle APEX Advisory Board apex.oracle.com/vote

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Refonte front-office / back-office - Architecture & Conception -

Marie-Christine Spengler

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Formation : Langues : Types d Intervention et Secteurs d Activité :

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

IBM DB2 Alphablox. d administration GC

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Code Produit Nom Produit Dernière mise à jour. AM003 Alias Mobile On Demand Licence 1 mois 27/04/2015

Cursus Sage ERP X3 Outils & Développement. CURSUS Sage ERP X3 Outils & Développement ADVANCED. Outils avancés. 2 jours X3A-ADM. Développement 1 &2

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Projet de Java Enterprise Edition

Les frameworks au coeur des applications web

Bases de données et sites WEB

Transcription:

COURS GRAILS Novembre 2013

2 Introduction Introduction Programme Planning Rappels

Introduction 3 Grégory Galli Tokidev S.A.S. n Consulting, Bureau d étude, développement informatique. n www.tokidev.fr

Avant de commencer 4 Posez des questions! n Si un point ne vous semble pas clair, n hésitez pas à me poser des questions. Me contacter en dehors du cours n Si vous avez besoin d aide en dehors des horaires de cours, contactez moi par e-mail : greg.galli@tokidev.fr n Pour le cours ou vos projets.

Avant de commencer 5 Google est votre ami! n Si vous rencontrez un problème, ayez le réflexe de chercher sur internet la réponse y sera la plupart du temps! Débug n Développement web : Inspecteur (Chrome/Firebug) n Développement Grails : Débug pas à pas comme en Java

Planning 6 Lundi 18 Novembre n Cours : 8h30 11h30 n TD : 13h 16h Mercredi 20 Novembre n Cours : 8h30 11h30 n TD : 13h 16h Mardi 19 Novembre n Cours : 8h30 11h30 n TD : 13h 16h

Rappel : MVC 7 Modèle Vue Contrôleur

Rappel : Web Services 8 Programme informatique permettant la communication et l échange de données entre applications. Deux principaux types de Web Services : n SOAP (WSDL / UDDI) n REST

Rappel : Serveur d application 9 Machine ou service pour l hébergement d applications à exécuter côté client Quelques exemples : n JBOSS n Apache Tomcat n Glassfish n Websphere n

10 Présentation Générale

Grails, c est quoi? 11 Né en 2005, initié par Graeme Rocher Framework open source de développement agile Basé sur le langage Groovy Groovy on Rails (agile) > Grails Construit sur un modèle MVC

Groovy, c est quoi? 12 Langage OO destiné à la plateforme Java Alternative inspirée de Python, Ruby et Smalltalk Intégré et compatible avec la JVM n On peux utiliser des librairies Java n Être utilisé directement dans des classes Java

Philosophie : les cinq fondamentaux 13 DRY : Don t Repeat Yourself Développement rapide n Prototypage n Scaffolding n Gros projets Architecture orientée modèle Convention plutôt que configuration Exploite la puissance de la JVM : compilation en bytecode Java

Avantages 14 Web MVC : Facile à utiliser GSP : Langage de template simple et complet Serveur embarqué GORM : Modélisation et accès aux données Base de donnée simulée (développement) Internationalisation Tests & Tests unitaires Documentation très riche

Créer un projet : 3 étapes 15 Création des classes de domaine Scaffold Run

Plugins 16 Tomcat Hibernate Très nombreux Accélèrent grandement le développement Ne pas en abuser Twitter Bootstrap

17 Présentation Composants principaux Hibernate GORM Structure d un projet

Hibernate 18 Framework open source de persistance Adaptable à tous les serveurs d application / web Remplacement d une DAL classique n Appel de méthodes objets de haut niveau Pluggable sur n importe quel type de BDD Utilisé dans le cadre du développement Grails via GORM

GORM 19 Grails Object Relational Mapping Illusion de base de donnée orientée objet Correspondance monde objet / monde relationnel n Appel de méthodes objets de haut niveau def book = Book.findByTitle("Groovy in Action") book.addtoauthors(name:"dierk Koenig").addToAuthors(name:"Guillaume LaForge").save() grails create-domain-class org.bookstore.book

GORM vs DAL Classique 20 Avantages n Réduction de la quantité de code n Binding poussé n Pas de SQL pour des requêtes simples n On appelle directement les objets que l on a créé n Méthodes dynamiques

GORM vs DAL Classique 21 Désavantages n On ne sait pas ce qui se passe derrière n On rajoute une couche à Performances n Connaissances requises pour une utilisation efficace n Sans compréhension du concept et des mécaniques, l échec est assuré

Composants d un projet Grails 22 Config Domain : Définition du modèle Controller : Contrôleurs web i18n : Internationalisation Service : Couche de service View : Groovy Server Pages SRC : Autre sources (Java / Groovy) Test : Tests unitaires et d intégration Web-app : ressources web

23 Présentation Eléments principaux Config

Config 24 Config : Configuration du projet DataSource n Liens base de données n Configuration BuildConfig UrlMapping n Règles de redirections n REGEXP ApplicationResources n Module gestion de ressource (Grails 2.0)

Ressources 25 Plugin de base inclus depuis la version 2.0 de Grails Gestion des ressources web n Javascript n CSS Optimisation n Compression n Concaténation

DataSources 26 Configurations base de données n Différentiation Production / Test / Production n dbcreate : Paramètre important qui définit le comportement au lancement du projet n create n create-drop n update

BuildConfig 27 Configurations des dépendances Port de déploiement Configuration des plugins n runtime n build n compile n test n provided

UrlMapping 28 Configuration des redirections n Expressions régulières n Vers des controllers / actions n Vers des vues

UrlMapping 29 Définitions complexes et contraintes : n $ : permets de pré-nommer des variables n Expressions régulières pour des besoins particuliers n Définitions bi-directionnelles

30 Présentation Eléments principaux Model View Controller Services Gettext

Modèle 31 Attributs de la classe hasmany / hasone constraints mapping mappedby Constructeurs Méthodes de classe

Controlleur 32 Lien vers les vues Traitement léger beforeinterceptor allowedmethods Retour vers les vues n Render n Redirect n [] n XML / JSON Converters

Controlleur 33 Comportement par défaut n Renvoi à la vue correspondante n Sinon, méthodes à disposition n Redirect n Render n [] Exemple: n Controllers / FrontController.groovy n Méthode index n Views/Front/index.gsp

i18n 34 Internationalisation Injection via gettext 17 langues par défaut ${message (code: lb.hello )} <g:message code= lb.hello /> <g:message code="my.localized.content" args=" { ['Juan', 'lunes'] }" /> n my.localized.content=hola, Me llamo {0}. Hoy es {1}. n render : Hola, Me llamo Juan. Hoy es lunes.

i18n 35 Cas complexes n Injection de message dans un message n message(code: 'default.not.found.message', args: [message(code: 'congres.labe default: 'Congres'), id]) n code: 'default.not.found.message' n args: [message(code: 'congres.label', default: 'Congres'), id]

Service 36 Traitements lourds n Injection dans les controlleurs Threading possible n Attention au contexte Hibernate Langages Java / Groovy Eviter les manipulation de BDD autant que possible

Service 37 Conservation du contexte de persistance n Possible mais à éviter n Si on ne peux faire autrement

Vues 38 Index n <meta name="layout" content="main"/> ${ } <% %> n <g:xxx /> Resources accessible (grailsapplication)

Vues - Layout 39 Default title <g:layouthead /> <r:layoutresources /> <g:layoutbody /> <r:layoutresources />

Web app 40 Web-app /css /images /js /meta-inf /web-inf

Grails 2.0.0 41 Version majeure riche en fonctionnalités n Intégration de base du plugin Resources n Amélioration des test unitaires et d intégration n HTML5 dans le scaffolding n Nouvelle console Version à utiliser : 2.2.4

42 Un peu de pratique! Préparation de l environnement de travail

Modélisation 43 Création du modèle n Accès à tous les types de base (Int, String, Boolean) n Création d une relation 1..n n static hasmany = [nomdelacollection:object] n Création d une relation 1..1 : Comme un attribut quelconque n Utilisation possible de la propriété hasone

Modélisation 44 Création du modèle n Définition des attributs n Relations n Contraintes

Modélisation 45 Possibilité d héritage n Eviter si possible à Gourmand en ressources n Récupération des attributs du parent

Modélisation Relations 46 Très important n Définition du «responsable» d une association via la propriété «belongsto» n Je crée un objet «Roue» qui belongsto «Vehicule», si j efface le véhicule, ma roue sera effacé elle aussi car une relation forte est définie entre les deux objets

Modélisation Relations 47 Si je définie deux classes Roue et Véhicule: n Roue belongsto Vehicule n Dépendance forte n Une roue ne peux pas être créée seule n Nécessité de créer un véhicule et d y attacher la roue

Modélisation - Contraintes 48 Propriété constraints n Permets de définir les contraintes sur les propriétés de nos classes n unique n blank n nullable n size n url n mail n max, maxsize n http://grails.org/doc/latest/ref/constraints/usage.html

Modélisation - Mapping 49 Propriété mapping n Permets de personnaliser les noms des champs générés par GORM dans la base de donnée n Définir si un attribut dois être caché par défaut n static mapping = { table bool cache usage: 'read-only', include: 'non-lazy' }

Modélisation - Mapping 50 Propriété mapping n Permets de personnaliser les propriété de jointure si on ne veux pas garder les propriété par défaut

Modélisation - Mapping 51 Propriété mapping n Lazy loading n Par défaut si un objet possède une référence sur un autre objet, ce dernier ne sera pas chargé en mémoire, si on désire que le comportement de base soit différent, il faut l expliciter. n static mapping = { books lazy:false }

Modélisation - Mapping 52 Propriété mapping n Les comportements comme les transactions et les cascades SQL peuvent être définies dans ce bloc n static mapping = { book lazy: false, cascade:"all,delete-orphan } n n Si l on désire que la modification d un objet parent affecte l objet fils, on dois définir le fils comme appartenant au parent (relation forte), si on ne désire pas définir d appartenance, il faut alors expliciter les comportements Sinon : Faisable à la main

Modélisation - Mapping 53 Propriété mapping n De très nombreuses adaptations sont possible, lire la documentation si vous êtes dans un cas particulier n http://grails.org/doc/latest/guide/gorm.html

Manipulation des objets 54 Requêtes sur une base de donnée via GORM n Récupération par ID : Object.get(id) n Récupération de tous les objets : n Object.list() n Object.getAll() n Requête sur propriété : n Object.findByName( lenom ) n Object.findAllByName( lenom )

55 Manipulation des objets

56 Manipulation des objets

Manipulation des objets 57 Sauvegarde n objectinstance.save() n Options : n Flush : quand défini à «true», persiste l objet immédiatement n Validate : valide la persistance de l objet n Insert : force hibernate à utiliser un INSERT(true) ou un UPDATE (false n failonerror : si la persistance echoue, une exception sera levée (souvent utilisé dans le bootstrap) n deepvalidate : défini si les objets fils doivent eux aussi être validé

Manipulation des objets 58 Ajout n vehiculeinstance.addtoroues(new Roue(..)) Suppression n objectinstance.delete() n Options : n Flush : quand défini à «true», persiste l objet immédiatement n vehiculeinstance.removefromroues(roueinstance)

Plugin : Resource 59 Gestion des ressources n Images n CSS n Javascript Gestion via des modules n Fichier «ApplicationResources.groovy» n Dépendances n Héritage

Plugin : Resource 60 Utilité n Cache n Importations optimisées dans les pages n Minimize n Concaténation de fichiers n Création de bundles

Plugin : Resource 61 Utilisation dans les pages n Importation de modules n <r:require module= modulename /> n <r:require modules= [modulename1, modulename2] n Utilisation d images n <g:img/> à la place de la balise <img/>

Plugin : Spring Security 62 Gestion de la sécurité n Existe depuis longtemps n Utilisé dans de nombreux frameworks n Eprouvé n Intégration facile n Options de base suffisantes n Potentiel de customisation

Plugin : Spring Security 63 Modèle de base n Classes n User n Role n UserRole n Controllers n LoginController n LogoutController

Plugin : Spring Security 64 Contrôle fin de la sécurité n Méthodes (actions) n Controller n Projet global Gestion d une session n Utilisateur couramment identifié accessible n Exploitable depuis tous les composants n Controller n Service n Vues

Plugin : Spring Security 65 TagLibs n <sec:ifloggedin> n <sec:ifnotloggedin>

Plugin : Spring Security 66 Respectez les étapes n Importation du plugin n Exécution de la commande de génération n S2-quickstart fr.mbds.cwitter User Role n Modification des classes existantes n Ajout des utilisateurs dans le BootStrap

Plugin : Spring Security 67 BootStrap

Plugin : Spring Security 68 BootStrap

Documentation 69 La documentation officielle sera votre première source d information. n http://grails.org/doc/latest/guide/index.html Plugins n http://grails.org/plugins/ Google Forums d entraide

Merci à vous! 70 N hésitez pas à me contacter pout toute demande d informations : n Grégory Galli n E-mail : greg.galli@tokidev.fr n Site Web : www.tokidev.fr Bonne continuation à tous!

Pratique 71 Réalisation d une application «Twitter like» Utilisation de tous les aspects de Grails

72 TP à réaliser