sendRedirect()
la méthode redirige la réponse vers une autre ressource. Cette méthode permet en fait au client (navigateur) de créer une nouvelle requête pour accéder à la ressource. Le client peut voir la nouvelle URL dans le navigateur.
sendRedirect() accepte l’URL relative, il peut donc aller chercher des ressources à l’intérieur ou à l’extérieur du serveur.
Servlet: sendRedirect() et Dispatcher de demandes
La principale différence entre une redirection et une distribution de demandes est que, la redirection oblige le client (navigateur) à créer une nouvelle demande pour accéder à la ressource, l’utilisateur peut voir la nouvelle URL tandis que la distribution de demandes obtient la ressource dans la même demande et l’URL ne change pas.
En outre, une autre différence très importante est que sendRedirect() fonctionne sur l’objet de réponse tandis que la répartition des demandes fonctionne sur l’objet de demande.
Exemple démontrant l’utilisation de sendRedirect()
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { response.sendRedirect("https://www.studytonight.com"); } finally { out.close(); } }}
Différence entre forward() et sendRedirect()
forward() | sendRedirect() |
---|---|
Cela fonctionne côté serveur. | Cela fonctionne côté client. |
Il envoie toujours le même objet de requête et de réponse. | Il envoie toujours une nouvelle requête pour l’objet. |
Cela ne fonctionne qu’au sein du serveur. | Il fonctionne à la fois à l’intérieur et à l’extérieur du serveur. |
Dans cette méthode, tout le traitement est géré par le conteneur Web en interne. | Dans cette méthode, tout le traitement est géré par un autre servlet. |
C’est plus rapide. | C’est plus lent. |
L’utilisation de l’adresse de la méthode forward() peut être vue dans la barre d’adresse. | L’adresse de la méthode forward() n’est pas visible dans la barre d’adresse. |
L’interface RequestDispatcher est utilisée pour la déclaration. | HttpServletResponse est utilisé pour la déclaration. |
Il est très utile dans le modèle de conception MVC pour masquer l’accès direct. | Il n’est pas utile dans le modèle de conception MVC de masquer l’accès direct. |
Il réutilise l’objet. | Il ne réutilise pas l’objet. |
Exemple : demande.getRequestDispacher(« servlet_1 »).forward (réponse à la demande); | Exemple : réponse.sendRedirect(« Servlet_1 »); |