1.RequestDispatcher.forward()
fonctionne côté serveur. Lors de l'utilisation de forward(), le moteur de servlet transmet la requête HTTP du servlet ou du JSP actuel vers un autre servlet, JSP ou fichier HTML ordinaire, c'est-à-dire que votre formulaire est soumis à a.jsp, forward() est utilisé dans a.jsp pour rediriger vers b.jsp. À ce stade, toutes les informations soumises par le formulaire peuvent être obtenues dans b.jsp et les paramètres sont automatiquement transmis.
Cependant, forward() ne peut pas rediriger vers un fichier jsp avec un frame. En même temps, forward() ne peut pas être transmis avec des paramètres à la fin, tels que servlet?name=frank. . Si cela ne fonctionne pas, vous pouvez transmettre la réponse dans le programme.setAttribute("name",name) pour passer à la page suivante.
L'
URL de la barre d'adresse du navigateur reste inchangée après la redirection.
Le contenu du code est généralement utilisé dans les servlets, pas dans les jsp.
public void doPost (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException,IOException ...{
réponse.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcherrd = null ;
rd = sc.getRequestDispatcher("/index.jsp"); //Page dirigée
rd.forward (demande, réponse);
}
2.response.sendRedirect()
Cela fonctionne sur le navigateur de l'utilisateur. sendRedirect() peut transmettre des paramètres, tels que servlet?name=frank, à la page suivante. En même temps, il peut rediriger vers différents hôtes et rediriger les images.
Après la redirection, l'URL de la page redirigée apparaîtra dans la barre d'adresse du navigateur.
Exemple : Redirection dans le servlet
Contenu du code
public void doPost (requête HttpServletRequest, réponse HttpServletResponse)
renvoie
ServletException, IOException ...{
réponse.setContentType("text/html; charset=gb2312")
;
Puisque la réponse est un objet implicite dans la page jsp, réponse.sendRedirect() peut être utilisée pour implémenter directement la relocalisation dans la page jsp.
Remarque :
(1) Lors de l'utilisation de Response.sendRedirect, il ne peut pas y avoir de sortie HTML devant.
Ce n’est pas absolu. Aucune sortie HTML signifie en réalité qu’aucun code HTML ne peut être envoyé au navigateur. En fait, les serveurs d'aujourd'hui ont un mécanisme de cache, généralement 8K (je veux dire JSP SERVER). Cela signifie qu'à moins que vous ne désactiviez le cache ou que vous utilisiez out.flush() pour forcer une actualisation, avant d'utiliser sendRedirect, une petite quantité. de sortie HTML est également autorisé.
(2) Après .response.sendRedirect, il doit être suivi d'un retour ;
nous savons déjà que réponse.sendRedirect est redirigé via le navigateur, il n'y aura donc aucune action réelle tant que le traitement de la page n'est pas terminé. Maintenant que vous avez déjà effectué le pilotage, quelle est la signification du résultat final ? Et il est possible que la direction échoue en raison de la sortie ultérieure.
Comparer:
(1).Request Dispatcher.forward() est la redirection du contrôle dans le conteneur, et l'adresse redirigée ne sera pas affichée dans la barre d'adresse du navigateur client ;
(2).response.sendRedirect() est un saut complet. Le navigateur obtiendra l'adresse de saut et renverra le lien de demande. De cette façon, l'adresse du lien après le saut peut être vue dans la barre d'adresse du navigateur.
Le premier est plus efficace. Lorsque le premier peut répondre aux besoins, essayez d'utiliser la méthode RequestDispatcher.forward().
Remarque : dans certains cas, par exemple, si vous devez accéder à une ressource sur un autre serveur, vous devez utiliser la méthode RequestDispatcher.forward()
.Méthode HttpServletResponse.sendRequest().
3.
La partie sous-jacente est implémentée par RequestDispatcher, elle porte donc l'empreinte de la méthode RequestDispatcher.forward(). S'il y a beaucoup de sortie avant
Notez également : il ne peut pas modifier l'adresse du navigateur. L'actualisation entraînera des soumissions répétées.
4. Modifiez l'attribut Location de l'en-tête HTTP à rediriger.
Redirigez la page en modifiant directement la barre d'adresse.
Le code du fichier jsp est le suivant :
Contenu du code : 5. JSP implémente la redirection automatique vers une autre page après être resté sur une certaine page pendant quelques secondes.
Dans le fichier html, le code suivant :
Ce que cela signifie : Après 5 minutes, la page que vous parcourez deviendra automatiquement la page target.html. 300 dans le code correspond au délai de rafraîchissement en secondes. target.html est la page cible vers laquelle vous souhaitez rediriger. S'il s'agit de cette page, elle actualisera automatiquement cette page.
Comme le montre ce qui précède, vous pouvez utiliser setHeader pour rediriger automatiquement vers une autre page après être resté sur une page pendant quelques secondes.
Code clé :
Contenu du code
<%
réponse.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
Chaîne newLocn = "/newpath/jsa.jsp";
réponse.setHeader("Emplacement",newLocn);
%>
Chaîne content=stayTime+";URL="+URL;
réponse.setHeader("REFRESH",content);