Skip to content

Latest commit

 

History

History
92 lines (56 loc) · 4.22 KB

TP2.md

File metadata and controls

92 lines (56 loc) · 4.22 KB

TP2 : modèle / vue / contrôleur

Fin du TP1

  • Faire un fork du TP
  • Clone local
  • Parcourir le code + lire les commentaires
  • Compléter le code de l'objet WeatherForecast

TP2

Réaliser les exemples suivants :

En s'appuyant sur le premier exemple, créer un formulaire web pour demander à l'utilisateur un code pays et une ville et lui afficher la météo de la ville en question en réutilisant le code du TP1

S'inspirer des exemples 2 et 3 pour émettre un twitt à chaque fois qu'un utilisateur demande la météo

Enfin, réaliser l'exemple de validation des données d'un formulaire web (http://spring.io/guides/gs/validating-form-input/). A partir de cet exemple, ajouter des règles de validation au formulaire précédent.

http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mvc.html

a) TP2 : corrigé de la première partie

Une solution basique pour la première partie du TP est fournie sur github https://github.com/mdautrey/TPEnssat2015/commits/master (Commit : 2a0946c9d5df1685361a28cb98dec4eb0123ea52).

  • Que pensez-vous de l'organisation du contrôleur WeatherController ?
  • Quelle solution envisageriez-vous pour découpler le contrôleur et le client REST ?

Testez le code en l'exécutant (mvn clean install puis java -jar target/... .jar) .

Le correcteur a oublié un bug.

  • A quel endroit se trouve-t-il ?
  • Corrigez-le.

Se rendant compte du problème de conception,le correcteur essaie de supprimer le couplage entre le contrôleur et le client REST. Il décidé donc d'utiliser le mécanisme d'injection de dépendance proposé par Spring. Après avoir testé l'ensemble, il publie son code sur github. Faites un checkout du commit correspondant (c743e3f495770c734aa7b7806f46959b3b4ddbc4).

  • Localisez l'injection de dépendance.
  • Etudiez son fonctionnement.
  • Justifiez/expliquez sa présence.

Pensez-vous que ce soit une bonne solution ? Quelle solution d'architecture envisageriez-vous pour remplacer cette injection ?

Testez le code. Compléter le template viewweather.html afin d'afficher plus de champs de l'object WeatherForecast.

b) TP2 : corrigé de la deuxième partie / partie 1 (twitter)

La fonctionnalité demandée comporte deux problématiques techniques :

  • Se connecter et envoyer des messages sur Twitter
  • Détecter les appels au service de météo pour déclencher les envois twitter (le cross-cut concern qui fait l'objet de la programmation orientée Aspect)

Nous réalisons donc le projet en trois étapes, la première consistant à tester la partie twitter, la deuxième à réaliser le cross-cut et la troisième à intégrer le tout dans notre solution cible.

Pour réaliser la partie Twitter :

Quelles sont les modifications nécessaires pour que l'exemple modifié fonctionne ? Nous avons décidé d'utiliser une librairie externe à Spring pour développer cette exemple plus rapidement. De quelle librairie s'agit-il ? Visiter le lien en commentaire dans le code pour comprendre le fonctionnement de l'exemple.

c) TP2 : corrigé de la deuxième partie / partie 2 (programmation orientée Aspect)

La démarche est expliquée dans http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html

Plan d'attaque :

  • Ajouter les dépendances aspectj dans le POM
  • Créer la classe pour recevoir le twitter service
  • Lier le tout
  • Activer le support d'AspectJ
  • Déclarer un Aspect
  • Déclarer un PointCut

TP2 : wrap up

A FAIRE LORS DE LA SEANCE DE TP N°3

  • Traiter les questions des paragraphes a), b) et c) ci-dessus, dans l'ordre
  • Intégrer le code proposé dans b) et c) pour finaliser le service d'envoi de tweet à chaque fois qu'un utilisateur demande la météo