Un objet de type 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 3.6. 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 3.7. 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 }