GRAILS L'ARCHITECTURE GRAILS



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

Application web de gestion de comptes en banques

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

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

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

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

Compte-rendu de projet de Système de gestion de base de données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

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

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Java 7 Les fondamentaux du langage Java

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Plateforme PAYZEN. Définition de Web-services

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Tutoriel d installation de Hibernate avec Eclipse

I. MySQL : Serveur et SGBD

.NET - Classe de Log

Ingénierie des Modèles. Méta-modélisation

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Stockage du fichier dans une table mysql:

Raja Bases de données distribuées A Lire - Tutoriel

BIRT (Business Intelligence and Reporting Tools)

Bases de données relationnelles

SITE WEB E-COMMERCE ET VENTE A DISTANCE

et Groupe Eyrolles, 2006, ISBN :

Compte Rendu d intégration d application

TP1 : Initiation à Java et Eclipse

Java DataBaseConnectivity

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

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

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

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

CREATION WEB DYNAMIQUE

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI le langage Java XII-1 JMF

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

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Guide d'installation. Release Management pour Visual Studio 2013

PHP 4 PARTIE : BASE DE DONNEES

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

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Olivier Mondet

Gestion d Active Directory à distance : MMC & Délégation

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Projet Java EE Approfondi

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Systeme d'exploitation

SQL Server et Active Directory

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Zeus V3.XX :: PRE-REQUIS TECHNIQUES

Mysql. Les requêtes préparées Prepared statements

Alfstore workflow framework Spécification technique

TP1 : Initiation à Java et Eclipse

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Notre Catalogue des Formations IT / 2015

contact@nqicorp.com - Web :

Le Langage De Description De Données(LDD)

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

Création d objet imbriqué sous PowerShell.

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

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

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

Le stockage local de données en HTML5

PHP 5. La base de données MySql. A. Belaïd 1

Introduction aux services Active Directory

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

Création d une application JEE

Bases de données avancées Introduction

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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)

Langage Java. Classe de première SI

TD/TP 1 Introduction au SDK d Android

Installation et prise en main

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

PHP. PHP et bases de données

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Hébergement de site web Damien Nouvel

Le modèle de données

TecLocal 4.0. Nouveautés de la version 4.0 (notes de mise à jour)

Département Génie Informatique

1. Introduction Création d'une requête...2

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Utilisation d objets : String et ArrayList

Transcription:

