0

I am trying to get 3 parameters on my servlet,i split my code into 3 classes for code readability but on the query_a1 method of my DatabaseQuery class i always get false and i cant understand why! Here it is my servlets classes :

DatabaseQuery public class DatabaseQuery {

    //Query i aktivitetit 1
public static boolean query_a1(String user,String pass) {
    if (user== "andi" & pass=="andi")
        return true;
    else
        return  false;

}
//ky do te jete query i aktivitetit 2
public static void  query_a2() {

}
}

Servlet

  import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @WebServlet("/web2")
    public class Servlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        @Override
        public void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {

            //merr aktivitetitn nga i cili vijne parametrat
            int activiteti=Integer.parseInt(req.getParameter("activitetiNR").toString());

            //krijo nje switch per cdo parameter 
          switch (activiteti){
          case 1:{
              //marrim te dhenat qe i perkasin aktivitetit
              String user = req.getParameter("user").toString();
              System.out.println(user);
              String pass = req.getParameter("pass").toString();
            System.out.println(pass);

              //i kalojme ne metoden e klases Aktiviteti1 dhe marrim pergjigje dhe me pas japim response
            response(resp,Aktiviteti1.kontrolloDhenat(user,pass));
          }
          break;
          }
        }
        private void response(HttpServletResponse resp, String msg)
                throws IOException {
            PrintWriter out = resp.getWriter();
            out.println(msg);
        }
    }

Aktiviteti

public class Aktiviteti1 {
    //ketu vendosen kontrollet llogjike te aktivitetit 
public static String kontrolloDhenat(String user,String pass){
    //ndersa ketu therrasim queryn nga klasa database
if (DatabaseQuery.query_a1(user,pass)==true){

    return "Succes!";           
    }else{
        System.out.println(DatabaseQuery.query_a1(user,pass));
    return "Failure!";

    }
}
}

Do you have any idea?

John Bollinger
  • 160,171
  • 8
  • 81
  • 157
Andi Domi
  • 731
  • 2
  • 19
  • 48

3 Answers3

1
  • You are comparing String objects via == but as they are objects, they have to be compared as follows string1.equals(string2)
  • You are using the bitwise AND operator (&) but the logical one (&&) has to be used here.

Here the corrected if statement:

if (user.equals("andi") && pass.equals("andi")) then {
    //foo
}
Community
  • 1
  • 1
ifloop
  • 8,079
  • 2
  • 26
  • 35
1

You need to revisit String comparison. The String comparison is done using equals() method not == operator. So below line is wrong. Further & is bitwise AND operator and for Logical AND you need to use && operator.

if (user== "andi" & pass=="andi")

you should use

if (user.equals("andi") && pass.equals("andi"))
sakura
  • 2,249
  • 2
  • 26
  • 39
1

not use to compare string using == use equals .

Your code : if (user== "andi" & pass=="andi") write like :

    if(user.equals("andi")&&pass.equals("andi"))

if you want Ingore case(like ANDI or Andi) you should use like :

   if(user.equalsIgnoreCase("andi")&&pass.equalsIgnoreCase("andi"))
Benjamin
  • 2,257
  • 1
  • 15
  • 24