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 :

Redirection vers la même page jsp


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut Redirection vers la même page jsp
    Salut tout le monde.
    J'ai un probléme de redirection de page jsp : j'ai une page jsp qui contient un formulaire dans lequel je saisie des donnéés lorsque je clique sur le bouton valider une servlet se déclenche pour transmettre les donnéés et j'ai mis dans cette servlet ce bout de code pour rediriger vers la même page du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("/question.jsp").forward(request,response);
    mais la redirection ne se fait pas et une page blanche s'affiche. S'il vous plaît aidez moi à trouver une solution pour que la redirection se fait vers la meme page car j'ai besoin de revenir à cette page..
    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Salut patrios,

    Tu pourrait donner le code complet de ta Servlet ?
    Au cas où, tu pourrait donner aussi la code de la page qui apelle ta Servlet ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Merci.
    Une description bref de mon application: elle consiste à générer des qcm en ligne donc à partir d'une interface web elle enregistre les questions et les réponses dans un fichier xml. Puisque j'ai choisis de saisir chaque question et ses réponses dans une page web alors lorsque je clique sur le bouton valider je veux que la servlet s'exécute en appelant une fonction java et je veux me rediriger vers cette page avec des zones de textes vides pour que je puisse saisir les autres questions et c'est ça le probléme.
    Voici le code de ma servlet:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    package messervlets;
    import java.io.*;
    import java.net.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import mesclass.nom;
    import mesclass.modif;
     
    public class ajoutServlet extends HttpServlet {
           /** 
        * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
        * @param request servlet request
        * @param response servlet response
        */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
                 request.getRequestDispatcher("/question.jsp").forward(request,response);    
     
            } finally { 
                out.close();
            }
        } 
     
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /** 
        * Handles the HTTP <code>GET</code> method.
        * @param request servlet request
        * @param response servlet response
        */
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        } 
     
        /** 
        * Handles the HTTP <code>POST</code> method.
        * @param request servlet request
        * @param response servlet response
        */
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
            modif m=new modif();
            nom n=new nom();
            int a=n.getnbch();
            n.setlibelle(request.getParameter("libelle"));
          for(int i=1;i<=a;i++)
             {
            n.setreponse(request.getParameter("choix1"));
             }  
          n.setindexrep(Integer.parseInt(request.getParameter("indexrep")));
          n.setindexqest(Integer.parseInt(request.getParameter("indexqest")));
             try 
                {
                    m.Ajout(n);
                    System.out.println("Opération reussie!!!");                 
                } 
          catch (Exception exception) 
                {
                    //System.out.println(exception.setStackTrace(stackTrace));
                }
        }
     
        /** 
        * Returns a short description of the servlet.
        */
        public String getServletInfo() {
            return "Short description";
        }
        // </editor-fold>
    }
    Voici le code de la page jsp.
    NB:cette page récupére des donnéés d'une page d'acceuil (non de l'auteur,nombre de questions et nombre de réponses).
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     <jsp:useBean id="creer" scope="request" class="mesclass.nom"/>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Génération d'un QCM</title>
        </head>
        <body>
            <form id="form1" name="form1" method="post" action="ajoutServlet">
            <%@ page import="java.util.Date"%>
    <%! Date dateDuJour; %>
    <% dateDuJour = new Date();%>
    <b><p align="right"><%= dateDuJour %></p></b><BR> 
       <p>Qcm de :<%out.println(request.getParameter("nom"));%></p>
       <p>Saisissez les questions:</p>
      <p>
      <p>
      <%String q=request.getParameter("nbre");%>
      <%String a=request.getParameter("nbch");%>
      <%
      int qest=Integer.parseInt(q);
      int rep = Integer.parseInt(a);
      out.println("<p>");
      out.println("<label>");
      out.println("Question");
      out.println("<input name='libelle' type='text' id='libelle' />");
      out.println("</label>");
      for(int i=1;i<=rep;i++)
      {out.println("<p>");
      out.println("<label>");
      out.println("Choix"+i+"");
      out.println("<input name='choix"+i+"' type='text' id='choix"+i+"' />");
      out.println("</label>");
      out.println("La réponse est:");
       out.println("<label>");
       out.println("<input type='radio' name='menu"+i+"' value='vrai' />");
       out.println("Vraie");
       out.println("</label>");
       out.println("<label>");
       out.println("<input type='radio' name='menu"+i+"' value='faux' />");
       out.println("Fausse");
       out.println("</label>");
      out.println("</p>");
      }
      out.println("</p>");
      %>
       <p>
         <label>  
        <input type="submit" name="Submit" value="Valider" />
        </label>
          </p>  
    </form>
       </body>
    </html>
    Voici la classe java que le servlet faire référence:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    package mesclass;
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import java.util.List;
    import java.util.Iterator;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
     
    public class modif {
      private String fichierXml="C:/Program Files/glassfish-v2-b58g/domains/domain1/config/qcm.xml";  
      private Element racine ;
      private Document document;
    nom p=new nom();
    public boolean Ajout(nom p){
           try{
         lireFichier(fichierXml);
         modifier(p);
         enregistreFichier(fichierXml);
         return true;
         }catch(Exception e){}
         return false;
         }
     
     public void lireFichier(String fichier) throws Exception
    {
    SAXBuilder sxb = new SAXBuilder();
    document= sxb.build(new File(fichier));
    racine = document.getRootElement();
    }
     
    public void enregistreFichier(String fichier) throws Exception
    {
    XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    sortie.output(document, new FileOutputStream(fichier));
    }
     
    //////////////////////////////: cette methode permet de faire la mise à jour du question /////////////////////
    public void modifier(nom p){
       List listquestions = racine.getChildren("question");
         //On crée un Iterator sur notre liste
        Iterator i = listquestions.iterator();
       System.out.println("la taille de la liste est : "+listquestions.size());
     //  listquestions.get(2);
      while(i.hasNext())
       {
                Element courant = (Element)i.next();        
                         courant.getChild("libelle").setText(p.getlibelle());
              courant.getChild("reponse").setText(p.getreponse());
     
              return;
            }
     }
    }
    J'ai un autre probléme c'est je puisse pas naviger dans le fichier pour sauvegarder les questions car j'ai fais une autre calsse qui s'exécute en appyuant sur un bouton dans la page d'acceuil qui créé une arborescence vide xml selon le nombre de questions et réponses saisies toujours la derniére question et la derniére réponse se persiste en écrasant celle qui la précéde.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Juste une question, mais lorsque tu a appuyé sur le bouton, ton naviguateur d'indique quelle page ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Lorsque j'appui sur ce bouton une page blanche s'affiche et l'adreese qui s'affiche dans la barre d'adresse est:
    http://localhost:8080/pfaqcm/ajoutServlet

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Il y a une chose qui ne va pas dans ton code : il faut savoir qu'une fois le forward effectué, le flux de la réponse est terminé.
    Il ne faut donc pas mettre de code après un forward.
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Pardon je suis débutant, qu'est ce que je dois faire.

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Bon ,j'ai trouvé la solution :il faut déclarer les variables passés à la page question comme étant variables de session.

  9. #9
    Invité
    Invité(e)
    Par défaut
    c pas très propre du tout de faire ca

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

Discussions similaires

  1. Redirection vers la même page
    Par Konami15 dans le forum ASP
    Réponses: 6
    Dernier message: 27/09/2008, 12h33
  2. redirection systématique vers la même page
    Par samira84 dans le forum Struts 1
    Réponses: 30
    Dernier message: 12/06/2007, 14h59
  3. Redirection vers la même page après submit de formulaire
    Par noOneIsInnocent dans le forum Struts 1
    Réponses: 5
    Dernier message: 27/10/2006, 15h36
  4. redirection vers la bonne page
    Par PAYASS59 dans le forum Langage
    Réponses: 6
    Dernier message: 30/01/2006, 11h30
  5. iis redirection vers une autre page
    Par wodel dans le forum IIS
    Réponses: 1
    Dernier message: 03/01/2006, 15h36

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