GRAILS L'ARCHITECTURE GRAILS Grails est un serveur d'application web basé sur le langage Groovy, et le framework Spring. Il est édité par la société : SpringSource. Une application Grails se décompose en trois parties. On y trouve : Les domaines (les modèles) Les controlleurs Les vues LES DOMAINES Les classes de domaine servent à modéliser les données et a établir les relations avec les autres domaines. Cela permet d'établir le mapping entre les Objets et la base de données. Elles facilitent également la validation des formulaires. class Etudiant { String nom Date datenaissance Il est possible d'effectuer des requêtes de base sur les domaines. Mais On trouve sur chaque domaines des méthodes get(), save(), list(), findbynom(), etc... Ces méthodes n'ont jamais été définies par le développeur, mais elles existent grâce au framework. (voir les différentes méthodes : http://grails.org/doc/latest/guide/gorm.html) Il est possible de contrôler la validation des formulaires depuis le fichier qui définit le domaine. Voici un exemple de définition de contrainte : static constraints = { nom blank: false datenaissance max: new Date() Ici, on vérifie que : le champ nom n'est pas vide. le champ datenaissance ne soit pas supérieur à la date du jour. (voir les autres contraintes possibles : http://www.grails.org/doc/latest/ref/constraints/usage.html)

LES CONTROLEURS Le contrôleur est la classe qui reçoit la requête de l'utilisateur et qui, en fonction de l'action demandée, va effectuer un traitement. Pour gérer quelle est l'action et quel contrôleur est appelé Grails se base sur le formatage de l'url : http://<...>/controller/action/ LES VUES Les vues sont représentées par des fichiers GSP (Groovy Server Page). Elles sont similaires aux pages JSP. La différence vient du fait qu'on peut insérer du code Groovy. On constate dans l'arborescence qu'il y a une vue dédiée à chaque contrôleur et une vue dédiée à une action du contrôleur. ( voir Annexe ) LE LANGAGE GROOVY Groovy est un langage de script se basant sur la syntaxe de Java. Le code Java est d'ailleurs compatible. Donc, si vous êtes un développeur Java, vous savez déjà coder en Groovy! La syntaxe de Groovy est faite pour apporter plus de flexibilité au langage Java. Voici les différentes simplifications que l'on peut effectuer sur un code Java que l'on souhaite transformer en Groovy : Les "getters" et les "setters" sont implémentés par défaut. Il n'est donc pas nécessaire de les implémenter. L'utilisation des setters est simplifiée. On peut écrire : objet.champ="nouvelle valeur"; Comme la vérification des types s'effectue à l'exécution, il n'est pas nécessaire de déclarer le type lors d'une déclaration de variable. On peut donc remplacer : String nom par def nom, dans le premier cas on définit une variable nom de type String, dans le second cas on définit simplement une variable nom. Il n'est pas nécessaire d'écrire le mot return pour retourner un objet à la fin d'une méthode. C'est l'objet qui se trouve sur la dernière ligne de cette méthode qui est automatiquement retourné. La concaténation est simplifiée. Il est possible d'insérer des variables à l'intérieur des chaînes de caractères : def sayhello(){ "Hello ${nom ${prenom!" Les points virgule ne sont plus obligatoires. GROOVY apporte également une gestion simplifiée des collections : Liste en Java : List<String> lespays = new ArrayList<String> (); lespays.add("france"); lespays.add("allemagne"); lespays.add("italie"); lespays.add("belgique");

Liste en GROOVY : def lespays = ['France','Allemagne','Italie','Belgique'] Parcours de la liste en JAVA : for(string unpays : lespays) { System.out.println(unPays); Parcours de la liste en GROOVY : lespays.each { println it Map en JAVA : Map<String, String> contacts = new HashMap<String, String>(); contacts.put("durand", "06.12.13.14.16"); contacts.put("dupont", "06.42.32.14.16"); contacts.put("duret", "06.45.83.14.16"); Afficher le couple clé-valeur for (Map.Entry<String, String> entry : contacts.entryset()) { System.out.println(entry.getKey() + " : " + entry.getvalue()); Map en GROOVY : contacts = [ "durant":"06.12.13.14.16", "dupont":"06.42.32.14.16", "duret":"06.45.83.14.16" ] contacts.each() { key, value -> println "${key == ${value" ; LE SQL AVEC GROOVY L'exemple suivant fonctionnera si une base MySql est installée localement, avec un compte dont les identifiants sont root/sio (pour login/password) avec une base de données Etudiant et une table etudiant avec un attribut nom. import groovy.sql.sql def sql = Sql.newInstance("jdbc:mysql://localhost:3306/Etudiant", "root","sio", "com.mysql.jdbc.driver") sql.eachrow("select * from etudiant") { println "Nom = ${it.nom" Petit défi : essayer d'obtenir le même résultat en JAVA avec moins de 25 instructions Pour plus d'informations : http://ericreboisson.developpez.com/tutoriel/java/groovy/ http://groovy.codehaus.org/beginners+tutorial

PREMIER PROJET GRAILS : Pour commencer, vous devez télécharger GROOVY/GRAILS Tool Suite 3.1 base on Juno 4.2 correspondant à votre système d'exploitation, par exemple pour un système windows : Groovy/Grails Tool Suite 3.1.0.RELEASE - based on Eclipse Juno 4.2.1 (Win32, 361MB) Lancez GROOVY/GRAILS : Choisir : Grails Project - donner un nom à votre projet Grails va mettre en place votre projet et résoudre tous les problèmes de dépendances ( vous devez avoir une connexion internet) VOIR ANNEXE

Définir un nouveau Domain ( modèle)

La classe Etudiant est créée, vous pouvez la modifier : package org.slam.ldv class Etudiant { String nom String email Date datenaissance static constraints = { nom blank: false email email: true, blank:false datenaissance max: new Date() Le framework va créer une table Etudiant avec comme attributs les champs suivants : id version nom email date_naissanc Grails va mettre en place le "scaffolding" qui signifie échafaudage en anglais. C'est le nom de la méthode par laquelle les vues, les domaines, et les contrôleurs sont générés. Pour chaque domaine, voici le type de vues et d'actions qui sont implémentées par défaut : Création Edition Suppression Affichage Liste Mise en place de l'échafaudage : Etudiant.groovy new Generate Controller and Views Lancement de l'application : Nom du projet Run as Grails Command (run-app)

LE MODÈLE : Etudiant ANNEXE Class Etudiant{ String nom Date datenaissance Static constraints = { Nom blank : false LE CONTROLEUR : EtudiantController class EtudiantController { def list(integer max) { params.max = Math.min(max?: 10, 100) [etudiantinstancelist: Etudiant.list(params), etudiantinstancetotal: Etudiant.count()] def create() { [etudiantinstance: new Etudiant(params)] LES VUES : etudiant - une action list dans le controleur une vue list correspondante - une action create une vue create Fichiers de configuration