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 :

RequestDispatcher sur un servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut RequestDispatcher sur un servlet
    Bonjour,
    J'ai une page html et un servlet.
    Le formulaire de ma page html envoie au servlet des paramètres, lequels redirige vers une autre page html,si le client n'a pas rentrer le bon email
    , parcequ'il ne c'est pas enregistré. Mais mon soucis c'est que ça me renvoie une page blanche ?
    Le fichier html:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Site de maintenance -</title>
    <style type="text/css">
            #formulaire {
            border-width:thin;
            width:80%;
            border:1px dashed red;
            padding-right:20px;
            background-color :#FFF;
            
            }
            h1{
            margin:0 0 0 50px;
            color:gray;
            font:arial;
            }
            h2{
            color:green;
            }
    </style>
    </head>
    <body><center>
     
    <form action="/ProjetIteration1/TechSupportServlet" method="post" ><br>
    <div id="formulaire">
    <h1>Support technique</h1>
    <br><br />
    <table style="width:700px;">
    <tr>
    	<td ALIGN="right">Email :</td>
    	<td><input type='text'name="mail" ALIGN="left" size="30"/></td>
    </tr>
    <tr>
    	<td ALIGN="right">Logiciel : </td>
    	<td><select name='logiciel'>
    				<option value='excel'>Microsoft Excel</option>
    				<option value='word'>Microsoft Word</option>
    				<option value='powerpoint'>Microsoft PowerPoint</option>
    			</select></td>
    	<td ALIGN="right">Systeme d'exploitation : </td>
    	<td><select name='os' size="1">
    					<option value='linux'>Linux</option>
    					<option value='windows'>Windows XP</option>
    					<option value="MacOS">Mac Os</option>
    				</select></td>
    </tr>
    </table> 
    <h2>
    Description du probleme : <br>
    <textarea name="probleme" cols="50" rows="10" wrap="virtual"></textarea><br>
    </h2>
    <input type="submit" value="Soumettre la requete" /><br><br>
    </div>
    </form> 
    </body>
    </html>
    Mon servlet qui devrai rediriger Mais qui affiche une page blanche, comme neige.
    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
    76
    77
    78
    79
    80
     
    package ProjetIteration;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.UnavailableException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
     public class TechSupportServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet 
     {
       String userName,password,mailF,logicielF,systemeF,problemeF;
       String protocol;
    	 private String urlConnection = "jdbc:mysql://localhost:3306/frontal";
    	 private String loginConnection = "root";
    	 private String passConnection = "xav";
     
    	 public void init()
    	 {
    		 try {
    			 Class.forName("com.mysql.jdbc.Driver");
    			 System.out.print("Driver JDBC chargé");
    		 }
    		 catch (ClassNotFoundException e) {
    			 System.out.print(e.toString());
    		 }
    	 }
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException {
     
    		mailF=request.getParameter("mail");
    		logicielF=request.getParameter("logiciel");
    		systemeF=request.getParameter("systeme");
    		problemeF=request.getParameter("probleme");
    		try{
    			Connection con=DriverManager.getConnection(protocol,userName,password);
    			//System.out.println("got connection");
    			//initialisation de la session
    			HttpSession session=request.getSession(true);
    			session.setAttribute("mail",new String(mailF));
    			session.setAttribute("logiciel",new String(logicielF));
    			session.setAttribute("systeme",new String(systemeF));
    			session.setAttribute("probleme",new String(problemeF));
     
    			Statement s=con.createStatement();
     
    			String sql="select mail from user where mail='"+mailF+"'"; 
    				System.out.println(sql);
    				Statement req=con.createStatement();;
    				ResultSet result=req.executeQuery(sql);
    				if (result.next())
    				{
    					System.out.println("Ok , je t'ai trouve");
    					RequestDispatcher rd=request.getRequestDispatcher("/ReponseServlet");
    					rd.forward(request,response);
    				}
    				else
    				{
    					System.out.println("Le profile n'existe pas");					
    					RequestDispatcher rd=request.getRequestDispatcher("/ProjetIteration/register.html");
    					rd.forward(request,response);
    				}
    				req.close();
    				con.close();
    		}
    		catch(SQLException e){
    			String message="Error."+e.toString();
    		}
    	}
    }
    Merci

    EDIT ->
    Par ailleurs j'ai essayé : [toujours pas de redirection, mais la page blanche]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    				if (result.next())
    				{
    					System.out.println("Ok , je t'ai trouve");
    					response.sendRedirect("/ProjetIteration/ReponseServlet");
    					//getServletContext().getRequestDispatcher("/ProjetIteration/ReponseServlet").forward(request,response);
    				}
    				else
    				{
    					System.out.println("Le profile n'existe pas");
    					response.sendRedirect("/ProjetIteration/register.html");
    					//getServletContext().getRequestDispatcher("/ProjetIteration/register.html").forward(request, response);
    				}

  2. #2
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut
    bonsoir,
    pas ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String sql="select mail from user where mail='"+mailF+"'";
    mais plutot ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String sql="select mail from user where mail='"+mailF+"';";
    EDIT:le point virgule à ajouter, ta requete ne s'execute pas, donc pas de resultat!

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Points : 386
    Points
    386
    Par défaut
    Si une page blanche est retournée sans erreur c'est que tu as un pb de lien.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Est-ce que "ReponseServlet" est enregistrée dans le web.xml ?

    Si le nom de ton contexte est "ProjetIteration", tu dois mettre directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("/ReponseServlet").forward(request, response);

  5. #5
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    Edit ->
    j'ai trouvé, le problème venait des variable de connection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	 private String urlConnection = "jdbc:mysql://localhost:3306/frontal";
    	 private String loginConnection = "root";
    	 private String passConnection = "xav";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Par contre j'ai une exception :
    Etat HTTP 500 -
    message
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
    exception
    java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:433)
    	ProjetIteration.TechSupportServlet.doPost(TechSupportServlet.java:75)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note
    Je ne vois pas là non plus d'ou vient le soucis ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Affiche toute la trace des exceptions, c'est le meilleur moyen de voir exactement d'où vient le pb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch(SQLException e){
        String message="Error."+e.toString();
        e.printStackTrace();
    }

  7. #7
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    ok merci pour l'info je connaissait pas, je débute complétment...

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par artotal Voir le message
    exception
    java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:433)
    ProjetIteration.TechSupportServlet.doPost(TechSupportServlet.java:75)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Il semblerait qu'une sortie est déjà été faite sur "response" avant ton sendRedirect...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    ça veux dire que je ne peux imprimer dans la console aucun system.out.print...
    avant la redirection ?
    J'utilise RequestDispatcher req =getRequestDis...
    Sa semble mieux et ça fonctionne, mais je ne comprend pas bien les finesses...
    j'ai la hantise de la page blanche

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ce n'est pas le System.out.println qui pose problème...
    Ce qui est le plus utilisé, c'est le RequestDispatcher... donc, pas de soucis, ça fonctionne très bien.
    Pour le sendRedirect, il faudrait peut-être examiner le code complet de la servlet, et éventuellement, de l'objet qu'elle étend (si besoin)
    Peux-tu montrer tout ça ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    Ma première vue fonctionne mais ou sa coince c'est au niveau redirection :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Enregistrement du client -</title>
    <style type="text/css">
            #formulaire {
            border-width:thin;
            width:80%;
            
            border-style:solid;
            border-color:gray;
            padding-right:20px;
            background-color :yellow;
            
            }
            h1{
            margin:0 0 0 50px;
            color:gray;
            border-bottom:3px solid black;
            }
            h2{
            color:green;
            }
    </style>
    </head>
    <body><center>
     
    <form action="/ProjetIteration1/RegisterServlet" method="post" ><br>
    <div id="formulaire">
    <img src="http://localhost:8080/ProjetIteration1/Images/image1.jpg" alt="assistance technique"/>
    <h1>Enregistrement du client</h1>
    <br><br>
    <h4>Informations requises</h4>
    <table style=" width : 700px;">
    <tr>
    	<td ALIGN="right">Email : </td>
    	<td><input type='text'name="mail"  /></td>
    </tr>
    <tr>
    	<td ALIGN="right">Pseudo :</td>
    	<td><input type='text'name="pseudo"/></td>
    </tr>
    <tr>
    	<td ALIGN="right">Mot de passe :</td>
    	<td><input type='text'name="motPasse"/></td>
    </tr>
    <tr>
    	<td ALIGN="right">Confirmez votre mot de passe :</td>
    	<td><input type='text'name="confirmPasse"/></td>
    </tr>
    <tr>
    	<td ALIGN="right">Prenom :</td>
    	<td><input type='text'name="prenom"/></td>
    </tr>
    <tr>
    	<td ALIGN="right">Nom :</td>
    	<td><input type='text'name="nom"/></td>
    </tr>
    <br /><br />
    </table> 
     
    <input type='submit' value='Soumettre la requete'/><br><br>
    </div> 	
    </form>  
    </body>
    </html>
    La servlet qui enregistre et redirige sur une autre servlet plus bas (mais j'ai une page blanche)
    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
    76
    77
    78
    79
    80
    81
    package ProjetIteration;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.UnavailableException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
     public class RegisterServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
       String protocol,nom,prenom,mail;
       String userName,password;
     
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException {
    		doPost(request,response );
    	}
    	 public void init()
    	 {
    		 try {
    			 Class.forName("com.mysql.jdbc.Driver");
    			 System.out.print("Driver JDBC chargé");
    		 }
    		 catch (ClassNotFoundException e) {
    			 System.out.print(e.toString());
    		 }
    	 }
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException {
     
    			// obtenir la session, la crée si elle n'existe pas
    			HttpSession session=request.getSession();
     
    		//if (session!=null)
    		//{
    			//String mailSe=(String)session.getAttribute("mail");
    			String logicielSe=(String)session.getAttribute("logiciel");
    			String systemeSe=(String)session.getAttribute("systeme");
    			String problemeSe=(String)session.getAttribute("probleme");
     
    			nom=request.getParameter("nom");
    			prenom=request.getParameter("prenom");
    			mail=request.getParameter("mail");
    			String pseudo=request.getParameter("pseudo");
    			String passe=request.getParameter("motPasse");
    			String confirmPasse=request.getParameter("confirmPasse");
    			if(passe != confirmPasse && passe == null)
    				getServletContext().getRequestDispatcher("/ProjetIteration1/register.html").forward(request,response);
     
    			try{
    				Connection con=DriverManager.getConnection("jdbc:mysql://localhost/frontal","root","xav");
    				System.out.println("  :::  connection obtenue avec succès  :::  ");
    				Statement stat=con.createStatement();
    				String sql=
    					"INSERT INTO user (prenom, nom, userName, password, mail)" +
    							" VALUES ('"+prenom+"','"+nom+"','"+pseudo+"','"+passe+"','"+mail+"');";
    				//System.out.println(sql);
    				int i=stat.executeUpdate(sql);
    				if (i==1){
    					System.out.println("succes insertion, redirection   :::::  ");
    					RequestDispatcher rd=request.getRequestDispatcher("/ReponseServlet");
    					rd.forward(request,response);
    				}
    				stat.close();
    				con.close();
    			}
    			catch(SQLException e){
    				String message="Error."+e.toString();
    			}
    		//}
    	}
    }
    3 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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    package ProjetIteration;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
     public class ReponseServlet 
     extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet 
     {
    	String message;
        String systeme,logiciel,probleme,nom,prenom;
    	String user="root";
    	String pass="xav";
    	String protocol="jdbc:mysql://localhost/frontal";
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException {
    		doPost(request, response);
    	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException 
    		{
    		// On récupère la session existe
    		HttpSession session=request.getSession();
    		if (session==null)
    			 System.out.print("Aucune session trouvé");
    		else 
    		{
    			String mailSe=(String)session.getAttribute("mail");
    			String logicielSe=(String)session.getAttribute("logiciel");
    			String systemeSe=(String)session.getAttribute("systeme");
    			String problemeSe=(String)session.getAttribute("probleme");
     
    			System.out.println("mail : "+mailSe+" "+"log : "+logicielSe+" syst : "+systemeSe+" pb : "+problemeSe);
     
    			try{
    				Connection con=DriverManager.getConnection(protocol,user,pass);
    				System.out.println("Connection obtenue   ::::    ");
    				Statement stat=con.createStatement();
    				String sql="SELECT * from user WHERE mail='" + mailSe + "';";				
    				System.out.println("Connection obtenue   ::::    ");
    				System.out.println(sql);
     
    				ResultSet result=stat.executeQuery(sql);
    				if (result.next())
    					{
    					PrintWriter out=response.getWriter();
    					response.setContentType("text/html");
    					out.println("succes insertion");
    					out.println("<html><head><title>Support technique : Confirmation de la demande</title>");
    					out.println("<body>");
    					out.println("<h1>SUPPORT TECHNIQUE : CONFIRMATION DE LA DEMANDE</h1>"+"<br>");
    					out.println("Le mail saisi est : "+result.getString("mail")+"<br>");
    					out.println("Le nom saisi est : "+result.getString(2)+"<br>");
    					out.println("Le nom saisi est : "+result.getString(3)+"<br>");
    					out.println("Le nom saisi est : "+result.getString(4)+"<br>");
    					out.println("Le nom saisi est : "+result.getString(5)+"<br>");
    					out.println("Le nom saisi est : "+nom+"<br>");
    					out.println("Le prenom saisi est : "+prenom+"<br>");
    					out.println("Email : "+mailSe+"<br>");
    					out.println("Logiciel : "+logicielSe+"<br>");
    					out.println("Systeme d'exploitation : "+systemeSe+"<br>");
    					out.println("Probleme : "+problemeSe+"<br>"+"</br>");
    					out.println("Merci pour ces informations"+"</br>");
    					out.println("Votre probleme sera resolu dans les 24 heures");
    					out.println("</Body></html>");
    					out.close();
     
    					}
    				else {
    					PrintWriter out=response.getWriter();
    					response.setContentType("text/html");
    					out.println("succes insertion");
    					out.println("<html><head><title>kjhgfd</title>");
    					out.println("<body>");
    					out.println("<h1>Login incorrect connection impossible</h1>"+"<br>");
    					out.println("</Body></html>");
    					out.close();
    				}
    				stat.close();
    				con.close();
    				}
    				catch(SQLException e)
    				{
    				message="Error."+e.toString();
    				e.printStackTrace();
    				}
    			}							  	    
    		}
    }

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    A mon avis ton problème ne se situe pas dans ta redirection, mais dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(passe != confirmPasse && passe == null)
        getServletContext().getRequestDispatcher("/ProjetIteration1/register.html").forward(request,response);
     
        try{
            ...
            RequestDispatcher rd=request.getRequestDispatcher("/ReponseServlet");
            rd.forward(request,response);
            ...
            }
        catch(SQLException e){
            String message="Error."+e.toString();
        }
    Lorsque tu fais ton test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if(passe != confirmPasse && passe == null)
        getServletContext().getRequestDispatcher("/ProjetIteration1/register.html").forward(request,response);
    Ce l'a n'arrête pas l'éxécution de la servlet, donc cela continue, entre dans ton try, éxécute la requete, et fait un second forward, d'ou ton IllegalStateException.

    Soit tu mets le code de la requete dans un else, soit tu mets un return dans ton if.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(passe != confirmPasse && passe == null) {
        getServletContext().getRequestDispatcher("/ProjetIteration1/register.html").forward(request,response);
        return
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if(passe != confirmPasse && passe == null)
        getServletContext().getRequestDispatcher("/ProjetIteration1/register.html").forward(request,response);
    else {
        try{
            ...
            RequestDispatcher rd=request.getRequestDispatcher("/ReponseServlet");
            rd.forward(request,response);
            ...
        }
        catch(SQLException e){
            String message="Error."+e.toString();
        }
    }
    Je ne sais pas si c'est ce cas d'erreur qui cause problème, mais en tout cas tu aurais aussi eu le problème si tu n'avais pas mis de mot de passe.

  13. #13
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    ça veux dire que la re-direction n'arrete pas le programme mais continue de lire la servlet jusqu'au bout ?
    Parce qu'un return ..; dans une fonction force la sortie du programme, j'avais fait le parallèlle.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Tout à fait, la redirection n'arrêtes rien, ce n'est pas un return. Sinon comment fermerais-tu ta connection dans ton code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (i==1){
        System.out.println("succes insertion, redirection   :::::  ");
        RequestDispatcher rd=request.getRequestDispatcher("/ReponseServlet");
        rd.forward(request,response);
    }
    stat.close();
    con.close();
    Car dans ton code, tu fermes les connections après les redirections.

    Car si cela se fonctionnait comme tu le pensais, tu aurais énormément de connections ouvertes sur ta base. Fais attention à cela.

  15. #15
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(passe != confirmPasse && passe == null) {
        getServletContext().getRequestDispatcher("/ProjetIteration1/register.html").forward(request,response);
        return
    }
    Pour conclure le return permet dans ce contexte d'arrêter le programme, (sa peux sembler simpliste, mais sa rassure de connaître les tenants...).

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

Discussions similaires

  1. RequestDispatcher forward sur même servlet path
    Par linotte91 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/01/2013, 00h03
  2. RequestDispatcher sur un servlet
    Par artotal dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/12/2007, 22h10
  3. erreur http 500 sur un servlet
    Par 2tsiris dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 04/05/2006, 10h08
  4. [Info][JSP] achat livre sur les servlets et jsp
    Par mealtone dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 24/10/2005, 12h14
  5. [Servlet sur Tomcat]Servlet indisponible
    Par cwamgis dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 30/09/2004, 17h17

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