Spring MVC Controller: quelle est la différence entre “retour avant”, “retour redirection” et “retour fichier jsp”

Je ne comprends pas ce que je devrais utiliser. J’ai deux pages – intro.jsp (1) et booksList.jsp (2). Pour chaque page, j’ai créé une classe de contrôleur. La première page a un bouton qui ouvre la deuxième page:

La première question est la suivante: je ne suis pas sûr de la correction de ce bouton. Cela fonctionne bien, mais j’ai un point d’interrogation après avoir appuyé sur ce bouton.

La deuxième question est la suivante: lorsque j’appuie sur ce bouton, la méthode avec l’annotation suivante est appelée (contrôleur pour la deuxième page):

 @RequestMapping(value = "/books") @Controller public class BooksListController { @RequestMapping public Ssortingng booksList() { return "jsp/books/booksList"; } } 

Que dois-je retourner avec cette méthode? En d’autres termes, comment puis-je passer de la première page à la deuxième?

  1. return "redirect:/books"; returns http://localhost:8080/books?
  2. return "jsp/books/booksList"; returns http://localhost:8080/request-list?
  3. return "forward:/books"; returns http://localhost:8080/request-list?

Je vois que le résultat est le même: toutes ces chaînes m’ont donné la même page (la page 2 a été ouverte). Dans quels cas je devrais utiliser “redirect”, “forward”, “page.jsp”?

J’ai aussi lu l’article / redirect / obtenir l’article . Dois-je utiliser “redirect” après la gestion de la méthode POST?

La première question est la suivante: je ne suis pas sûr de la correction de ce bouton. Cela fonctionne bien, mais j’ai un point d’interrogation après avoir appuyé sur ce bouton.

Ok, c’est insérer un point d’interrogation parce que vous utilisez la méthode GET http. Vous devez utiliser la méthode POST pour transmettre les données dans la charge utile de la demande.


 return "redirect:/books"; 

Il retourne au client (navigateur) qui interprète la réponse http et appelle automatiquement l’URL de redirection

 return "jsp/books/booksList"; 

Il traite la JSP et envoie le code HTML au client

 return "forward:/books"; 

Il transfère la demande et appelle l’URL directement du côté serveur.


Pour décider lequel utiliser, vous devez considérer certains aspects de chaque approche:

Forward: est plus rapide, le navigateur client n’est pas impliqué, le navigateur affiche l’URL d’origine, la demande est transférée via l’URL transférée.

Redirect: est plus lent, le navigateur client est impliqué, le navigateur affiche l’URL redirigée, il crée une nouvelle demande à l’URL redirigée.