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
@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 :
@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
@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.
@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):
@RequestMapping
public String index() {
return "main/index";
}
voir Return values