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 :

problème d'execution de 2 boucles while imbriquées


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 18
    Points
    18
    Par défaut problème d'execution de 2 boucles while imbriquées
    voila, j'essaie de réaliser le module d'authentification de mon projet J2EE
    avec jsp et servlet. Un problème se présente dans cette partie de mon code qui dois tester ( par un accès à ma bdd oracle) si l'utilisateur c'est bien identifié et s'il s'agit d'un simple utilisateur ou d'un administrateur.
    Mes deux tables sont: user_table(login,password)
    role_table(login,role)
    la 1ère boucle fonctionne à merveille, mais la 2ème qui differencie un utilisateur d'un administrateur ne fonctionne pas.
    voilà mon code:

    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
     
    rs = st.executeQuery("select * from USER_TABLE");
    rs1 = st1.executeQuery("select * from ROLE_TABLE");
    while (rs.next()) {
    	if ((rs.getString(1)).equals(login_id)&& (rs.getString(2)).equals(password)) {
    					while (rs1.next()) {
    						System.out.println(rs1.getString(2));
    						if ((rs.getString(1)).equals(rs1.getString(1))
    								&& (rs1.getString(2)).equals(admin))
    							Destination = "/helloAdmin.jsp";
    						else
    							Destination = "/AdminChoiceForm.jsp";
    						break;
    					}
                      }
     
    				else
     
    				{
    					Destination = "/form.jsp";
    					throw new Exception(
    							"Erreur d'authentification n'existe pas");
    				}
     
    			}
     
    			RequestDispatcher dispatcher;
    			System.out.println("Destination :"+Destination);
    			dispatcher = getServletContext().getRequestDispatcher(Destination);
    			dispatcher.forward(request, response);
    			con.close();
    		}
     
    		catch (ClassNotFoundException cnfe) {
     
    			System.err.println(cnfe);
     
    		}
     
    		catch (SQLException sqle) {
     
    			System.out.println(sqle.getMessage());
     
    		}
     
    		catch (Exception e) {
     
    			System.err.println(e);
     
    		}
     
    	}
     
     
    }
    merci bcp

  2. #2
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    Je pense que ta requete est mal construite.
    Il faut que tu fasses une jointure entre ta table user_table et role_table.
    Comme ça tu n'as pas de boucles à faire.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT rt.login, rt.role from role_table rt, user_table ut
    WHERE rt.login = ut.login
    AND rt.login = '<uneVariable>'

    Comme cela, tu sais directement :
    - si le user n'existe pas ou qu'il n'a aucun droit => pas de résultat
    - le role du user s'il existe et qu'il en a un.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Merci pour le conseil, j'ai reformulé ma requette comme tu me l'as recommandé, et ça a marché. Maintenant le problème c'est que dans le cas ou le login et le pwd sont erronés, je ne suis pas redirectionné à la page de mon formulaire (form.jsp). Voici mon code après modification:

    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
     
    protected void doPost(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
     
    		try {
    			response.setContentType("text/html");
    			PrintWriter out = response.getWriter();
    			String login_id = request.getParameter("login_name");
    			String password = request.getParameter("password");
    			java.sql.Connection con;
    			java.sql.Statement st2=null;
    			java.sql.ResultSet rs2=null;
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			con = java.sql.DriverManager
    					.getConnection(
    							"jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.23.1.73)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = mz))))",
    							"mediation_dsi", "mediation_dsi");
    			st2 = con.createStatement();
    			String Destination = "";
    			String admin="administrateur";
    			String user="utilisateur";
    			rs2 = st2.executeQuery("select rt.login,rt.role from role_table rt ,user_table ut where " +
    					"rt.login=ut.login and rt.login='"+login_id+"'" );
    	         if(rs2==null){
    				 Destination = "/form.jsp";
    			System.out.println("coordonnees incorrect veuillez reessayer");}
    			rs2.next();
    			System.out.println(rs2.getString(2));
     
    				if(rs2.getString(2).equals(admin)) 
    				{Destination = "/helloAdmin.jsp";}
    				else if(rs2.getString(2).equals(user)) 
    					Destination = "/AdminChoiceForm.jsp";
    				else
    					Destination = "/form.jsp";
    			RequestDispatcher dispatcher;
    			System.out.println("Destination :"+Destination);
    			dispatcher = getServletContext().getRequestDispatcher(Destination);
    			dispatcher.forward(request, response);
    			 rs2.close();
     
    				st2.close();
     
     
    			con.close();
    		}
     
    		catch (ClassNotFoundException cnfe) {
     
    			System.err.println(cnfe);
     
    		}
     
    		catch (SQLException sqle) {
     
    			System.out.println(sqle.getMessage());
     
    			RequestDispatcher dispatcher;
    			dispatcher = getServletContext().getRequestDispatcher("/form.jsp");
    		}
     
    		catch (Exception e) {
     
    			System.err.println(e);
     
    		}
    		}}

  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
    rs2 ne vaudra pas null si aucune ligne n'est retournée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(!rs2.next()){
        Destination = "/form.jsp";
        System.out.println("coordonnees incorrect veuillez reessayer");  
    }
    else
    {
        System.out.println(rs2.getString(2));
        // ...
    }

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    merci infiniment!!tu m'a vraiment sauvé .enfin g réussit à réaliser ma page d'authentification

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

Discussions similaires

  1. Problème boucle while imbriquée dans autre boucle while
    Par nattydreadnatty dans le forum Langage
    Réponses: 3
    Dernier message: 25/08/2010, 14h58
  2. Boucle while imbriqué, problème de renvoi de valeur
    Par biche1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/09/2008, 17h09
  3. Problème de SCANF dans une boucle WHILE
    Par FidoDido® dans le forum C
    Réponses: 4
    Dernier message: 30/12/2005, 17h42
  4. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  5. [Tableaux] Boucle while imbriquer
    Par Le-Cortex dans le forum Langage
    Réponses: 11
    Dernier message: 09/09/2005, 14h22

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