9 - Spring MVC - REST
9 - Spring MVC - REST
UP ASI
Bureau E204
– Spring MVC
• Spring MVC est un Framework Web basé sur le design pattern MVC (Model
/ View / Controller).
• Spring MVC s'intègre avec les différentes technologies de vue tel que JSF,
JSP, Velocity, Thymeleaf...
• Spring MVC s'intègre avec les autres Frameworks Web tel que JSF, Struts, ...
• DispatcherServlet
• Controller
• Model
• View
• ViewResolver
• DispatcherServlet joue le rôle du “Front Controller”. Le bean Spring que vous créez
et qui est annoté @Controller est le “Controller”.
@Autowired
IUserService userService;
@RequestMapping("/sayHello")
public String welcome(Map<String, Object> model, @RequestParam("myName") String
name) {
model.put("receivedName", name);
return "helloPage";
}
• Une View (Vue) génère un output web, c.à.d., du code compréhensible par le
navigateur.
• Exemple de technologie de vue : JSF, JSP, Velocity, Thymeleaf.
@EnableWebMvc
@ComponentScan(basePackages={"…", "…"})
public class MvcConfig {
@Bean
public ViewResolver simpleViewResolver(){
InternalResourceViewResolver vr = new InternalResourceViewResolver();
vr.setPrefix("/views/"); //Relatif a webapp
vr.setSuffix(".jsp");
return vr;
}
}
• Avec Spring Boot, il suffit d mettre à jour application.properties (pas besoin de créer le bean
de configuration MvcConfig ci-dessus) :
• #Web configuration
• spring.mvc.view.prefix=/views/
• spring.mvc.view.suffix=.jsp
• Dans ce fichier de properties ajouter les lignes suivantes, pour définir l’url de
notre application :
• #http://localhost:8081/SpringMVC/servlet/sayHello?myName=Walid
• #Server configuration
• server.port=8081
• server.servlet.context-path=/SpringMVC
• spring.mvc.servlet.path=/servlet
• Exemple : http://localhost:8081/SpringMVC/servlet/sayHello
• Nous allons commencer par exposer des Web Service REST : Spring :
Boot – Core – Data JPA – MVC (REST)
• (Par la suite, nous allons étudier les JSF, et donc nous allons pouvoir à
ce moment là créer une application une complète : Spring : Boot –
Core – Data JPA – MVC (JSF)).
• Vous avez déjà créé un projet : Spring (Boot – Core – Data JPA)
avec un CRUD sur l’entité User. 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.
• Installation de Postman :
• Vérifier que le fichier de properties contient les propriétés nécessaires (web, base
de données, log4j, …) :
• #http://localhost:8081/SpringMVC/servlet/sayHello?myName=Walid
• #Server configuration
• server.servlet.context-path=/SpringMVC
• spring.mvc.servlet.path=/servlet
• server.port=8081
• #Web configuration
• spring.mvc.view.prefix=/views/
• spring.mvc.view.suffix=.jsp
• #logging configuration
• logging.file=C:\logs\springboot.log
• logging.level.root=INFO
• logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %-5level - %logger{36} - %msg%n
• @RestController
• public class UserRestControlImpl {
• @Autowired
• IUserService userService;
•
• // http://localhost:8081/SpringMVC/servlet/retrieve-all-users
• @GetMapping("/retrieve-all-users")
• @ResponseBody
• public List<User> getUsers() {
• List<User> list = userService.retrieveAllUsers();
• return list;
• }
• // http://localhost:8081/SpringMVC/servlet/retrieve-user/{user-id}
• @GetMapping("/retrieve-user/{user-id}")
• @ResponseBody
• public User retrieveUser(@PathVariable("user-id") String userId) {
• return userService.retrieveUser(userId);
• }
• // http://localhost:8081/SpringMVC/servlet/remove-user/{user-id}
• @DeleteMapping("/remove-user/{user-id}")
• @ResponseBody
• public void removeUser(@PathVariable("user-id") String userId) {
• userService.deleteUser(userId);
• }
•
• // http://localhost:8081/SpringMVC/servlet/modify-user
• @PutMapping("/modify-user")
• @ResponseBody
• public User modifyUser(@RequestBody User user) {
• return userService.updateUser(user);
• }
Département Informatique
UP ASI
Bureau E204