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 :

[getRequestDispatcher] de post à get (et vice versa)


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut [getRequestDispatcher] de post à get (et vice versa)
    Bonjour,

    j'ai un servlet sous-classe de HttpServlet.
    J'ai redéfini doGet et doPost pour gérer les requêtes respectives.
    Dans doPost, j'appelle une méthode qui peut (selon le contexte) rediriger la requête vers un autre serlvet sous-classe de HttpServlet
    dont je n'ai redéfini que la méthode doGet (et dont je voudrais ne pas redéfinir doPost pour que les requêtes 'post' soient refusées).

    Savez-vous comment je peux faire ?
    Est-ce qu'un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.getRequestDispatcher().forward(requete, reponse);
    fonctionnera ?
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getServletContext().getRequestDispatcher(urlmapping).forward(request, response);
    Oui, celà doit suffir mais attention,cette méthode ne déclenche pas de requete. Seule la sortie de ta méthode doGet ou doPost le feras.
    Fais la bien suivre d'un return; au cas ou !
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  3. #3
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Merci...
    Je voulais être sûr
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    Bonjour
    Je débute en J2EE et j'aurai une petite question concernant le "getRequestDispatcher".

    J'ai une servlet "Controle" qui sert de controleur (comme son nom l'indique) entre différents jsp.

    Voila comment se présente mon code (je l'ai décomposé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ServletContext sc = getServletContext();
    RequestDispatcher deleg;
     
    deleg = sc.getRequestDispatcher("/WEB-INF/JSPs/Login.jsp");
    deleg.forward(request, response);
    A priori cela marche, je passe bien entre mes pages.... mais ça génère une exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    GRAVE: "Servlet.service()" pour la servlet Controle a généré une exception
    java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:313)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    	at agendaWeb.servlets.Controle.recuperation(Controle.java:148)
    	at agendaWeb.servlets.Controle.doGet(Controle.java:39)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Unknown Source)
    A noter que j'utilise les méthodes doGet et doPost dans lesquelles je place: "recuperation(request, response)"
    et ensuite je crée une classe "recuperation (HttpServletRequest request, HttpServletResponse response)" dans laquelle je place tous mes tests sur les pages.

    Est-ce que je fais quelque chose à l'envers?
    A quoi peut être due cette exception d'après vous?

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Salut
    dans recuperation(request, response) tu as plusieurs foward ???
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    oui effectivement, j'ai plusieurs forward, mais ils ne sont pas au même niveau.

    Je fais différents tests, du genre:
    si choix==1 alors forward vers page1
    si choix==2 alors forward vers page2
    sinon forward vers page 3

    Le transfert entre les pages se fait, y a pas de souci au niveau du navigateur, mais la génération d'erreur dans la console me chagrine

  7. #7
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Moi j'ai déjà eu cette erreur ...

    qd tu as ce message (d'ailleurs explicite, je crois)
    c'est que il y a un appel à un autre foward alors que tu as déjà fowardé ...

    Vérifie bien tes fowards, cela se trouve c super bête (comme d'hab quoi ...)

    Ou alors donnes le code, pour en savoir plus ... ce soir
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

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

Discussions similaires

  1. [SimpleXML] Comment passer de XML à MySQL et vice-versa avec PHP ?
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/12/2005, 21h42
  2. Passer d'un fichier Excel vers mon PRG VB et vice versa
    Par DAN68 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2005, 13h42
  3. [post get javascript]
    Par agougeon dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 10/10/2005, 18h22
  4. [PyMedia] Decomposer un film en image ...et Vice versa
    Par parp1 dans le forum Programmation multimédia/Jeux
    Réponses: 3
    Dernier message: 19/06/2005, 15h23
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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