SPRING MVC
UP ASI
Bureau E204
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
1
Plan du Cours
– Spring MVC ( Définition + Spring web)
– Spring MVC + Postman
Postman
Dépendance web
Cycle de Vie d’une requête HTTP (Spring Boot+Postman)
RestController
– TP Spring Boot + Spring Data JPA + Spring MVC (REST) + Postman
– Swagger
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
2
Introduction
• Un Conteneur de Servlets (Servlet container en anglais) ou Conteneur Web
(web container en anglais) est un logiciel qui exécute des servlets.
• Un ou une Servlet est une classe Java qui permet de créer
dynamiquement des données au sein d'un serveur HTTP.
•
Il existe plusieurs conteneurs de servlets, dont Apache Tomcat ou encore
Jetty. Le serveur d'application JBoss Application Server(Wildfly) utilise
Apache Tomcat.
• Nous allons nous intéresser au développent de la couche Web (Web
Services REST + Contrôleur + Service + Repository) dans ce cours.
• Nous allons aussi pratiquer la consommation des services par Postman.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
3
Spring WEB
• Plusieurs Projets Spring permettent d’implémenter des applications Web :
• Framework Spring (qui contient Spring MVC)
• Spring Web Flow (Implémenter les navigations Stateful).
• Spring mobile (Détecter le type de l’appareil connecté).
• Spring Social (Facebook, Twitter, LinkedIn).
• …
• Nous allons nos intéresser à Spring MVC.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
4
SPRING MVC
• Spring MVC est un Framework Web basé sur le design pattern MVC (Model
/ View / Controller).
• Spring MVC fait partie du projet “Spring Framework”.
• Spring MVC s'intègre avec les différentes technologies de vue tel que JSF,
JSP, Velocity, Thymeleaf...
• Spring MVC n’offre pas une technologie de vue mais permet en revanche
Publicité
de communiquer avec toutes les technologies web les plus performantes
tels que Angular, React, etc...
• Spring MVC est construit en se basant sur la spécification JavaEE : Java
Servlet.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
5
Spring MVC + Postman
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
6
Postman
• Parmi les nombreuses solutions pour interroger ou tester les webservices
et les API, Postman propose de nombreuses fonctionnalités, une prise en
main rapide et une interface graphique agréable.
• Postman permet de construire et d’exécuter des requêtes HTTP, de les
stocker dans un historique afin de pouvoir les rejouer.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
7
Postman
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
8
Dépendance web
• Le starter web permet d’ajouter toutes les dépendances liées à la partie
web notamment ceux liées à Spring MVC et l’exposition des web
services.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
9
Cycle de Vie d’une requête HTTP
(Spring Boot+Postman)
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
10
Url de notre Application Web
• Dans ce fichier de properties ajouter les lignes suivantes, pour définir l’url de
notre application :
#Server configuration
server.port=8089
server.servlet.context-path=/SpringMVC
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
11
RestController
@RestController
@RequestMapping("/client")
public class ClientRestController {
@Autowired
IClientService clientService;
// http://localhost:8089/SpringMVC/client/retrieve-all-clients
@GetMapping("/retrieve-all-clients")
@ResponseBody
Publicité
public List<Client> getClients() {
List<Client> listClients = clientService.retrieveAllClients();
return listClients;
}
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
12
TP - Spring : Boot – Core – Data JPA – MVC (REST)
• Nous allons commencer par exposer des Web Service REST : Spring :
Boot – Core – Data JPA – MVC (REST) -Postman
• Vous avez déjà créé un projet : Spring (Boot – Core – Data JPA)
avec un CRUD sur l’entité Client. Ce projet a été testé avec
JUnit.
• Nous allons reprendre le même projet et exposer ces méthodes
(CRUD) avec des Web Servie REST.
• Ces Web Services seront testé avec Postman.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
13
TP - Spring : Boot – Core – Data JPA – MVC (REST)
•
Installation de Postman :
• L’exécutable est sur le Drive du cours Spring (dossier Outils), à
télécharger et à installer.
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
14
TP - Spring : Boot – Core – Data JPA – MVC (REST)
• Vérifier que le fichier de properties contient les propriétés nécessaires (web,
base de données, log4j, …) :
#Server configuration
server.servlet.context-path=/SpringMVC
server.port=8089
DATABASE ###
spring.datasource.url=jdbc:mysql://localhost:3306/springDB?useUnicode=true
&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=
JPA / HIBERNATE ###
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
15
TP - Spring : Boot – Core – Data JPA – MVC (REST)
#logging configuration
Spécifier le fichier externe ou les messages sont stockés
logging.file=D:/spring_log_file.log
Spécifier la taille maximale du fichier de journalisation
logging.file.max-size= 100KB
Publicité
spécifier le niveau de Log
logging.level.root=INFO
Spécifier la forme du message
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %-5level - %logger{36} - %msg%n
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
16
TP - Spring : Boot – Core – Data JPA – MVC (REST)
• Créer les package tn.esprit.spring.control
• Créer le bean Spring ClientRestController annoté @RestController
• Créer les méthodes nécessaires pour exposer le CRUD (voir pages
suivantes) :
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
17
TP - Spring : Boot – Core – Data JPA – MVC (REST)
@RestController
@RequestMapping("/client")
public class ClientRestController {
@Autowired
IClientService clientService;
// http://localhost:8089/SpringMVC/client/retrieve-all-clients
@GetMapping("/retrieve-all-clients")
@ResponseBody
public List<Client> getClients() {
List<Client> listClients = clientService.retrieveAllClients();
return listClients;
}
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
18
TP - Spring : Boot – Core – Data JPA – MVC (REST)
// http://localhost:8089/SpringMVC/client/retrieve-client/8
@GetMapping("/retrieve-client/{client-id}")
@ResponseBody
public Client retrieveClient(@PathVariable("client-id") Long clientId) {
return clientService.retrieveClient(clientId);
}
// http://localhost:8089/SpringMVC/client/add-client
@PostMapping("/add-client")
@ResponseBody
public Client addClient(@RequestBody Client c)
{
Client client = clientService.addClient(c);
return client;
}
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
19
TP - Spring : Boot – Core – Data JPA – MVC (REST)
// http://localhost:8089/SpringMVC/client/remove-client/{client-id}
Publicité
@DeleteMapping("/remove-client/{client-id}")
@ResponseBody
public void removeClient(@PathVariable("client-id") Long clientId) {
clientService.deleteClient(clientId);
}
// http://localhost:8089/SpringMVC/client/modify-client
@PutMapping("/modify-client")
@ResponseBody
public Client modifyClient(@RequestBody Client client) {
return clientService.updateClient(client);
}
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
20
TP - Spring : Boot – Core – Data JPA – MVC (REST)
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
21
Liste des clients ( navigateur + Postman )
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
22
TP - Spring : Boot – Core – Data JPA – MVC (REST)
• Tester l’ensemble des méthodes exposées avec Postman
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
23
Exercice
NB : la relation Fournisseur-Produit est une
relation unidirectionnelle
© 2021-2022 – ESPRIT – ARCHITECTURE DES SI II SPRING – Spring Data JPA – 1ere Entité
24
Figure 1 : Diagramme de classes gestion
Magasin/Stock
Travail à faire
Spring MVC
Exposer les services implémentés dans la dernière séance avec Postman
pour les tester.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) étude de cas gestion magasin-stock
25
SPRING MVC
Si vous avez des questions, n’hésitez pas à nous
contacter :
Département Informatique
UP ASI
Bureau E204
© 2021-2022 – ESPRIT – Module Architecture des SI II Spring – Spring MVC
26