-
[ servlet ] forward
Bonjour,
une petite question de debutant...
Lorsque, dans un filtre (javax.servlet.Filter), on veut rediriger la reponse vers un page donnee, je vois deux methodes:
((HttpServletResponse) response).sendRedirect(redirectPath);
et
((HttpServletRequest) request).getRequestDispatcher(redirectPath).forward(request, response);
Quelle est la difference entre les deux, svp? Et laquelle des deux methodes est precinisee et dans quels cas?
Merci!
-
Hello,
En gros c facile, le forward est fait 'en interne' par la servlet
Si tu regarde l'url de ton browser, quand tu fais un forward, elle ne change pas.
Le redirect, c'est une autre requête, il change l'url de ton browser et tu perds tout ce que tu avais en requête avant de le faire...
Pour faire un choix, ben c'est facile, demande toi si l'utilisateur appuye sur F5 ce que ça doit faire... Typiquement, si tu as un formulaire, quand le client fera un submit, tu feras un redirect à la fin de ta servlet, pour éviter que le client ne reposte une seconde fois ses info en appuyant sur F5 par exemple... Au contraire, si tu veux garder des infos dans ta requête, fais plutôt un forward... (aussi, c'est assez logique, le forward est bcp plus 'léger' qu'un redirect... enfin voilà quoi :-) c'est peut-être pas super clair mais j'espère que ça t'auras aidé un peu qd meme ;-)
-
Si si c'est tres clair. merci beaucoup!
Pi2.