Play! est un framework orienté web. Conçu pour faciliter le travail du développeur, il lui permet de s'abstraire de tous les problèmes liés à l'intégration pour se concentrer sur l'essentiel : le code métier.
Lors de cette présentation Rosine Tchokonte et Stanislas Zarka vous feront découvrir, au travers d’un cas concret ce framework, qui fait parler de lui.
16. 16
app/controllers
Toute méthode est une action
Point d'entrée de l'application invoqué
lors de chaque requête HTTP entrante
mise à jour du modèle
Retourne une réponse HTTP
Contrôleur
18. 18
conf/routes
Invoque le contrôleur et exécute l'action
correspondant à la requête HTTP
entrante
Peut rediriger vers une page d'erreur en
cas de requête invalide
Routeur
19. 19
JPA (Java Persistence API)
conf/application.conf: configuration de la
BD
@javax.persistence.Entity : annotation
permettant d'indiquer une classe
persistante
play.db.jpa.Model: permet que la classe
puisse embarquer plusieurs méthodes
Persistance des données
20. 20
play.Logger
ils se trouvent dans project/plugins.sbt
différents niveaux de logging :
- info
- debug
- warn
- error
- trace
Logging
21. 21
/test
play.test.UnitTest : tests unitaires
play test ou sbt test : pour lancer les
tests
play.test.FunctionalTest : tests
fonctionnels
Selenium: pour des tests automatisés
Tests unitaires
23. 23
Simple Build Tool (SBT)
Validation de formulaires
Authentification
Gestion du cache
Template Engine
Modules disponibles
Fonctionnalités avancées
24. 24
SBT : outil de build et de gestion des
dépendances
project/Build.scala
Utilisation du repository Ivy
Simple build tool
25. 25
Utilisation du champ validation du contrôleur
public static void hello(String name) {
validation.required(name);
}
Validation de formulaires
Annotation sur les paramètres des méthodes
public static void hello(@Required String name,
@Required @Min(0) Integer age) {....}
Annotation @Valid dans les POJO
$PLAY_HOME/resources/messages =>
paramétrer les messages d'erreur
26. 26
Deadbolt 2 est un plugin
d'authentification qui comprend un
mécanisme de définition par
annotations des droits d'accès à
certaines méthodes de contrôleurs ou
certaines parties de vues
Exemples :
http://deadbolt-2-java.herokuapp.com/
Authentification
27. 27
play.Cache
Exemple de sauvegarde pour 30 min :
Object o = new Message();
Cache.set("message1", o, "30mn");
@Cached("homePage")
public static Result index() {
return ok("Hello world");
}
Gestion du cache
28. 28
Template engine (1/2)
$ : <h1>Message ${message.content}</h1>
@ : <a href="@{Authors.index()}">Back</a>
# : #{script 'jquery.js' /}
& : Dans conf/messages :
authorName=The author name is %s
Dans une vue :
<h1>&{'authorName', author.name}</h1>
29. 29
Template engine (2/2)
*{*** ***}* : *{**** Display the user name ****}*
%{}% :
<h1>Client ${author.name}</h1>
<ul>
%{ for(message in author.messages)
{
}%
<li>${message}</li>
%{
}
}%
</ul>
30. 30
Il en existe aussi bien en Scala qu'en
Java
Cf. :
www.playframework.com/.../Modules
Modules disponibles