2. Setup - Config resources
Ré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>
3. Sous Eclipse
Dans le vue JEE dans la View Server -> serveur 'localhost Tomcat 6' -> Open (F3) ->
lien Open Lauch Configuration
Setup
Configuration du Tomcat
Open (F3)
Java EE View
5. Setup
Onglet Arguments : Indiquer au conteneur
l'emplacement de la base de données
-Dderby.system.home="/<REPERTOIRE HOME ENIB>/derby/Databases"
6. Setup
Onglet 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
8. 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
9. Le bean BeerStore a les propriétés suivantes (spring-ioc.xml):
id : beerStore
class : fr.enib.cai.springframework.model.business.impl.BeerStoreImpl
scope : 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.
Injection
déclaration au bean beerStore
10. 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/bar
forwarder 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'utilisateur
Le forward vers la page bar.jsp
BarControleur
Get
11. Le formulaire beer/add (Home.jsp) est soumis via une requête AJAX.
URL http://localhost:8080/spring-mvc-tp/private/beer/add
JSON {"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 beerStore
cré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ès
Les messages d'erreur doivent s'afficher dans la lightwindow addBeer.
AddBeer
Soumission du formulaire
12. 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/checkin
JSON {"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 input
Check in du nombre amount dans le stock de la bière id
Retourne un JSON avec le nouveau stock (classe CheckInCheckOutStatus)
BarControleur
Ajout de bière dans le stock
13. 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/checkout
JSON {"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 input
Check out du nombre amount dans le stock de la bière id
Retourne un JSON avec le nouveau stock (classe CheckInCheckOutStatus)
BarControleur
Retrait de bière dans le stock
14. Modèle Métier
Ajout 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 !
15. Front tunning
Pour 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