Servlet java

Servlet java - Java - Programmation

Marsh Posté le 04-11-2005 à 23:48:36    

Salut à tous !
 
J'ai un soucis lorsques j'essaie de développer un servlet Java. Ce servlet consiste juste à faire une vérification de pseudo et mot de passe dans une base de donnée MySQL.
 
Mon problème est que je n'arrive pas à trouver le moyen d'afficher "désolé votre pseudo n'existe pas" quand le pseudo n'est pas dans la base de donnée. Ce servlet fonctionne par contre parfaitement quand le pseudo est existant dans la base de donnée. En fait, je crois que lorsque la requète n'affiche aucun résultat, je n'arrive pas à réutiliser ce résultat pour activer une conditionnelle.  
 
Le problème vient surement d'une erreur dans mon code alors je vous le colle ici :  
 

Code :
  1. import javax.servlet.*;
  2. import javax.servlet.http.*;
  3. import java.io.*;
  4. import java.util.*;
  5. import java.sql.*;
  6. public class ExerciceA extends HttpServlet {
  7. private static final String CONTENT_TYPE = "text/html";
  8. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  9. {
  10. response.setContentType("text/html" );
  11. PrintWriter out = response.getWriter();
  12. String sPseudo = request.getParameter("txtPseudo" );
  13. String sPass = request.getParameter("txtPass" );
  14. Connection conn = null;
  15. Statement stmt = null;
  16. ResultSet rs = null;
  17. try
  18. {
  19. // Chargement du pilote
  20. Class.forName("org.gjt.mm.mysql.Driver" );
  21. // connection à la base de données
  22. conn = DriverManager.getConnection("jdbc:mysql://localhost/test" );
  23. // Préparation de la commande
  24. stmt = conn.createStatement();
  25. // Exécution de la commande SQL
  26. rs = stmt.executeQuery("SELECT * FROM utilisateurs WHERE pseudo='" + sPseudo.trim() + "'" );
  27. out.println(rs.getString("pass" ));
  28. }
  29. catch (Exception e)
  30. {
  31. }
  32. // écriture de l'entête du document HTML
  33. out.println("<html>\n" );
  34. out.println("<head>\n" );
  35. out.println("<title>Zone Sécurisée</title>\n" );
  36. out.println("</head>\n" );
  37. try
  38. { while(rs.next()) {
  39.  if(sPass.equals(rs.getString("pass" ))) {
  40.  out.println("<body><h2>Bienvenue au système de gestion des contacts</h2>\n" );
  41.  out.println("<h4>Voici la liste des opérations :</h4><br>" );
  42.  out.println("Consulter la liste des contacts<br>" );
  43.  out.println("Ajouter un contact<br>" );
  44.  out.println("Rechercher un contact<br>" );
  45. }
  46. else {
  47.  out.println("<body><h2>Désolé !</h2>\n" );
  48.  out.println("<h4>Le nom d'utilisateur et/ou le mot de passe sont invalides. Cliquez sur le lien ci dessous pour revenir au sommaire.</h4>\n" );
  49.  out.println("<a href=\"../ExerciceA.htm\">Retour à la page précédente.</a>\n" );
  50. }
  51. }
  52. if (rs.next()) {
  53. out.println("<body><h2>Désolé !</h2>\n" );
  54. out.println("<h4>Le nom d'utilisateur et/ou le mot de passe sont invalides. Cliquez sur le lien ci dessous pour revenir au sommaire.</h4>\n" );
  55. out.println("<a href=\"../ExerciceA.htm\">Retour à la page précédente.</a>\n" );
  56. }
  57. }
  58. catch (Exception e)
  59. {
  60. e.printStackTrace(out);
  61. }
  62. // écriture de la fin du document HTML
  63. out.println("</body>\n" );
  64. out.println("</html>\n" );
  65. try
  66. {
  67. rs.close();
  68. stmt.close();
  69. conn.close();
  70. }
  71. catch (Exception e)
  72. {
  73. out.println("<h1 align='center'>Une erreur est survenue !...</h1>" );
  74. }
  75. }
  76. public void destroy()
  77. {
  78. }
  79. }


 
Je sais que ça aurait été plus simple en PHP, mais c'est un exercice que j'ai à faire ;)  
 
Merci d'avance pour votre aide ! :wahoo:

Reply

Marsh Posté le 04-11-2005 à 23:48:36   

Reply

Marsh Posté le 05-11-2005 à 05:36:12    

Plusieurs erreurs :

Code :
  1. # rs = stmt.executeQuery("SELECT * FROM utilisateurs WHERE pseudo='" + sPseudo.trim() + "'" );
  2. # out.println(rs.getString("pass" ));
  3. # }
  4. # catch (Exception e)
  5. # {
  6. # }

là y a levée d'exception à chaque fois mais vu ton traitement tu risques pas de la voir...tu fais un getString sur ton ResultSet avant l'iteration.
 
Ensuite il ne doit y avoir qu'un et qu'un seul pseudo correspondant dans ta base, donc le rs ne doit contenir qu'un résultat. Donc pas de while(rs.next()) mais plutôt directement un if(rs.next()){on teste le mot de passe}...else {erreur, ce pseudo n'existe pas}.
N'oublies pas qu'à chaque rs.next() tu passes à la "ligne" suivante de ton resultset donc évidemment après un while(rs.next()) c'est fini...


Message édité par glod 2 le 05-11-2005 à 05:36:50
Reply

Marsh Posté le 05-11-2005 à 14:51:17    

Yep Merci ! Je savais bien que c'était un détail qui me faisait tout foiré mais vu que je débute, j'ai du mal à bien repérer tous ces détails  :sol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed