Multilogin problème

nosjoker 3 Messages postés lundi 9 mars 2015Date d'inscription 9 février 2018 Dernière intervention - 9 févr. 2018 à 19:50 - Dernière réponse : KX 15218 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 14 février 2018 Dernière intervention
- 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");
    
   }
  }
}
  
  
  
 }
Afficher la suite 

1 réponse

Répondre au sujet
KX 15218 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 14 février 2018 Dernière intervention - 10 févr. 2018 à 00:43
0
Utile
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
Commenter la réponse de KX