ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

15
TD - Spring MVC

Transcript of ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Page 1: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

TD - Spring MVC

Page 2: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Setup - Config resourcesRécupérer le projet /home/TP/modules/sujets/CAI/WEB/td-spring/spring-mvc-td.tar.gz et l'installer dans votre workspace

Sous Eclipse dans le serveur.xml

Utilisation d'un Tomcat 6

<GlobalNamingResources> <Resource auth="Container" driverClassName="org.apache.derby.jdbc.EmbeddedDriver" maxActive="8" maxIdle="4" name="jdbc/devenib-ds" type="javax.sql.DataSource" url="jdbc:derby:devenib-ds;create=true" username="" password="" /> </GlobalNamingResources>..... <Context docBase="spring-mvc" path="/spring-mvc" reloadable="true" source="org.eclipse.jst.jee.server:spring-mvc"> <ResourceLink name="jdbc/devenib-ds" global="jdbc/devenib-ds" type="javax.sql.DataSource" /> </Context>

Page 3: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Sous Eclipse Dans le vue JEE dans la View Server -> serveur 'localhost Tomcat 6' -> Open (F3) -> lien Open Lauch Configuration

SetupConfiguration du Tomcat

Open (F3)

Java EE View

Page 4: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

SetupOuvrir la configuration de lancement du Tomcat

Configuration de lancement

Page 5: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

SetupOnglet Arguments : Indiquer au conteneur l'emplacement de la base de données

-Dderby.system.home="/<REPERTOIRE HOME ENIB>/derby/Databases"

Page 6: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

SetupOnglet Classpath : Indiquer au conteneur l'emplacement des jar de la base de données

Ajouter User Entries : Add External Jar : derby.jar derby.jar disponible sous /home/TP/modules/sujets/CAI/WEB/db-derby-10.9.1.0-bin/lib

Page 7: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Setup Creation BDD Derby

Exécuter le script de création de la base de données

/home/TP/modules/sujets/CAI/WEB/td-spring/createbdd.sh

Page 8: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Run Serveur

● Sous Eclipse ○ clean○ publish○ start

● Le serveur doit démarrer sans erreur

● possibilité de créer un compte dans le menu sign-up

Page 9: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Le bean BeerStore a les propriétés suivantes (spring-ioc.xml):id : beerStoreclass : fr.enib.cai.springframework.model.business.impl.BeerStoreImplscope : singleton

L'annotation @Autowired sur l'interface BeerStore permet de notifier à Spring d'injecter l'implémentation correspondante.

Attention : Toute modification de l'injection (xml ou annotation) nécessite un redémarrage du serveur sous Eclipse.

Injectiondéclaration au bean beerStore

Page 10: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Servir la JSP bar.jsp pour toute méthode GET sur l'url /private/bar

Dans la classe BarControleur

Sur une requête GET url= http://localhost:8080/spring-mvc/private/barforwarder vers la page bar.jsp

Cette JSP affiche la liste des bières de l'utilisateur connecté

Cette méthode printHome() réalisera :La récupération de l'utilisateur connectéLa récupération des bières de l'utilisateurLe forward vers la page bar.jsp

BarControleurGet

Page 11: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Le formulaire beer/add (Home.jsp) est soumis via une requête AJAX.

URL http://localhost:8080/spring-mvc-tp/private/beer/addJSON {"name":"1664","brewery":"Kronenbourg","country":"France","alcohol":"5,5"}

Créer dans la classe HomeControleur une methode validateField avec les propriétés suivantes :urlmapping : /private/beer/add

type : JSON (RequestBody / ResponseBody)request method : POST

Cette méthode réalisera :Le contrôle de validation du formulaire

En cas de succes : ajouter la bière au beerStorecréeer un object AddBeerStatus relatant le résultat de l'opération

En cas d'erreur : créer un object AddBeerStatus les erreurs de validation

retourner cet objet

Résultat attendu :La bière doit être ajoutée à la liste de bières en cas de succèsLes messages d'erreur doivent s'afficher dans la lightwindow addBeer.

AddBeerSoumission du formulaire

Page 12: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Le plus "+" dans le tableau appel un service AJAX d'ajout de bière dans le stock

URL http://localhost:8080/spring-mvc-tp/private/bar/checkinJSON {"id":2,"amount":"7"}

Créer dans la classe BarControleur ajouter une methode checkin avec les propriétés suivantes :urlmapping : /private/bar/checkin

type : JSON (RequestBody / ResponseBody)request method : POST

Cette méthode réalisera :Récupération de l'utilisation connectéValidation de inputCheck in du nombre amount dans le stock de la bière idRetourne un JSON avec le nouveau stock (classe CheckInCheckOutStatus)

BarControleurAjout de bière dans le stock

Page 13: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Le plus "-" dans le tableau appel un service AJAX d'ajout de bière dans le stock

URL http://localhost:8080/spring-mvc-tp/private/bar/checkoutJSON {"id":2,"amount":"7"}

Créer dans la classe BarControleur ajouter une methode checkout avec les propriétés suivantes :urlmapping : /private/bar/checkout

type : JSON (RequestBody / ResponseBody)request method : POST

Cette méthode réalisera :Récupération de l'utilisation connectéValidation de inputCheck out du nombre amount dans le stock de la bière idRetourne un JSON avec le nouveau stock (classe CheckInCheckOutStatus)

BarControleurRetrait de bière dans le stock

Page 14: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Modèle MétierAjout de la persistance (BDD)

L'implémentation BeerStoreImpl n'a pas de persistance... c'est mal

● Créer une nouvelle implémentation BeerStoreJDBCImpl

● créer un modèle SQL correspondant aux HashMap... ou mieux !○ Le déployer sur votre Derby local

● injecter un driver jdbc dans la classe BeerStoreJDBCImpl

● Utiliser les preparedStatement pour requêter la base de données

● Enjoy votre application a de la persistance, vous pouvez la déployer sur Cloubees !

Page 15: ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD

Front tunningPour ceux qui s'ennuient...

● Ajouter des images aux bières

● Mettre un carroussel Bootstrap sur la pages d'accueil publique

● Debugguer l'application (il y en a beaucoup, c'est Seb qui a codé :P)○ l'internationalisation ko sans cookies○ formulaires addBeer ne traitent pas toutes les erreurs