Ceci est une ancienne révision du document !
Spring MVC controller
Avec Spring MVC, un contrôleur comporte l'annotation @Controller. Il reçoit les requêtes Http en réponses aux RequestMappings définis grâce aux annotations et fournit une réponse Http
1 2 3 4 5 6 7 8 |
@Controller public class HelloController { @GetMapping ( "/hello" ) public @ResponseBody String index() { return "Hello world!" ; } } |
Request
Les annotations @RequestMapping et dérivées permettent de définir le routage :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@Controller @RequestMapping ( "/persons" ) class PersonController { @GetMapping ( "/{id}" ) public Person getPerson( @PathVariable Long id) { // ... } @PostMapping @ResponseStatus (HttpStatus.CREATED) public void add( @RequestBody Person person) { // ... } } |
Url définies :
- GET: /persons/1 ⇒ Affiche la personne d'id 1
- POST: /persons ⇒ Ajoute la personne passée en paramètre
- voir Request mapping
Injection de dépendance :
Certains objets, en fonction de leur type, ou grâce aux annotations, peuvent-être directement passés à une méthode de contrôleur.
Exemple : récupération de la requête HttpServletRequest
1 2 3 4 |
@GetMapping ( "/{id}" ) public Person getPerson( @PathVariable Long id, HttpServletRequest request) { // ... } |
- voir Methods arguments
Response
Affichage direct
Sans passage par une vue, la chaîne retournée constitue le response body.
1 2 3 4 |
@RequestMapping public @ResponseBody String index() { return "Hello World!" ; } |
Appel d'une vue
Par défaut, le String retourné correspond à un nom de vue (dans ce cas main/index.html à partir du dossier des templates défini dans application.properties):
1 2 3 4 |
@RequestMapping public String index() { return "main/index" ; } |