IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Questions sur forward(), sendRedirect() et HttpServletResponse


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut Questions sur forward(), sendRedirect() et HttpServletResponse
    Bonjour,


    Je suis débutant en JEE et je me pose plusieurs questions sur les méthodes forward() et sendRedirect().


    1. Je me sers de la ligne de code suivante pour me rediriger vers mes fichier JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("page.jsp").forward(request, response);
    Dans mon fichier JSP je peux me servir de l'objet request, mais comment est-ce possible ?
    Comment l'objet request peut-t-elle être reconnu hors de la Servlet, dans mon fichier JSP, alors qu'elle n'est déclarée que dans la Servlet ?


    2. Dans mes fichiers JSP, je me suis essentiellement servit de l'objet request mais jamais de l'objet response, dans quel cas se sers-t-on de response ? Quel est son rôle ?


    3. Malgré le fait que j'ai cherché à faire la différence entre forward() et sendRedirect(), je n'ai pas compris l'intérêt de sendRedirect().
    J'ai juste lu que forward() était plus performant que sendRedirect().
    Dans quels circonstances doit-t-on impérativement utiliser sendRedirect() ?


    4. Si on pouvait faire une comparaison entre les méthodes JEE forward() / sendRedirect() et la fonction de redirection header() en PHP, quel méthode JEE serait la plus proche de la fonction PHP, pourquoi ?



    Je vous remercie pour vos réponses.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Bonjour,

    Je suis pas expert java mais bon je vais essayer de te dire ce que je crois avoir compris de cela.

    Tout d'abord parlons un peut de httpRequest et httpResponse :

    HttpRequest porte bien son nom il permet de rediriger et recuperer des variables que tu envoi par exemple a ta page jsp. donc en clair la plupart des action redirection, recupération se font grâce a httpRequest.

    Au contraire HttpResponse concerne par exemple avec la fonction getWriter() l'affichage dans ta page de varaible ou de texte.

    Ensuite httpRequest.getRequestDispatcher("/monchemin").forward(HttpRequest, httpResponse)

    permet de te rediriger vers une autre page. mais chose qu'il faut bien comprendre avec le forward c'est que la page sur laquelle tu travail sera plus "active". en clair imaginons que tu veuille faire un traitement particulier et que cela est fait dans une autre page n'utilise pas foward mais plus include() par exemple. Mais retiens surtout que le forward c'est quand tu veux rediriger vers une autre page.

    pour ton dernier point la je suis moins sure mais a mon avis foward = sendredirect().

    J'éspère avoir répondu un peu a ta question.

  3. #3
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    non forward n'est pas la meme chose que sendredirect

    forward : tout se passe coté server, tu indiques que tu veux continuer le traitement ailleurs (eventuellement un autre controller ou une autre jsp). Le navigateur de voit rien. Si l'url demandée etait /plop.do tu auras a la fin /plop.do meme si tu as passé plein de forward.

    SendRedirect renvoi un Code HTTP 302 au navigateur avec une location qui lui indique d'aller vers une autre url.
    donc a la fin, tu as dans le navigateur une autre url que celle de depart.

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    ok j'avais un doute la-dessus

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Globalement, lorsque tu soumets une requête à un serveur via http, 2 objets sont créés, request + response.
    Le premier sert à transporter les informations de la requête, le second à répondre (comme quoi, les noms sont bien trouvés)
    Jusqu'à la fin de la réponse, le request est actif.

    Pour simplifier la différence entre un forward et un sendRedirect, je dirais que le sendRedirect permet de demander au client (browser) d'aller chercher son résultat à une url donnée, donc, on a un double aller/retour entre le client et le serveur. Dans ce cas, on a également un nouveau Request (pour le 2ème) et tout ce qui était passé par le premier est perdu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Je vous remercie pour vos réponses.

    En effet, il y a une différence entre forward et sendRedirect. Pour clore ce sujet je vais répondre à mes propres questions :
    1. Une JSP est intimement liée à une servlet. En fait, une fois la compilation effectuée, la JSP devient une servlet.
    Donc l'objet request, et session par exemple, sont accessibles dans une JSP.

    2. On peut se servir de l'objet response, lorsqu'on veut directement écrire le contenu de la page (ou modifier l'en-tête HTTP) sans utiliser de JSP, ça peut être utile lorsqu'on qu'on fait de l'AJAX aussi.

    3. Il n'y a pas de cas où le sendRedirect est obligatoire. sendRedirect effectue un échange supplémentaire entre le serveur et le client contrairement à forward. Tout ce qu'il faut savoir, c'est que ça existe et que c'est ainsi. Ça fait à la fois parti des richesses et du surplus de la technologie JSP/Servlet.

    4. Il n'y a pas vraiment d'équivalent avec PHP pour la fonction sendRedirect. Si on respecte le modèle MVC, on pourrait dire qu'un forward en JSP/Servlet, c'est comme un "include" de View.php à la dernière instruction du Controller (bon je ne sais pas si j'ai bien réussi à exprimer ce que je pense).


    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo