Quelle est la différence entre les réponses.sendRedirect() et de la demande.getRequestDispatcher ().transmission (demande,réponse) [duplicata]
cette question a déjà une réponse ici:
- RequestDispatcher.forward () vs HttpServletResponse.sendredirect () 8 réponses
j'ai un problème avec mon saut de page quand J'utilise JAVA, si j'utilise:
response.sendRedirect("login.jsp")
ensuite je reçois cette url: http://localhost:8080/login.jsp
mais si j'utilise
request.getRequestDispathcer("login.jsp").forward(request, response)
puis je reçois cette url: http://localhost:8080/Shopping/login.jsp
(le" Shopping " est le nom de mon module).
quelle différence?
6 réponses
pour expliquer simplement la différence,
response.sendRedirect("login.jsp");
ne pré-exécute pas le chemin de contexte (se réfère à l'application/module dans lequel le servlet est empaqueté)
mais, alors que
request.getRequestDispathcer("login.jsp").forward(request, response);
préparera le chemin de contexte de l'application respective
de plus, Redirect request est utilisé pour rediriger vers des ressources vers des serveurs ou des domaines différents. Ce transfert de contrôle de la tâche est déléguée au navigateur par le conteneur. C'est-à-dire que la redirection renvoie un en-tête au navigateur / client. Cet en-tête contient l'url de la ressource à rediriger par le navigateur. Ensuite, le navigateur envoie une nouvelle requête à l'url donnée.
Avant de demander est utilisé pour transférer des ressources disponibles dans le serveur d'où l'appel est fait. Ce transfert de contrôle est effectué par le conteneur interne et navigateur / le client n'est pas en cause.
de l'avant
Le contrôlepeut être redirigé vers les ressources disponibles sur le serveur à partir duquel l'appel est passé. Ce transfert de contrôle est effectué par le conteneur interne et le navigateur / client n'est pas en cause. C'est la différence majeure entre forward et sendRedirect. Lorsque le forward est terminé, les objets request et response originaux sont transférés avec des paramètres supplémentaires si nécessaire.
rediriger
Le contrôle peut être redirigé vers des ressources vers différents serveurs ou domaines. Ce transfert de contrôle est délégué au navigateur par le conteneur. C'est-à-dire que la redirection renvoie un en-tête au navigateur / client. Cet en-tête contient l'url de la ressource à rediriger par le navigateur. Ensuite, le navigateur envoie une nouvelle requête à l'url donnée. Comme il s'agit d'une nouvelle requête, l'ancien objet request and response est perdu.
par exemple, sendRedirect peut transférer le contrôle de http://google.com à http://anydomain.com mais forward ne peut pas faire cela.
’ session ' n'est pas perdu à la fois en forward et en redirect.
pour sentir la différence entre forward et sendRedirect visuellement voir la barre d'adresse de votre navigateur, en avant, vous ne verrez pas l'adresse de redirection (depuis le navigateur n'est pas impliqué) dans redirect, vous pouvez voir l'adresse redirigée.
la simple différence entre Forward
(demande ServletRequest, réponse ServletResponse) et sendRedirect
(url String) est
forward ():
- la méthode
forward()
est exécutée du côté du serveur. - la requête est un transfert vers une autre ressource du même serveur.
- cela ne dépend pas du protocole de requête du client puisque le La méthode
forward ()
est fournie par le réservoir servlet. - La demande est partagée par la ressource cible.
- un Seul appel est consommé dans cette méthode.
- Il peut être utilisé à l'intérieur du serveur.
- nous ne pouvons pas voir le message transmis, il est transparent.
- la méthode forward() est plus rapide que la méthode
sendRedirect()
. - il est déclaré dans
RequestDispatcher
interface.
sendRedirect ():
- la méthode
sendRedirect()
est exécutée du côté du client. - la requête est un transfert vers une autre ressource vers un autre serveur.
- la méthode
sendRedirect()
est fournie sousHTTP
de sorte qu'elle ne peut être utilisée qu'avec les clientsHTTP
. - une nouvelle demande est créée pour la ressource de destination.
- deux appels de demandes et de réponses sont utilisés.
- Il peut être utilisé à l'intérieur et à l'extérieur du serveur.
- nous pouvons voir l'adresse redirigée, il n'est pas transparent.
- la méthode
sendRedirect()
est plus lente parce que lorsque la nouvelle requête est créée, l'objet de l'ancienne requête est perdu. - il est déclaré dans
HttpServletResponse
.
1.rediriger renvoyer la demande au navigateur de serveur,puis de renvoyer la demande au serveur à partir du navigateur.
2.avant d'envoyer la requête à une autre servlet (servlet de servlet).
Rediriger et Demande répartiteur sont deux méthodes différentes pour déplacer la forme d'une page à l'autre. si nous utilisons redirect vers une nouvelle page en fait une nouvelle requête se produit du côté du client lui-même vers la nouvelle page. donc nous pouvons voir le changement dans L'URL. Puisque la redirection est une nouvelle requête, les anciennes valeurs de requête ne sont pas disponibles ici.
redirection: renvoie la requête au navigateur/ client à partir du serveur,puis renvoie la requête au serveur à partir du navigateur/ client.
forward: envoyer la demande à un autre servlet (servlet to servlet) et ne pas envoyer la demande à un autre navigateur/ client .