Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Play! Framework
–
Formation 
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Quelques mots sur Play!
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Historique
2007 Créé par Guillaume Bort
2008 Framework Open ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Un tour d'horizon
Pas de compilation
Respecte le protocole H...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La communauté
Twitter
http://twitter.com/playframework
~ 160...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pourquoi un nouveau 
framework web en Java
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pourquoi un nouveau 
web framework java 
Alors qu'il existe ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pourquoi un nouveau 
web framework java 
« Java web framewor...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pourquoi un nouveau 
web framework java 
Web VS middleware
L...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pourquoi un nouveau 
web framework java 
WEB
=
REST
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pourquoi un nouveau 
web framework java 
« Play ! Framework ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les avantages de Play!
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Cycle de Vie
Framework J2EE Traditionnel
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Cycle de Vie
Avec Play!
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les fonctionnalités
Module de sécurité
CRUD
Validation
Jobs ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les fonctionnalités
Et avec les modules :
OpenID, CAS
Export...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les fonctionnalités
Play! est compatible avec toutes les lib...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
A la découverte de play!
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Architecture
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La structure d'une appli
Créer une nouvelle application
Play...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les routes
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le fichier de configuration
Configuration
De la base de donn...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le fichier de configuration
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le fichier de configuration
Mais comment on fait pour tous t...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
A la découverte de play ! :
Le Model
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le model
Définition en JPA
Beaucoup d'annotation ! Que ce so...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le model
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le model
Tout est public ! Il n'y a pas de getter/setter
Pla...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le model
La classe « Model » est un Helper
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Le model
Import / Export de la base en YML
Import natif dans...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
A la découverte de play! :
Les controllers
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
Doit étendre la classe « Controller »
Possèd...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
Les paramètres d'entrées des Controlleurs
Ce...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
Les paramètres de sorties des controlleurs
I...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les scopes
Application
Session
Stocké dans un cookie sécuris...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
Les fichiers de rendu
Par défaut Play! cherc...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
C'est bien beau de ne plus
avoir la « servle...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
Il existe les intercepteurs !
@Before
– Exéc...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les controllers
@Finally
– Exécute la méthode annotée après ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
A la découverte de play! :
Les templates
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les templates
La Syntax
Expressions : ${ … }
– Permet d'affi...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les templates
Les décorateurs
Fichier html de template paren...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les templates
Les Tags : #{tagName /}
Un tag est un fragment...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les templates
Les Tags : #{tagName /}
Exemple d'appel :
Le f...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les templates
Les extensions
Certaines méthodes sont ajoutés...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les templates
Les extensions personnalisées
Il est possible ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
A la découverte de play! :
Les jobs
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Les Jobs
Doit étendre la classe « Job »
@Every(«1d»)
@On(«0 ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
Pour aller plus loin ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
3 façons de valider une requête :
Directement ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Méthode 1
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Méthode 2
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Méthode 3
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Dans les templates
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Les validateurs :
Email : vérifie que le champ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Les validateurs :
IsTrue : vérifie que le cham...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Les validateurs :
MaxSize : taille maximum du ...
Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA.
La validation
Les validateurs :
Past : vérifie que la date e...
Upcoming SlideShare
Loading in...5
×

Formation Play! framework

10,404

Published on

initiation et formation au framework de développement play!

Published in: Entertainment & Humor
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,404
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
214
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Formation Play! framework

  1. 1. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Play! Framework – Formation 
  2. 2. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Quelques mots sur Play!
  3. 3. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Historique 2007 Créé par Guillaume Bort 2008 Framework Open Source 2009 Version 1.0 en octobre 2010 Version 1.0.1 en janvier 2011 Version 1.1 en octobre
  4. 4. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Un tour d'horizon Pas de compilation Respecte le protocole HTTP RESTFull Stateless Système de templating simple Groovy Framework MVC Rapide (exécution & développement) Extensible par des modules Pure JAVA !!!
  5. 5. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La communauté Twitter http://twitter.com/playframework ~ 1600 followers ~ 500 tweets Google group http://groups.google.com/group/play-framework ~ 15000 messages ~ 1300 membres ~ 40 messages / jour Github http://github.com/playframework/play ~ 120 watchers
  6. 6. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pourquoi un nouveau  framework web en Java
  7. 7. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pourquoi un nouveau  web framework java  Alors qu'il existe déjà JSF Struts Spring MVC Wicket ...
  8. 8. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pourquoi un nouveau  web framework java  « Java web frameworks are created by java developpers, not Web developpers » « Java developpers are building Java applications, not web applications »
  9. 9. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pourquoi un nouveau  web framework java  Web VS middleware La complexité en Java est culturelle Interfaces Abstraction RMI EJB SOAP
  10. 10. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pourquoi un nouveau  web framework java  WEB = REST
  11. 11. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pourquoi un nouveau  web framework java  « Play ! Framework is the first reasonable Java web framework I have personnaly seen» Bret Taylor
  12. 12. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les avantages de Play!
  13. 13. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Cycle de Vie Framework J2EE Traditionnel
  14. 14. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Cycle de Vie Avec Play!
  15. 15. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les fonctionnalités Module de sécurité CRUD Validation Jobs asynchrones I18n Tests (unitaire & selenium) L'envoie de mail Webservices RESTFull services
  16. 16. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les fonctionnalités Et avec les modules : OpenID, CAS Export en PDF Export Excel Rendre les CSS dynamiques Minifier Recherche … http://www.playframework.org/modules
  17. 17. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les fonctionnalités Play! est compatible avec toutes les librairies Java. Play ! Intègre déjà : Hibernate Google Gson Commons (fileupload, httpclient, email, logging …) EhCache ...
  18. 18. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. A la découverte de play!
  19. 19. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Architecture
  20. 20. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La structure d'une appli Créer une nouvelle application Play new monApplication Structure de l'application ./conf ./conf/routes ./conf/application.conf ./conf/messages ./test ./lib ./public ./app ./app/models ./app/controllers ./app/views
  21. 21. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les routes
  22. 22. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le fichier de configuration Configuration De la base de données Du logger Du cache Du serveur SMTP Des modules System settings
  23. 23. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le fichier de configuration
  24. 24. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le fichier de configuration Mais comment on fait pour tous travailler avec le même fichier de configuration, alors que nos environnements ne sont pas identique ? play id
  25. 25. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. A la découverte de play ! : Le Model
  26. 26. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le model Définition en JPA Beaucoup d'annotation ! Que ce soit pour le mapping avec la base de données ou pour la structure / validation des champs – @Entity – @OneToMany – @Column – … (pour la validation nous verrons plus loin) Doit étendre de la classe « Model »
  27. 27. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le model
  28. 28. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le model Tout est public ! Il n'y a pas de getter/setter Play : génère les getters/setters au runtime Vous pouvez surcharger les getters/setters
  29. 29. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le model La classe « Model » est un Helper
  30. 30. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Le model Import / Export de la base en YML Import natif dans play Export avec le module YML(version 1.0) – http://github.com/sim51/logisima-play-yml
  31. 31. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. A la découverte de play! : Les controllers
  32. 32. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers Doit étendre la classe « Controller » Possède que des méthodes public static void Une méthode est appelée selon une route Un controller donne accès à plusieurs méthode de rendu Json Xml Pdf … On peut chainer les actions Redirection En appelant directement la méthode : Application.index()
  33. 33. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers
  34. 34. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers Les paramètres d'entrées des Controlleurs Ce sont les variables en GET / POST / DELETE / PUT Les GET peuvent être défini dans le fichier de routes Il n'y pas que des types simples, on peut y mettre des objets de notre model. Ces objets seront créée via les paramètres de la request. Exemple : – resto.name – resto.url – ...
  35. 35. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers Les paramètres de sorties des controlleurs Il suffit d'ajouter les objets à la méthode render exemple : – render("Public/resto/show.html", resto, randomID) ; Ou d'appeler la méthode renderArgs – renderArgs.put(« resto », resto); Sinon, il y a les différents scopes
  36. 36. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les scopes Application Session Stocké dans un cookie sécurisé et accéssible durant toute la session de l'utilisateur (4Kb). Flash Stocké dans un cookie sécurisé et uniquement accessible par la prochaine requête (4Kb). Request Pour tout le reste, il y a le cache !
  37. 37. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers Les fichiers de rendu Par défaut Play! cherche le fichier suivant : – app/views/[Classe Name]/[Methode Name].html – app/views/Application/index.html Mais on peut spécifier un fichier – render("Public/resto/show.html", resto);
  38. 38. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers C'est bien beau de ne plus avoir la « servlet-api », mais comment je fais pour faire un filtre ?
  39. 39. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers Il existe les intercepteurs ! @Before – Exécute la méthode annotée avant chaque action du Controller. On peut exclure certaine action (unless={« login », « logout »}), ou définir seulement quelques actions (only={« login », « logout »}) @After – Exécute la méthode annotée s'exécute après chaque action du Controller.
  40. 40. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les controllers @Finally – Exécute la méthode annotée après chaque résultat d'action du Controller. @With – Permet de déléguer les intercepteur à une classe. Les intercepteurs s'appliquent même aux sous-classes !
  41. 41. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. A la découverte de play! : Les templates
  42. 42. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les templates La Syntax Expressions : ${ … } – Permet d'afficher une variable: ${resto.name} Messages : &{ … } – I18N. Affiche la valeur correspondant à la clef (définie dans le fichier conf/messages) Actions (reverse Route): – @{ …} : génère l'URI de l'action : @{Application.index()} – @@{ …} : génère une URL absolue Commentaires : *{ … }* Scripts : %{ … }%
  43. 43. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les templates Les décorateurs Fichier html de template parent Un template hérite du décorateur #{get /}, #{set /}, #{extend /} & #{doLayout /}
  44. 44. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les templates Les Tags : #{tagName /} Un tag est un fragment de HTML qui peut être appelé avec des paramètres. Un tag correspond à un fichier devant absolument se trouver dans le répertoire « app/views/tags », et le nom du tag correspond au nom du fichier. Les paramètres passés au tag sont accessibles dans le tag via _[le nom de mon paramètre]
  45. 45. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les templates Les Tags : #{tagName /} Exemple d'appel : Le fichier article.html :
  46. 46. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les templates Les extensions Certaines méthodes sont ajoutés au objets dans les templates : – Date|format() : pour formater une date : ${myDate.format('dd MMMM yyyy hh:mm:ss')} – String|escapeHtlm() : pour échapper le code html – String|nl2br() : remplace les sauts de ligne par des <br/> – String|raw() : pour ne pas échapper le code html. – … Il est à noter que Play ! échappe automatiquement tous les textes. http://www.playframework.org/documentation/1.1/javaextensions
  47. 47. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les templates Les extensions personnalisées Il est possible de créer ses propres extensions ! Il suffit de créer une classe – qui étend de JavaExtensions – Contenant des méthodes public static
  48. 48. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. A la découverte de play! : Les jobs
  49. 49. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Les Jobs Doit étendre la classe « Job » @Every(«1d») @On(«0 0 12 * * *) – CRON expression @OnApplicationStart
  50. 50. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. Pour aller plus loin ...
  51. 51. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation
  52. 52. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation 3 façons de valider une requête : Directement dans le controller en appelant la méthode « validation ». En ajoutant les annotations dans la déclaration des paramètres de la méthode. Dans le POJO en ajoutant les annotations, et en ajoutant @valid dans la déclaration du pojo comme paramètre de la méthode.
  53. 53. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Méthode 1
  54. 54. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Méthode 2
  55. 55. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Méthode 3
  56. 56. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Dans les templates
  57. 57. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Les validateurs : Email : vérifie que le champ est une adresse mail – validation.email(mail) – @Email String mail Equals : vérifie que le champ est égale à un autre (ex : password confirmation) – validation.equals(password, passwordConfirmation) – @Equals(« passwordConfirmation ») String password Future : vérifie que la date est dans le future (en fonction de la date du jour ou de la date de référence passée en paramètre) – validation.future(maDate) | validation.future(maDate, « 1971-12-31 ») – @InFuture String maDate / @InFuture(« 1971-12-31 ») String maDate
  58. 58. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Les validateurs : IsTrue : vérifie que le champs est à « true » (String ,Boolean ou Number) – validation.isTrue(agree) – @IsTrue String agree Match : Le champ valide la regex – validation.match(abbreviation, "[A-Z]{3}") – @Match("[A-Z]{3}") String abbreviation Max : Vérifie que le champ n'est pas plus grand que la valeur spécifiée (Number et String) – validation.max(wordCount, 7500) – @Max(7500) String wordCount
  59. 59. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Les validateurs : MaxSize : taille maximum du String – validation.maxSize(url, 2083) ; – @MaxSize(2083) String value Min : Vérifie que le champ est plus grand que la valeur spécifiée (Number et String) – validation.min(age, 18) ; – @Min(18) Long age MinSize : taille minimum du String – validation.minSize(value, 42) ; – @MinSize(42) String value
  60. 60. Auteur : Benoît Simard – Licence : Creative Commons BY-NC-SA. La validation Les validateurs : Past : vérifie que la date est dans le passé (en fonction de la date du jour ou de la date de référence passée en paramètre) – validation.past(actualDepartureDate) ; / validation.past(expectedDepartureDate, expectedArrivalDate); – @Past String actualDepartureDate / @Past("1980-01-01") String birthDate Range : min & max – validation.range(wordCount, 17500, 40000) ; – @Range(min = 17500, max = 40000) String wordCount Required : le champ est obligatorie – validation.required(value) ; – @Required String value Url : vérifie que le champ est une url valide – @URL String address
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×