2014-04-09 6 views
0

서블릿에서 3 개의 매개 변수를 가져 오려고하는데 코드 가독성을 위해 코드를 3 개의 클래스로 분할했지만 DatabaseQuery 클래스의 query_a1 메서드에서 항상 false을 얻었습니다. 이유를 이해할 수 없습니다! 당신이 어떤 생각을 가지고 있습니까논리가 서블릿에서 항상 false 인 경우

DatabaseQuery 공용 클래스 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() { 

} 
} 

서블릿

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!"; 

    } 
} 
} 

: 여기 내 서블릿 클래스입니까? 넌 == 통해 String 오브젝트를 비교하고 있지만,이 목적을 그대로 string1.equals(string2)

  • 당신은 비트 AND 연산자 (&) 그러나 논리 온 (&&를 사용하고 다음과 같이, 그들이 비교 될 필요

  • 답변

    1
    • )를 사용해야합니다. 여기

    는 if 문 수정 :

    if (user.equals("andi") && pass.equals("andi")) then { 
        //foo 
    } 
    
    1

    문자열 비교를 다시 방문해야합니다. 문자열 비교는 equals() 메서드가 아닌 == 연산자를 사용하여 수행됩니다. 그래서 아래 라인이 잘못되었습니다. 또한 &은 비트 AND 연산자이고 논리 AND는 연산자 &&을 사용해야합니다.

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

    당신은 == 사용 equals를 사용하여 문자열을 비교하는 데 사용하지

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

    무슨 실수를 저질렀습니까! 고마워요. 작동했습니다. :) –

    +0

    당신의 미래를위한 최선의 노력 !! – sakura

    1

    를 사용해야합니다.

    귀하의 코드 : (사용자 == "앤디"& 패스 == "앤디") 쓰기 같은 경우 :

    if(user.equalsIgnoreCase("andi")&&pass.equalsIgnoreCase("andi")) 
    
    :

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

    당신이 Ingore 케이스 (like ANDI or Andi)를 원하는 경우와 같이 사용한다