RequestDispatcher
est obtenu en invoquant la méthode
getRequestDispatcher(String)
de la requête. Le chemin qui lui est passé en paramètre est un chemin relatif ou absolu, qui doit correspondre à une ressource se trouvant dans la même application web. Si ce chemin commence par un caractère
/
, alors il est considéré comme absolu, mais il ne peut pas référencer de ressource externe. La ressource désignée par ce chemin peut être statique (une image, ou un fichier), ou dynamique (une servlet).
Cet objet expose deux méthodes :
forward()
et
include()
. La première méthode redirige la requête vers la ressource désignée, la seconde inclut cette ressource dans la réponse courante. Ces deux méthodes prennent en paramètre la requête et la réponse courantes.
Exemple 22. Utilisation d'un request dispatcher pour rediriger une requête
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // construction d'un request dispatcher sur le chemin /process, qui doit exister // dans la web application courante RequestDispatcher requestDispatcher = request.getRequestDispatcher("/process") ; // redirection de la requête vers cette ressource requestDispatcher.forward(request, response) ; // cette servlet perd la main pour le traitement de la requête courante }
Exemple 23. Utilisation d'un request dispatcher pour inclure une ressource dynamique
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // construction d'un request dispatcher sur la page JSP, qui doit exister // dans la web application courante RequestDispatcher requestDispatcher = request.getRequestDispatcher("copyright.jsp") ; // inclusion de cette ressource requestDispatcher.include(request, response) ; // la traitement de la requête courante continue }