Le langage de programmation Java est largement utilisé pour la programmation sur le bureau , mobile et les environnements de serveurs . Lorsqu'un utilisateur envoie les données d'un formulaire ou clique sur le lien vers une adresse Web , les programmeurs Java peuvent utiliser la classe Servlet pour déterminer comment l'application côté serveur répond à cette demande . Une servlet peut apporter des réponses à travers la réorientation et la transmission . Il est important pour les programmeurs Java pour comprendre la similitude et les différences entre les deux méthodes , et de savoir lequel utiliser en fonction de leurs besoins. Similitude
deux acheminement et la réorientation fournit un moyen qui permet à un servlet Java pour transférer le traitement des données de l'utilisateur à un autre contrôleur dans une application Web. Dans le modèle Model-View -Controller qui est couramment utilisé pour les applications Web Java , un contrôleur peut interagir avec d'autres contrôleurs et gère les interactions entre les vues et les modèles . Habituellement, un contrôleur est un autre servlet Java, mais il peut aussi s'agir d'une page JSP.
Différences
L' action de transmission est effectuée sur le côté serveur et est transparente pour le navigateur Web sur le côté client . Cela signifie que l' URL dans la barre d'adresse du navigateur Web ne changera pas lorsque le transfert a lieu. En revanche , l'action redirection se fait sur le côté client . Rediriger se passe en deux étapes depuis le serveur doit charger le navigateur Web sur le côté client pour aller chercher une autre adresse qu'il est redirigé vers . En conséquence, l'URL dans la barre d'adresse va changer après redirection. En outre , le transfert ne peut se faire vers une autre URL située en dehors de l'application Web tout en réorientant peut être fait pour les sites situés n'importe où .
Usages
Forwarding utilise le classe RequestDispatcher qui est obtenue à partir du procédé de l' servlet " ) getServletContext ( " . Pour l'avenir, la méthode " forward () " de la " classe RequestDispatcher s'appelle Par exemple , le code suivant transmet la réponse à une autre page appelée result.jsp : .
Cordes destination =" /WEB -INF /pages /result.jsp " ;
RequestDispatcher rd = getServletContext () getRequestDispatcher (destination) ; .
rd.forward ( request, response );
Redirection utilise l' " sendRedirect ()" méthode de l'objet de réponse , qui est obtenu à partir de la classe de servlet courant Par exemple , le code suivant va rediriger la réponse à une autre page appelée destination.jsp : .
cordes destination = " /jsp /destination.jsp " ;
response.sendRedirect ( response.encodeRedirectURL (destination) ) ;
Considérations
L'opération de redirection est légèrement plus lent que transmettre parce que le navigateur Web doit effectuer deux opérations pour récupérer l'adresse avant et après la redirection . Par ailleurs , tous les objets transmis dans le cadre de la demande initiale sont encore disponibles lors de la transmission mais sera perdu au cours de redirection. Par conséquent , la redirection doit être utilisé lorsque le navigateur est autorisé à recharger l'adresse résultante après redirection. Dans d'autres cas , le transfert doit être utilisé.