Il existe plusieurs écrans et servlets qui forment ensemble une application Web basée sur Java. Un JSP transmet le contrôle d'un servlet à un autre servlet ou à un JSP en utilisant deux méthodes: Forward et Redirect. La méthode Forward transfère une demande d'un servlet à une autre ressource d'une application Web. Cette ressource peut être un autre servlet, une page JSP ou un fichier HTML..
La méthode de redirection, par contre, redirige la demande vers une autre application. Vous ne pouvez pas faire cela avec une méthode de transfert. Si une redirection frappe une ressource différente dans la même application, elle utilise une URL différente de celle de la requête d'origine. Si vous ne souhaitez pas répondre à une demande, vous pouvez la rediriger vers une autre URL. Le navigateur envoie ensuite la nouvelle demande à l'URL fournie par vous. Cet article met en évidence quelques différences expliquant les deux méthodes en détail.
Dans les systèmes ou les applications Web, il est souvent nécessaire de transférer le contrôle entre différentes ressources ou JSP. Par exemple, si vous souhaitez passer une commande sur un site de commerce électronique, vous devez d'abord vous enregistrer avant de continuer. Si vous n'êtes pas encore inscrit à leur système, le panier d'achat devra peut-être transférer le contrôle sur le formulaire JSP responsable du processus d'enregistrement. L'action avancée est utilisée spécifiquement à cette fin. Il est utilisé pour transférer la demande d'un JSP à une autre ou à une autre ressource dans le même contexte..
Cette méthode est également utilisée pour transférer les demandes HTTP, mais contrairement à une transmission en aval, il s’agit d’un processus en deux étapes dans lequel la redirection s’effectue du côté client vers une application différente. La méthode de redirection redirige l'utilisateur vers une nouvelle URL. Le navigateur du client effectue automatiquement la nouvelle demande sur l'URL spécifiée dans l'en-tête de redirection provenant du serveur. Il nécessite une communication aller-retour avec le client, il est donc relativement plus lent qu'une transmission directe..
La méthode forward () est utilisée pour transférer la demande d'un JSP à un autre ou d'un JSP à un servlet, ou d'un JSP à une autre ressource dans une application Web. Le contrôle passe en interne par le conteneur et le navigateur / client n'est pas impliqué dans le processus. La méthode forward est déclarée dans le RequestDispatcher. La méthode SendRedirect () est déclarée dans HttPServletResponse et est utilisée pour rediriger la demande du client vers une autre URL disponible sur un serveur ou un contexte différent. Avec une redirection, vous pouvez rediriger le navigateur vers une application totalement différente..
L'une des principales différences entre les deux méthodes est que le conteneur Web gère tous les processus en interne en cas de forward () et que l'URL ne change pas dans le navigateur du client. Par conséquent, le client / navigateur n'est pas impliqué, les laissant totalement inconscients du fait que le l'action a déjà eu lieu. Dans le cas de SendRedirect (), la méthode définit les en-têtes et le contenu du corps appropriés pour rediriger la demande vers une autre URL et le navigateur se charge d'envoyer la nouvelle demande à l'URL visible par le client lorsque l'URL change dans le navigateur..
Lorsque la méthode forward () est exécutée au moment de la demande, la demande en cours est transférée vers une autre page JSP et le traitement du fichier JSP en cours est terminé. La demande peut être transmise à un servlet écrit dans le langage de programmation Java ou à une page HTML statique. Une requête SendRedirect () indique simplement au navigateur de passer à une autre URL et d'envoyer le contrôle d'exécution en dehors de l'application Web. Il utilise un processus en deux étapes pour indiquer à l'URL du navigateur de faire une autre demande qui transfère le contrôle au client..
Un forward () fonctionne sur le serveur et s'exécute plus rapidement qu'un SendRedirect (). Une redirection doit passer par le navigateur, puis attendre que le navigateur fasse une nouvelle requête HTTP. Une redirection amène le serveur à envoyer le code d'état de réponse HTTP 302 avec un en-tête d'emplacement contenant une nouvelle adresse URL au navigateur. Après avoir reçu le code d'état 302, le navigateur envoie une nouvelle requête à l'URL figurant dans l'en-tête d'emplacement. Cela nécessite une communication aller-retour avec le client, ce qui le rend relativement plus lent qu'un forward ().
Apprendre la différence entre les méthodes forward et redirect est l’une des parties les plus importantes pour les développeurs Java. Bien qu'un contrôleur puisse appliquer une méthode de transfert ou de redirection à la fin du traitement d'une demande, il a son propre ensemble d'utilisations. La plupart du temps, vous utiliserez une méthode forward () car elle est légèrement plus rapide qu'un SendRedirect (), ce qui nécessite en fait une communication aller-retour avec le client, ce qui la ralentit par rapport à un transfert. Eh bien, avec une redirection, vous pouvez diriger le navigateur vers une application différente. Cela ne peut pas être fait avec un forward. En résumé, un transfert fonctionne mieux lorsqu'un composant doit exécuter une logique métier et partager les résultats avec un autre composant, tandis qu'une redirection fonctionne mieux lorsque le client doit être redirigé d'une page à une autre..