Multilogin problème

Fermé
nosjoker Messages postés 3 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 9 février 2018 - Modifié le 10 févr. 2018 à 00:30
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 10 févr. 2018 à 00:43
bonsoir,
je suis débutant avec java EE j'ai rencontrait un problème lors de la création de la servlet login ,
mon teste consiste a tester sur 3 champs de ma base de données user password et niveau( admin, utilisateur_simple).
le problème et que le programme passe toujours au 2éme condition ou la 3éme si l'utilisateur ou la mot de passe est incorrecte .
désoler pour la façon d’écriture et merci d'avance cordialement

://
public class TraiteLogin extends HttpServlet {
 private static final long serialVersionUID = 1L;
 private RequestDispatcher disp=null;
 private ArrayList<Login> liste=null;
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
  HttpSession session =request.getSession();
  
  String lien=request.getParameter("lien");
  
  if(lien.equals("logoff"))
  {
   liste.clear();
   session.setAttribute("liste", liste);
   response.sendRedirect("index.jsp");
   
  }
  
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  disp=null;
  Donnees_Login bd =new Donnees_Login();
  HttpSession session =request.getSession();
 
  String formul=request.getParameter("bouton");
  if(formul.equals("add"))
  {
   String user=request.getParameter("user");
   String passe=request.getParameter("passe");
   String niveau=request.getParameter("niveau");
   
   Login l= new Login();
   l.setUtilisateur(user);
   l.setMpasse(passe);
   l.setNiveau(niveau);

   liste=bd.RechercheUser(user, passe);

   if(liste.size()!=0 && niveau == ("admin") )
   {
   session.setAttribute("listes",liste);
   disp=request.getRequestDispatcher("accueil_admin.jsp");
   disp.forward(request, response);
   }
   else if(liste.size()!=0 && niveau != ("utilisateur_simple")){
    session.setAttribute("listes",liste);
    disp=request.getRequestDispatcher("accueil.jsp");
    disp.forward(request, response);
    } 
   
   
  else
   {
    
    response.sendRedirect("log_error.jsp");
    
   }
  }
}
  
  
  
 }

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
10 févr. 2018 à 00:43
Bonjour,

Ton problème n'est pas lié à Java EE, c'est une erreur de Java de base : on ne compare jamais deux objets avec l'opérateur
==
qui est réservé aux comparaisons de référence.
Donc
niveau == ("admin")
sera toujours faux et
niveau != ("utilisateur_simple")
sera toujours vrai.

Pour vérifier l'égalité de valeurs entre deux objets il faut utiliser la méthode equals.

Quant au reste de ton code, l'architecture Java EE se décompose en couches, donc en respectant ce principe tu devrais avoir (au moins) 3 classes pour séparer : la Servlet de la couche présentation, le métier qui gérerait tes tests d'égalité, et les requêtes d'accès à la base de données.
Architecture J2EE
0